diff --git a/Gruntfile.js b/Gruntfile.js index 6667be562535dc3437ca277d4270d2b0acd6d474..51178b18530a2053ea0973238004e8c688ea355c 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -11,6 +11,8 @@ module.exports = function (grunt) { // Require // -------------------------------------- + require('./dev/tools/grunt/tasks/mage-minify')(grunt); + // Time how long tasks take. Can help when optimizing build times require('time-grunt')(grunt); @@ -33,7 +35,10 @@ module.exports = function (grunt) { blank: 'app/design/frontend/Magento/blank', luma: 'app/design/frontend/luma' }, - doc: 'lib/web/css/docs' + doc: 'lib/web/css/docs', + uglify: { + legacy: 'lib/web/legacy-build.min.js' + } }, doc: { styleName: 'docs' @@ -110,7 +115,7 @@ module.exports = function (grunt) { }, documentation: { files: { - '<%= config.path.doc %>/<%= config.doc.styleName %>.css': "<%= config.path.doc %>/source/<%= config.doc.styleName %>.less" + '<%= config.path.doc %>/<%= config.doc.styleName %>.css': '<%= config.path.doc %>/source/<%= config.doc.styleName %>.less' } } }, @@ -131,10 +136,40 @@ module.exports = function (grunt) { '<%= config.path.doc %>': '<%= config.path.doc %>/source' // Todo UI: Check out JS for Styledocco } } - } + }, + 'mage-minify': { + legacy: { + options: { + type: 'yui-js', + tempPath: 'var/cache/', + options: ['--nomunge=true'] + }, + files: { + '<%= config.path.uglify.legacy %>': [ + 'lib/web/prototype/prototype.js', + 'lib/web/prototype/window.js', + 'lib/web/scriptaculous/builder.js', + 'lib/web/scriptaculous/effects.js', + 'lib/web/lib/ccard.js', + 'lib/web/prototype/validation.js', + 'lib/web/varien/js.js', + 'lib/web/mage/adminhtml/varienLoader.js', + 'lib/web/mage/adminhtml/tools.js' + ] + } + } + } }); + /** + * Creates build of a legacy files. + * Mostly prototype dependant libraries. + */ + grunt.registerTask('legacy-build', [ + 'mage-minify:legacy' + ]); + // Default task // -------------------------------------- grunt.registerTask('default', []); // ToDo UI: define default tasks diff --git a/app/code/Magento/AdminNotification/view/adminhtml/requirejs-config.js b/app/code/Magento/AdminNotification/view/adminhtml/requirejs-config.js index 4b18a9e043d354131b257a75249f7b8ff602db25..59cd1bbe68441210fe39726aa40fa6973edc7efd 100644 --- a/app/code/Magento/AdminNotification/view/adminhtml/requirejs-config.js +++ b/app/code/Magento/AdminNotification/view/adminhtml/requirejs-config.js @@ -6,10 +6,8 @@ var config = { map: { '*': { - systemMessageDialog: 'Magento_AdminNotification/system/notification' + systemMessageDialog: 'Magento_AdminNotification/system/notification', + toolbarEntry: 'Magento_AdminNotification/toolbar_entry' } - }, - deps: [ - "Magento_AdminNotification/toolbar_entry" - ] + } }; \ No newline at end of file diff --git a/app/code/Magento/AdminNotification/view/adminhtml/templates/notification/window.phtml b/app/code/Magento/AdminNotification/view/adminhtml/templates/notification/window.phtml index dc2481ae7b569c6b8a3de42901fc2128eea81f9f..ffd2ff0a08ffc1aa3e315d38e35cde3469a76e24 100644 --- a/app/code/Magento/AdminNotification/view/adminhtml/templates/notification/window.phtml +++ b/app/code/Magento/AdminNotification/view/adminhtml/templates/notification/window.phtml @@ -12,7 +12,7 @@ * @see \Magento\AdminNotification\Block\Window */ ?> -<div class="fade critical-notification"> +<div data-mage-init='{"modalPopup": {}}' class="fade critical-notification"> <div class="popup popup-<?php echo preg_replace('#[^a-z0-9]+#', '-', strtolower($this->getSeverityText())) ?>"> <div class="popup-inner"> <header class="popup-header"> diff --git a/app/code/Magento/AdminNotification/view/adminhtml/templates/toolbar_entry.phtml b/app/code/Magento/AdminNotification/view/adminhtml/templates/toolbar_entry.phtml index 9c0fdf546b19a6bfc08058764ec2e118f71635b8..8127ab727db2482f88a9a020bf16a38048ecace8 100644 --- a/app/code/Magento/AdminNotification/view/adminhtml/templates/toolbar_entry.phtml +++ b/app/code/Magento/AdminNotification/view/adminhtml/templates/toolbar_entry.phtml @@ -9,7 +9,7 @@ ?> <?php /** @var $this \Magento\AdminNotification\Block\ToolbarEntry */ ?> <?php $notificationCount = $this->getUnreadNotificationCount(); ?> -<div class="notifications-summary" data-notification-count="<?php echo $this->escapeHtml($notificationCount); ?>"> +<div data-mage-init='{"toolbarEntry": {}}' class="notifications-summary" data-notification-count="<?php echo $this->escapeHtml($notificationCount); ?>"> <?php if ($notificationCount > 0) : ?> <a href="<?php echo $this->getUrl('adminhtml/notification/index'); ?>" class="action notifications-action" data-mage-init='{"dropdown":{}}' title="<?php echo __('Notifications'); ?>" data-toggle="dropdown"> <span class="text"><?php echo __('Notifications'); ?></span> diff --git a/app/code/Magento/AdminNotification/view/adminhtml/web/toolbar_entry.js b/app/code/Magento/AdminNotification/view/adminhtml/web/toolbar_entry.js index 64b6971a8ecea413d1aa8c68465f01f02beab8f2..e976bd9a624759e2deae2ec6bbe18d17e6cfed9d 100644 --- a/app/code/Magento/AdminNotification/view/adminhtml/web/toolbar_entry.js +++ b/app/code/Magento/AdminNotification/view/adminhtml/web/toolbar_entry.js @@ -4,106 +4,105 @@ */ define([ "jquery", - "jquery/ui" + "jquery/ui", + "domReady!" ], function($){ 'use strict'; - $(document).ready(function() { - // Mark notification as read via AJAX call - var markNotificationAsRead = function(notificationId) { - var requestUrl = $('.notifications-summary .dropdown-menu').attr('data-mark-as-read-url'); - $.ajax({ - url: requestUrl, - type: 'POST', - dataType: 'json', - data: { - id: notificationId - }, - showLoader: false - }); - }; - var notificationCount = $('.notifications-summary').attr('data-notification-count'); - // Remove notification from the list - var removeNotificationFromList = function(notificationEntry) { - notificationEntry.remove(); - notificationCount--; - $('.notifications-summary').attr('data-notification-count', notificationCount); - - if (notificationCount == 0) { - // Change appearance of the bubble and its behavior when the last notification is removed - $('.notifications-summary .dropdown-menu').remove(); - var notificationIcon = $('.notifications-summary .notifications-icon'); - notificationIcon.removeAttr('data-toggle'); - notificationIcon.off('click.dropdown'); - $('.notifications-action .counter').text(''); - $('.notifications-action .counter').hide(); - } else { - $('.notifications-action .counter').text(notificationCount); - // Modify caption of the 'See All' link - var actionElement = $('.notifications-summary .dropdown-menu .last .action-more'); - actionElement.text(actionElement.text().replace(/\d+/, notificationCount)); - } - }; - - // Show popup with notification details - var showNotificationDetails = function(notificationEntry) { - var popupElement = notificationEntry.find('.notifications-dialog-content').clone(); - var notificationId = notificationEntry.attr('data-notification-id'); - var dialogClassSeverity = 'notifications-entry-dialog'; - if (notificationEntry.attr('data-notification-severity')) { - dialogClassSeverity = 'notifications-entry-dialog notifications-entry-dialog-critical'; - } - popupElement.dialog({ - title: popupElement.attr('data-title'), - minWidth: 500, - modal: true, - dialogClass: dialogClassSeverity, - buttons: [ - { - text: popupElement.attr('data-acknowledge-caption'), - 'class': 'action-acknowledge primary', - click: function(event) { - markNotificationAsRead(notificationId); - removeNotificationFromList(notificationEntry); - $(this).dialog('close'); - } - }, - { - text: popupElement.attr('data-cancel-caption'), - 'class': 'action-cancel', - click: function(event) { - $(this).dialog('close'); - } - } - ] - }); - popupElement.parent().attr('aria-live','assertive'); - popupElement.dialog('open'); - }; - - // Show notification description when corresponding item is clicked - $('.notifications-summary .dropdown-menu .notifications-entry').on('click.showNotification', function(event) { - // hide notification dropdown - $('.notifications-summary .notifications-icon').trigger('click.dropdown'); - showNotificationDetails($(this)); - event.stopPropagation(); - }); - - // Remove corresponding notification from the list and mark it as read - $('.notifications-close').on('click.removeNotification', function(event) { - var notificationEntry = $(this).closest('.notifications-entry') - var notificationId = notificationEntry.attr('data-notification-id'); - markNotificationAsRead(notificationId); - removeNotificationFromList(notificationEntry); - event.stopPropagation(); + // Mark notification as read via AJAX call + var markNotificationAsRead = function(notificationId) { + var requestUrl = $('.notifications-summary .dropdown-menu').attr('data-mark-as-read-url'); + $.ajax({ + url: requestUrl, + type: 'POST', + dataType: 'json', + data: { + id: notificationId + }, + showLoader: false }); + }; + var notificationCount = $('.notifications-summary').attr('data-notification-count'); + // Remove notification from the list + var removeNotificationFromList = function(notificationEntry) { + notificationEntry.remove(); + notificationCount--; + $('.notifications-summary').attr('data-notification-count', notificationCount); - // Hide notifications bubble if (notificationCount == 0) { + // Change appearance of the bubble and its behavior when the last notification is removed + $('.notifications-summary .dropdown-menu').remove(); + var notificationIcon = $('.notifications-summary .notifications-icon'); + notificationIcon.removeAttr('data-toggle'); + notificationIcon.off('click.dropdown'); + $('.notifications-action .counter').text(''); $('.notifications-action .counter').hide(); } else { - $('.notifications-action .counter').show(); + $('.notifications-action .counter').text(notificationCount); + // Modify caption of the 'See All' link + var actionElement = $('.notifications-summary .dropdown-menu .last .action-more'); + actionElement.text(actionElement.text().replace(/\d+/, notificationCount)); + } + }; + + // Show popup with notification details + var showNotificationDetails = function(notificationEntry) { + var popupElement = notificationEntry.find('.notifications-dialog-content').clone(); + var notificationId = notificationEntry.attr('data-notification-id'); + var dialogClassSeverity = 'notifications-entry-dialog'; + if (notificationEntry.attr('data-notification-severity')) { + dialogClassSeverity = 'notifications-entry-dialog notifications-entry-dialog-critical'; } + popupElement.dialog({ + title: popupElement.attr('data-title'), + minWidth: 500, + modal: true, + dialogClass: dialogClassSeverity, + buttons: [ + { + text: popupElement.attr('data-acknowledge-caption'), + 'class': 'action-acknowledge primary', + click: function(event) { + markNotificationAsRead(notificationId); + removeNotificationFromList(notificationEntry); + $(this).dialog('close'); + } + }, + { + text: popupElement.attr('data-cancel-caption'), + 'class': 'action-cancel', + click: function(event) { + $(this).dialog('close'); + } + } + ] + }); + popupElement.parent().attr('aria-live','assertive'); + popupElement.dialog('open'); + }; + + // Show notification description when corresponding item is clicked + $('.notifications-summary .dropdown-menu .notifications-entry').on('click.showNotification', function(event) { + // hide notification dropdown + $('.notifications-summary .notifications-icon').trigger('click.dropdown'); + showNotificationDetails($(this)); + event.stopPropagation(); + }); + + // Remove corresponding notification from the list and mark it as read + $('.notifications-close').on('click.removeNotification', function(event) { + var notificationEntry = $(this).closest('.notifications-entry') + var notificationId = notificationEntry.attr('data-notification-id'); + markNotificationAsRead(notificationId); + removeNotificationFromList(notificationEntry); + event.stopPropagation(); }); + // Hide notifications bubble + if (notificationCount == 0) { + $('.notifications-action .counter').hide(); + } else { + $('.notifications-action .counter').show(); + } + }); \ No newline at end of file diff --git a/app/code/Magento/Backend/Block/System/Config/Form/Fieldset.php b/app/code/Magento/Backend/Block/System/Config/Form/Fieldset.php index ca621460b18faaa172958fefff60ea4817b7b9ad..45d5fc2c5a636aaee9f73b1e71174b01c5e83ca0 100644 --- a/app/code/Magento/Backend/Block/System/Config/Form/Fieldset.php +++ b/app/code/Magento/Backend/Block/System/Config/Form/Fieldset.php @@ -214,7 +214,7 @@ class Fieldset extends \Magento\Backend\Block\AbstractBlock implements protected function _getExtraJs($element) { $htmlId = $element->getHtmlId(); - $output = "Fieldset.applyCollapse('{$htmlId}');"; + $output = "require(['prototype'], function(){Fieldset.applyCollapse('{$htmlId}');});"; return $this->_jsHelper->getScript($output); } diff --git a/app/code/Magento/Backend/Block/Widget/Button/SplitButton.php b/app/code/Magento/Backend/Block/Widget/Button/SplitButton.php index 771cfa1157ee77268c902b37513d1f7318327844..431c5c80e2a5df9f26cfccb48bed92317d0fe39d 100644 --- a/app/code/Magento/Backend/Block/Widget/Button/SplitButton.php +++ b/app/code/Magento/Backend/Block/Widget/Button/SplitButton.php @@ -123,7 +123,7 @@ class SplitButton extends \Magento\Backend\Block\Widget } $attributes = ['title' => $title, 'class' => join(' ', $classes), 'disabled' => $disabled]; - $this->_getDataAttributes(['toggle' => 'dropdown'], $attributes); + $this->_getDataAttributes(['mage-init' => '{"dropdown": {}}', 'toggle' => 'dropdown'], $attributes); $html = $this->_getAttributesString($attributes); $html .= $this->getUiId('dropdown'); diff --git a/app/code/Magento/Backend/view/adminhtml/layout/default.xml b/app/code/Magento/Backend/view/adminhtml/layout/default.xml index 3b04789783d8052ed6ee0d08b8d582a7d1e64c71..977282aa8d3a8f20f281e9d48b091bf8fb8da761 100644 --- a/app/code/Magento/Backend/view/adminhtml/layout/default.xml +++ b/app/code/Magento/Backend/view/adminhtml/layout/default.xml @@ -8,24 +8,10 @@ <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-1column" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"> <head> <title>Magento Admin</title> - <link src="prototype/prototype.js"/> - <link src="prototype/window.js"/> - <link src="scriptaculous/builder.js"/> - <link src="scriptaculous/effects.js"/> - <link src="lib/ccard.js"/> - <link src="prototype/validation.js"/> - <link src="varien/js.js"/> - <link src="mage/adminhtml/varienLoader.js"/> - <link src="mage/adminhtml/tools.js"/> - <link src="lib/ds-sleight.js" ie_condition="lt IE 7" defer="defer"/> - <css src="mage/calendar.css"/> + <link src="legacy-build.min.js"/> <link src="requirejs/require.js"/> - <link src="mage/requirejs/resolver.js"/> - <link src="jquery/jquery.js"/> - <link src="mage/jquery-no-conflict.js"/> - <link src="app-config.js"/> - <link src="extjs/ext-tree.js"/> - <link src="extjs/ext-tree-checkbox.js"/> + <link src="jquery.js"/> + <css src="mage/calendar.css"/> <css src="extjs/resources/css/ext-all.css"/> <css src="extjs/resources/css/ytheme-magento.css"/> </head> @@ -87,7 +73,6 @@ <referenceContainer name="after.body.start"> <block class="Magento\RequireJs\Block\Html\Head\Config" name="requirejs-config"/> <block class="Magento\Translation\Block\Js" name="translate" template="Magento_Translation::translate.phtml"/> - <block class="Magento\Framework\View\Element\Template" name="head.scripts" template="Magento_Backend::page/js/head_scripts.phtml"/> <block class="Magento\Framework\View\Element\Js\Components" name="head.components" as="components" template="Magento_Backend::page/js/components.phtml"/> <block class="Magento\Framework\View\Element\Html\Calendar" name="head.calendar" as="calendar" template="Magento_Backend::page/js/calendar.phtml"/> </referenceContainer> diff --git a/app/code/Magento/Backend/view/adminhtml/requirejs-config.js b/app/code/Magento/Backend/view/adminhtml/requirejs-config.js deleted file mode 100644 index 6a73dd88a6d699cd1206c287b24dd735801ac986..0000000000000000000000000000000000000000 --- a/app/code/Magento/Backend/view/adminhtml/requirejs-config.js +++ /dev/null @@ -1,41 +0,0 @@ -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ - -var config = { - map: { - '*': { - editTrigger: 'mage/edit-trigger', - translateInline: 'mage/translate-inline', - form: 'mage/backend/form', - button: 'mage/backend/button', - accordion: 'mage/accordion', - actionLink: 'mage/backend/action-link', - validation: 'mage/backend/validation', - notification: 'mage/backend/notification', - loader: 'mage/loader_old', - loaderAjax: 'mage/loader_old', - floatingHeader: 'mage/backend/floating-header', - suggest: 'mage/backend/suggest', - mediabrowser: 'jquery/jstree/jquery.jstree', - tabs: 'mage/backend/tabs', - treeSuggest: 'mage/backend/tree-suggest', - calendar: 'mage/calendar', - dropdown: 'mage/dropdown_old', - collapsable: 'js/theme', - collapsible: 'mage/collapsible', - menu: 'mage/backend/menu', - jstree: 'jquery/jstree/jquery.jstree' - } - }, - deps: [ - "js/theme", - 'jquery/jquery-migrate', - "mage/dropdown_old", - "mage/backend/bootstrap" - ], - paths: { - "jquery/ui": "jquery/jquery-ui-1.9.2" - } -}; diff --git a/app/code/Magento/Backend/view/adminhtml/templates/admin/login.phtml b/app/code/Magento/Backend/view/adminhtml/templates/admin/login.phtml index aaaa8e0dae823660166d287b9daec04757307178..544624968aa7dc1ac67796598a0d538bbb09489f 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/admin/login.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/admin/login.phtml @@ -17,7 +17,7 @@ <div id="messages" data-container-for="messages"> <?php echo $this->getLayout()->getMessagesBlock()->getGroupedHtml() ?> </div> - <form method="post" action="" id="login-form" autocomplete="off"> + <form method="post" action="" id="login-form" data-mage-init='{"form": {}, "validation": {}}' autocomplete="off"> <fieldset class="fieldset"> <legend class="legend"><span><?php echo __('Welcome') ?></span></legend><br/> <input name="form_key" type="hidden" value="<?php echo $this->getFormKey() ?>" /> @@ -41,29 +41,6 @@ </div> </fieldset> </form> - <script> - function initForm($){ - $('#login-form').form().validation(); - } - - function focusInput(){ - var username = document.getElementById('username'), - autofocusSupport = typeof username.autofocus !== 'undefined'; - - if(!autofocusSupport){ - username.focus(); - } - } - - require([ - "jquery", - "mage/backend/form", - "mage/backend/validation" - ], initForm); - - focusInput(); - - </script> </div> </div> </div> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/dashboard/index.phtml b/app/code/Magento/Backend/view/adminhtml/templates/dashboard/index.phtml index d14649e5e2407249075f989cbbe4346b6573ee47..1053a3ec62e8a3de0ce2a5b8320fd4248b0a3a92 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/dashboard/index.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/dashboard/index.phtml @@ -10,7 +10,9 @@ <?php if (is_array($this->getChildBlock('diagrams')->getTabsIds())) : ?> <script> -function changeDiagramsPeriod(periodObj) { +require(['prototype'], function(){ + +window.changeDiagramsPeriod = function(periodObj) { periodParam = periodObj.value ? 'period/' + periodObj.value + '/' : ''; <?php foreach ($this->getChildBlock('diagrams')->getTabsIds() as $tabId): ?> ajaxBlockParam = 'block/tab_<?php echo $tabId ?>/'; @@ -63,10 +65,7 @@ function changeDiagramsPeriod(periodObj) { }); } -function toggleCal(id) { - $('dashboard_'+id+'_cal_div').toggle(); - $('dashboard_'+id+'_range_div').toggle(); -} +}); </script> <?php endif; ?> <div class="dashboard-container"> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/dashboard/store/switcher.phtml b/app/code/Magento/Backend/view/adminhtml/templates/dashboard/store/switcher.phtml index abb41eaff14ab269532fd6b7fd410045137c3263..0d080c4c3c3d30155b79e319be5667c6dd2046ac 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/dashboard/store/switcher.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/dashboard/store/switcher.phtml @@ -35,24 +35,29 @@ </select> </p> <script> - function switchStore(obj){ - if (obj.options[obj.selectedIndex].getAttribute('website') == 'true') { - var selectionType = 'website'; - } else if (obj.options[obj.selectedIndex].getAttribute('group') == 'true') { - var selectionType = 'group'; - } else { - var selectionType = 'store'; - } - var storeParam = obj.value ? selectionType + '/' + obj.value + '/' : ''; - if(obj.switchParams){ - storeParam+= obj.switchParams; - } - if ($('diagram_tab_orders_content').style.display != 'none') { - var select = $('order_orders_period'); - } else if ($('diagram_tab_amounts_content').style.display != 'none') { - var select = $('order_amounts_period'); + require([ + 'prototype' + ], function () { + + window.switchStore = function (obj) { + if (obj.options[obj.selectedIndex].getAttribute('website') == 'true') { + var selectionType = 'website'; + } else if (obj.options[obj.selectedIndex].getAttribute('group') == 'true') { + var selectionType = 'group'; + } else { + var selectionType = 'store'; + } + var storeParam = obj.value ? selectionType + '/' + obj.value + '/' : ''; + if (obj.switchParams) { + storeParam += obj.switchParams; + } + if ($('diagram_tab_orders_content').style.display != 'none') { + var select = $('order_orders_period'); + } else if ($('diagram_tab_amounts_content').style.display != 'none') { + var select = $('order_amounts_period'); + } + var periodParam = select.value ? 'period/' + select.value + '/' : ''; + setLocation('<?php echo $this->getSwitchUrl() ?>' + storeParam + periodParam); } - var periodParam = select.value ? 'period/'+select.value + '/' : ''; - setLocation('<?php echo $this->getSwitchUrl() ?>'+storeParam+periodParam); - } + }); </script> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/menu.phtml b/app/code/Magento/Backend/view/adminhtml/templates/menu.phtml index b7f4a6af41df98e1fa5307faa9376f98a0ffb4ee..4d8b8e40512eaf8668ec403d034227ff47351fb9 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/menu.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/menu.phtml @@ -7,11 +7,6 @@ // @codingStandardsIgnoreFile ?> -<nav class="navigation"> +<nav data-mage-init='{"globalNavigation": {}}' class="navigation"> <?php echo $this->renderNavigation($this->getMenuModel(), 0, 12); ?> </nav> - -<?php /* @TODO: find the place for the help ?> -<a id="page-help-link" href="<?php echo $this->helper('Magento\Backend\Helper\Data')->getPageHelpUrl() ?>"><?php echo __('Get help for this page') ?></a> -<script>$('page-help-link').target = 'magento_page_help'</script> -<?php */ ?> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/page/js/head_scripts.phtml b/app/code/Magento/Backend/view/adminhtml/templates/page/js/head_scripts.phtml deleted file mode 100644 index 26b1869079cc347e244f32ab13c26fa26717f5c3..0000000000000000000000000000000000000000 --- a/app/code/Magento/Backend/view/adminhtml/templates/page/js/head_scripts.phtml +++ /dev/null @@ -1,17 +0,0 @@ -<?php -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ -?> -<script> - Ext.BLANK_IMAGE_URL = BLANK_IMG; - Ext.UpdateManager.defaults.loadScripts = false; - Ext.UpdateManager.defaults.disableCaching = true; -</script> - -<script type="text/javascript" src="<?php echo $this->getViewFileUrl('tiny_mce/tiny_mce_src.js') ?>"></script> - -<script> - Fieldset.addToPrefix(<?php echo $this->helper('Magento\Backend\Helper\Data')->getCurrentUserId() ?>); -</script> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/page/js/require_js.phtml b/app/code/Magento/Backend/view/adminhtml/templates/page/js/require_js.phtml index a218b027ec4bd43024d89e0aa18aceee8a0b2b42..6123138f44bf49fa56bcdca49944f70363b3c148 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/page/js/require_js.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/page/js/require_js.phtml @@ -5,11 +5,6 @@ */ ?> <script> - var BLANK_URL = '<?php echo $this->getViewFileUrl('blank.html') ?>'; - var BLANK_IMG = '<?php echo $this->getViewFileUrl('spacer.gif') ?>'; var BASE_URL = '<?php echo $this->getUrl('*') ?>'; var FORM_KEY = '<?php echo $this->getFormKey() ?>'; - var require = { - "baseUrl": "<?php echo $this->getViewFileUrl('/') ?>" - }; </script> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/page/locale.phtml b/app/code/Magento/Backend/view/adminhtml/templates/page/locale.phtml index 3db04de8d5e373461551bfdf9818c6e99e57a21a..f57f8a066620e5ecafcced3a087b9e5b0da1963a 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/page/locale.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/page/locale.phtml @@ -13,12 +13,16 @@ <?php echo $this->getLocaleSelect(); ?> </div> <script> - function setInterfaceLanguage(event) { - var elem = Event.element(event); - if (elem) { - setLocation('<?php echo $this->getChangeLocaleUrl() ?>locale/'+elem.value+'/<?php echo $this->getUrlForReferer() ?>'); + (function () { + 'use strict'; + + var elem = document.getElementById('footer_interface_locale'); + + function onChange() { + window.location.href = '<?php echo $this->getChangeLocaleUrl() ?>locale/' + elem.value + '/<?php echo $this->getUrlForReferer() ?>'; } - } - Event.observe('footer_interface_locale', 'change', setInterfaceLanguage) + + elem.addEventListener('change', onChange); + })(); </script> </div> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/page/system/config/robots/reset.phtml b/app/code/Magento/Backend/view/adminhtml/templates/page/system/config/robots/reset.phtml index 84fe5da528eb03f466c43a1c43541442376104bc..2b321ef90b1ab242cc85719f56e06bfea176e5d4 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/page/system/config/robots/reset.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/page/system/config/robots/reset.phtml @@ -14,12 +14,15 @@ $coreHelper = $this->helper('Magento\Core\Helper\Data'); ?> <script> - function resetRobotsToDefault() - { - $('design_search_engine_robots_custom_instructions').value = <?php - echo $coreHelper->jsonEncode($this->getRobotsDefaultCustomInstructions()) - ?>; - } + require([ + 'prototype' + ], function () { + window.resetRobotsToDefault = function(){ + $('design_search_engine_robots_custom_instructions').value = <?php + echo $coreHelper->jsonEncode($this->getRobotsDefaultCustomInstructions()) + ?>; + } + }); </script> <?php echo $this->getButtonHtml() ?> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/pageactions.phtml b/app/code/Magento/Backend/view/adminhtml/templates/pageactions.phtml index 5a988cfb65c77e2ddb9137b5b7a03bc72bb48e70..086652afe89e03fa23a7c2ffad32c962f83d201c 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/pageactions.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/pageactions.phtml @@ -8,7 +8,7 @@ ?> <?php if ($this->getChildHtml()):?> - <div class="page-actions" <?php echo $this->getUiId('content-header') ?>> + <div data-mage-init='{"floatingHeader": {}}' class="page-actions" <?php echo $this->getUiId('content-header') ?>> <?php echo $this->getChildHtml(); ?> </div> <?php endif; ?> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/system/cache/edit.phtml b/app/code/Magento/Backend/view/adminhtml/templates/system/cache/edit.phtml index 603aff5f66626e4f492c59b43b6bf55f1989ca3e..51db03e8c96c58aeb33ed684fd6ea74b802a79c2 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/system/cache/edit.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/system/cache/edit.phtml @@ -16,13 +16,14 @@ * getForm() - html */ ?> -<div class="page-actions"><?php echo $this->getSaveButtonHtml() ?></div> +<div data-mage-init='{"floatingHeader": {}}' class="page-actions"><?php echo $this->getSaveButtonHtml() ?></div> <form action="<?php echo $this->getSaveUrl() ?>" method="post" id="config-edit-form" enctype="multipart/form-data"> <?php echo $this->getBlockHtml('formkey')?> <script> - function setCacheAction(id, button) { - $(id).value = button.id; + window.setCacheAction = function(id, button) { + document.getElementById(id).value = button.id; + configForm.submit(); } </script> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/system/config/edit.phtml b/app/code/Magento/Backend/view/adminhtml/templates/system/config/edit.phtml index 4b22ca0a2ace46b37dc21206fa1e2ebff0db4d9c..25358a07451459b59e22709cea42ce6e59f780f0 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/system/config/edit.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/system/config/edit.phtml @@ -25,331 +25,329 @@ <script> require([ "jquery", + "Magento_Ui/js/lib/registry/registry", "jquery/jquery.hashchange", "mage/mage", - "prototype" -], function(jQuery){ + "prototype", + "domReady!" +], function(jQuery, registry){ - jQuery(function() { - window.configForm = jQuery('#config-edit-form').mage('form').mage('validation', { - submitHandler: function(form) - { - $$('.requires').each(function(element) { - var scopeElement = adminSystemConfig.getScopeElement(element); - if (!scopeElement || !scopeElement.checked) { - Element.extend(element).disabled = false; - } - }); - jQuery(form).trigger('afterValidate'); - form.submit(); + var adminSystemConfig = { + getUp: function (element, tag) { + var $element = Element.extend(element); + if (typeof $element.upTag == 'undefined') { + $element.upTag = {}; } - }); - - window.adminSystemConfig = { - getUp: function (element, tag) { - var $element = Element.extend(element); - if (typeof $element.upTag == 'undefined') { - $element.upTag = {}; - } - if (typeof $element.upTag[tag] == 'undefined') { - $element.upTag[tag] = Element.extend($element.up(tag)); - } - return $element.upTag[tag]; - }, - getUpTd: function (element) { - return this.getUp(element, 'td'); - }, - getUpTr: function (element) { - return this.getUp(element, 'tr'); - }, - getScopeElement: function(element) { - var $element = Element.extend(element); + if (typeof $element.upTag[tag] == 'undefined') { + $element.upTag[tag] = Element.extend($element.up(tag)); + } + return $element.upTag[tag]; + }, + getUpTd: function (element) { + return this.getUp(element, 'td'); + }, + getUpTr: function (element) { + return this.getUp(element, 'tr'); + }, + getScopeElement: function(element) { + var $element = Element.extend(element); + if (typeof $element.scopeElement == 'undefined') { + var scopeElementName = element.getAttribute('name').replace(/\[value\]$/, '[inherit]'); + $element.scopeElement = this.getUpTr(element).select('input[name="' + scopeElementName + '"]')[0]; if (typeof $element.scopeElement == 'undefined') { - var scopeElementName = element.getAttribute('name').replace(/\[value\]$/, '[inherit]'); - $element.scopeElement = this.getUpTr(element).select('input[name="' + scopeElementName + '"]')[0]; - if (typeof $element.scopeElement == 'undefined') { - $element.scopeElement = false; - } + $element.scopeElement = false; } - return $element.scopeElement; - }, - getDeleteElement: function(element) { - var $element = Element.extend(element); + } + return $element.scopeElement; + }, + getDeleteElement: function(element) { + var $element = Element.extend(element); + if (typeof $element.deleteElement == 'undefined') { + $element.deleteElement = this.getUpTd(element) + .select('input[name="'+ element.getAttribute('name') + '[delete]"]')[0]; if (typeof $element.deleteElement == 'undefined') { - $element.deleteElement = this.getUpTd(element) - .select('input[name="'+ element.getAttribute('name') + '[delete]"]')[0]; - if (typeof $element.deleteElement == 'undefined') { - $element.deleteElement = false; - } + $element.deleteElement = false; } - return $element.deleteElement; - }, - mapClasses: function(element, full, callback, classPrefix) { - if (typeof classPrefix == 'undefined') { - classPrefix = 'shared' + } + return $element.deleteElement; + }, + mapClasses: function(element, full, callback, classPrefix) { + if (typeof classPrefix == 'undefined') { + classPrefix = 'shared' + } + element.classNames().each(function(className) { + if (className.indexOf(classPrefix + '-') == 0 + || (full && className.indexOf(classPrefix + '_') == 0) + ) { + callback(className); } - element.classNames().each(function(className) { - if (className.indexOf(classPrefix + '-') == 0 - || (full && className.indexOf(classPrefix + '_') == 0) - ) { - callback(className); - } - }); - }, - getRegisteredEvents: function(element) { - var events = []; - var registry = Element.retrieve(Element.extend(element), 'prototype_event_registry'); - if (!registry) { - return events; + }); + }, + getRegisteredEvents: function(element) { + var events = []; + var registry = Element.retrieve(Element.extend(element), 'prototype_event_registry'); + if (!registry) { + return events; + } + registry.each(function(pair) { + var eventName = pair.key; + if (!eventName) { + return; } - registry.each(function(pair) { - var eventName = pair.key; - if (!eventName) { - return; - } - var responders = registry.get(eventName); - if (!responders) { + var responders = registry.get(eventName); + if (!responders) { + return; + } + responders.each(function(responder) { + if (!responder.handler) { return; } - responders.each(function(responder) { - if (!responder.handler) { - return; - } - events.push({ - 'eventName': eventName, - 'handler': responder.handler - }); + events.push({ + 'eventName': eventName, + 'handler': responder.handler }); }); - return events; - }, - onchangeSharedElement: function(event) { - var element = Element.extend(Event.element(event)); - adminSystemConfig.mapClasses(element, true, function(className) { - $$('.' + className).each(function(el) { - if (element == el) { - return; - } + }); + return events; + }, + onchangeSharedElement: function(event) { + var element = Element.extend(Event.element(event)); + adminSystemConfig.mapClasses(element, true, function(className) { + $$('.' + className).each(function(el) { + if (element == el) { + return; + } - var tagName = el.tagName.toLowerCase(); - if (tagName == 'input' && el.getAttribute('type') == 'file') { + var tagName = el.tagName.toLowerCase(); + if (tagName == 'input' && el.getAttribute('type') == 'file') { + var $el = Element.extend(el); + var events = adminSystemConfig.getRegisteredEvents(el); + $el.stopObserving('change'); + var elId = $el.id; + $el.replace($el.outerHTML); + events.each(function(event) { + Event.observe(Element.extend(document.getElementById(elId)), event.eventName, event.handler); + }); + } else { + el.stopObserving('change', adminSystemConfig.onchangeSharedElement); + if (tagName == 'input' && el.getAttribute('type') == 'checkbox') { + if (el.checked != element.checked) { + Element.extend(el).click(); + } + } else if (tagName == 'select') { var $el = Element.extend(el); - var events = adminSystemConfig.getRegisteredEvents(el); - $el.stopObserving('change'); - var elId = $el.id; - $el.replace($el.outerHTML); - events.each(function(event) { - Event.observe(Element.extend(document.getElementById(elId)), event.eventName, event.handler); + Element.extend(element).select('option').each(function(option) { + var relatedOption = $el.select('option[value="' + option.value + '"]')[0]; + if (typeof relatedOption != 'undefined') { + relatedOption.selected = option.selected; + } }); } else { - el.stopObserving('change', adminSystemConfig.onchangeSharedElement); - if (tagName == 'input' && el.getAttribute('type') == 'checkbox') { - if (el.checked != element.checked) { - Element.extend(el).click(); - } - } else if (tagName == 'select') { - var $el = Element.extend(el); - Element.extend(element).select('option').each(function(option) { - var relatedOption = $el.select('option[value="' + option.value + '"]')[0]; - if (typeof relatedOption != 'undefined') { - relatedOption.selected = option.selected; - } - }); - } else { - el.value = element.getValue(); - } - if (Element.extend(el).requiresObj) { - Element.extend(el).requiresObj.indicateEnabled(); - } - fireEvent(el, 'change'); - Event.observe(el, 'change', adminSystemConfig.onchangeSharedElement); + el.value = element.getValue(); } - }); + if (Element.extend(el).requiresObj) { + Element.extend(el).requiresObj.indicateEnabled(); + } + fireEvent(el, 'change'); + Event.observe(el, 'change', adminSystemConfig.onchangeSharedElement); + } }); - }, - checkRequired: function(element, callback) { - var tagName = this.tagName.toLowerCase(); - if (tagName != 'fieldset') { - if (adminSystemConfig.getUpTr(this).visible()) { + }); + }, + checkRequired: function(element, callback) { + var tagName = this.tagName.toLowerCase(); + if (tagName != 'fieldset') { + if (adminSystemConfig.getUpTr(this).visible()) { - if (this.hasClassName('not-required')) { - return; - } + if (this.hasClassName('not-required')) { + return; + } - var typeAttr = null; - if (tagName == 'input') { - typeAttr = this.getAttribute('type').toLowerCase(); - } - var valueIsEmpty = false; - var scopeElement = adminSystemConfig.getScopeElement(this); - if (!scopeElement || !scopeElement.checked) { - if (typeAttr == 'file') { - var deleteUploadedElement = adminSystemConfig.getDeleteElement(this); - valueIsEmpty = !deleteUploadedElement && this.value == '' - || deleteUploadedElement && deleteUploadedElement.checked; - } - valueIsEmpty = valueIsEmpty - || (typeAttr == 'text' || typeAttr == 'password') && this.value == '' - || (tagName == 'select') && (this.getAttribute('multiple') != null) - && this.getValue().length == 0 - || (tagName == 'select') && (this.getAttribute('multiple') == null) - && this.getValue() == null; + var typeAttr = null; + if (tagName == 'input') { + typeAttr = this.getAttribute('type').toLowerCase(); + } + var valueIsEmpty = false; + var scopeElement = adminSystemConfig.getScopeElement(this); + if (!scopeElement || !scopeElement.checked) { + if (typeAttr == 'file') { + var deleteUploadedElement = adminSystemConfig.getDeleteElement(this); + valueIsEmpty = !deleteUploadedElement && this.value == '' + || deleteUploadedElement && deleteUploadedElement.checked; } + valueIsEmpty = valueIsEmpty + || (typeAttr == 'text' || typeAttr == 'password') && this.value == '' + || (tagName == 'select') && (this.getAttribute('multiple') != null) + && this.getValue().length == 0 + || (tagName == 'select') && (this.getAttribute('multiple') == null) + && this.getValue() == null; + } - if (valueIsEmpty) { - if (element.value != 0) { - element.value = 0; - fireEvent(element, 'change'); - } - element.disable(); + if (valueIsEmpty) { + if (element.value != 0) { + element.value = 0; + fireEvent(element, 'change'); } + element.disable(); } - } else { - this.select('input,select').each(function(inputElement) { - adminSystemConfig.checkRequired.call(Element.extend(inputElement), element, callback); - }); } - callback(this); + } else { + this.select('input,select').each(function(inputElement) { + adminSystemConfig.checkRequired.call(Element.extend(inputElement), element, callback); + }); } - }; + callback(this); + } + }; + + window.configForm = jQuery('#config-edit-form').mage('form').mage('validation', { + submitHandler: function(form) + { + $$('.requires').each(function(element) { + var scopeElement = adminSystemConfig.getScopeElement(element); + if (!scopeElement || !scopeElement.checked) { + Element.extend(element).disabled = false; + } + }); + jQuery(form).trigger('afterValidate'); + form.submit(); + } + }); + $$('.shared').each(function(element){ + Event.observe(element, 'change', adminSystemConfig.onchangeSharedElement); - $$('.shared').each(function(element){ - Event.observe(element, 'change', adminSystemConfig.onchangeSharedElement); + // scope should be shared together with the field + var scopeElement = adminSystemConfig.getScopeElement(element); + if (scopeElement) { + adminSystemConfig.mapClasses(element, false, function(className) { + scopeElement.addClassName('shared_scope-' + className.substr(7)); + }); + Event.observe(scopeElement, 'change', adminSystemConfig.onchangeSharedElement); + } - // scope should be shared together with the field - var scopeElement = adminSystemConfig.getScopeElement(element); - if (scopeElement) { + // file fields should share deletion + if (element.tagName.toLowerCase() == 'input' && element.getAttribute('type') == 'file') { + var deleteUploadedElement = adminSystemConfig.getDeleteElement(element); + if (deleteUploadedElement) { adminSystemConfig.mapClasses(element, false, function(className) { - scopeElement.addClassName('shared_scope-' + className.substr(7)); + deleteUploadedElement.addClassName('shared_delete-' + className.substr(7)); }); - Event.observe(scopeElement, 'change', adminSystemConfig.onchangeSharedElement); + Event.observe(deleteUploadedElement, 'change', adminSystemConfig.onchangeSharedElement); } + } - // file fields should share deletion - if (element.tagName.toLowerCase() == 'input' && element.getAttribute('type') == 'file') { - var deleteUploadedElement = adminSystemConfig.getDeleteElement(element); - if (deleteUploadedElement) { - adminSystemConfig.mapClasses(element, false, function(className) { - deleteUploadedElement.addClassName('shared_delete-' + className.substr(7)); - }); - Event.observe(deleteUploadedElement, 'change', adminSystemConfig.onchangeSharedElement); - } + // process situation, when control is complex + adminSystemConfig.mapClasses(element, true, function(className) { + var controls = adminSystemConfig.getUpTd(element).select('.' + className); + if (controls.length < 2) { + return; } - // process situation, when control is complex - adminSystemConfig.mapClasses(element, true, function(className) { - var controls = adminSystemConfig.getUpTd(element).select('.' + className); - if (controls.length < 2) { - return; - } - - var counter = 0; - controls.each(function(controlElement) { - controlElement.removeClassName(className); - controlElement.addClassName('shared_' + counter + className.substr(6)); - counter++; - }); + var counter = 0; + controls.each(function(controlElement) { + controlElement.removeClassName(className); + controlElement.addClassName('shared_' + counter + className.substr(6)); + counter++; }); }); + }); - $$('.requires').each(function(element) { - var eventObj = { - 'element': Element.extend(element), - 'requires': [], - 'callback': function(required) {}, - checkRequirements: function() { - var scopeElement = adminSystemConfig.getScopeElement(eventObj.element); - if (!scopeElement || !scopeElement.checked) { - eventObj.element.enable(); - eventObj.requires.each(function(required) { - adminSystemConfig.checkRequired.call(Element.extend(required), eventObj.element, eventObj.callback); - }.bind(this)); + $$('.requires').each(function(element) { + var eventObj = { + 'element': Element.extend(element), + 'requires': [], + 'callback': function(required) {}, + checkRequirements: function() { + var scopeElement = adminSystemConfig.getScopeElement(eventObj.element); + if (!scopeElement || !scopeElement.checked) { + eventObj.element.enable(); + eventObj.requires.each(function(required) { + adminSystemConfig.checkRequired.call(Element.extend(required), eventObj.element, eventObj.callback); + }.bind(this)); + } + }, + keydownCheckRequirements: function() { + window.setTimeout(eventObj.checkRequirements, 1); + }, + bindCheckingObserver: function(element) { + if (element.tagName.toLowerCase() == 'fieldset') { + Element.extend(element).select('input,select').each(function(subElement) { + eventObj.bindCheckingObserver(subElement); + }) + } else { + var scopeElement = adminSystemConfig.getScopeElement(element); + if (scopeElement) { + Event.observe(scopeElement, 'click', eventObj.checkRequirements); } - }, - keydownCheckRequirements: function() { - window.setTimeout(eventObj.checkRequirements, 1); - }, - bindCheckingObserver: function(element) { - if (element.tagName.toLowerCase() == 'fieldset') { - Element.extend(element).select('input,select').each(function(subElement) { - eventObj.bindCheckingObserver(subElement); - }) + Event.observe(element, 'change', eventObj.checkRequirements); + Event.observe(element, 'keydown', eventObj.keydownCheckRequirements); + } + }, + indicateEnabled: function() { + var labelElement = adminSystemConfig.getUpTr(eventObj.element).select('td.label label')[0]; + if (typeof labelElement != 'undefined') { + if (eventObj.element.value == 1) { + labelElement.addClassName('enabled'); } else { - var scopeElement = adminSystemConfig.getScopeElement(element); - if (scopeElement) { - Event.observe(scopeElement, 'click', eventObj.checkRequirements); - } - Event.observe(element, 'change', eventObj.checkRequirements); - Event.observe(element, 'keydown', eventObj.keydownCheckRequirements); - } - }, - indicateEnabled: function() { - var labelElement = adminSystemConfig.getUpTr(eventObj.element).select('td.label label')[0]; - if (typeof labelElement != 'undefined') { - if (eventObj.element.value == 1) { - labelElement.addClassName('enabled'); - } else { - labelElement.removeClassName('enabled'); - } + labelElement.removeClassName('enabled'); } } - }; - - // fill eventObj with required elements - adminSystemConfig.mapClasses(element, false, function(className) { - var requiredElement = Element.extend(document.getElementById(className.substr(9))); - if (requiredElement) { - eventObj.requires.push(requiredElement); - } - }, 'requires'); - Element.extend(element).requiresObj = eventObj; + } + }; - // replacing "Use Default" action with checking requirements - var scopeElement = adminSystemConfig.getScopeElement(element); - if (scopeElement) { - Event.stopObserving(scopeElement, 'click'); - Event.observe(scopeElement, 'click', function(event) { - toggleValueElements(scopeElement, Element.previous(scopeElement.parentNode)); - eventObj.checkRequirements(); - }); + // fill eventObj with required elements + adminSystemConfig.mapClasses(element, false, function(className) { + var requiredElement = Element.extend(document.getElementById(className.substr(9))); + if (requiredElement) { + eventObj.requires.push(requiredElement); } + }, 'requires'); + Element.extend(element).requiresObj = eventObj; - // binding events - eventObj.requires.each(function(required) { - eventObj.bindCheckingObserver(required); + // replacing "Use Default" action with checking requirements + var scopeElement = adminSystemConfig.getScopeElement(element); + if (scopeElement) { + Event.stopObserving(scopeElement, 'click'); + Event.observe(scopeElement, 'click', function(event) { + toggleValueElements(scopeElement, Element.previous(scopeElement.parentNode)); + eventObj.checkRequirements(); }); - Event.observe(eventObj.element, 'change', eventObj.indicateEnabled); - eventObj.checkRequirements(); - eventObj.indicateEnabled(); + } + + // binding events + eventObj.requires.each(function(required) { + eventObj.bindCheckingObserver(required); }); + Event.observe(eventObj.element, 'change', eventObj.indicateEnabled); + eventObj.checkRequirements(); + eventObj.indicateEnabled(); + }); - var handleHash = function () { - if (window.location.hash == '') { - return false; + var handleHash = function () { + if (window.location.hash == '') { + return false; + } + try { + var hashString = window.location.hash.replace('#', ''), + containerId = hashString.replace('-link', ''), + state = jQuery('#' + containerId + '-state'), + head = jQuery('#' + containerId + '-head'); + if (state.length) { + state.val(1); } - try { - var hashString = window.location.hash.replace('#', ''), - containerId = hashString.replace('-link', ''), - state = jQuery('#' + containerId + '-state'), - head = jQuery('#' + containerId + '-head'); - if (state.length) { - state.val(1); - } - if (head.length) { - head.collapsed = 0; - } - Fieldset.applyCollapse(containerId); - } catch(err) { + if (head.length) { + head.collapsed = 0; } - return false; - }; + Fieldset.applyCollapse(containerId); + } catch(err) { + } + return false; + }; - jQuery(window).hashchange(handleHash); - handleHash(); + jQuery(window).hashchange(handleHash); + handleHash(); - }); - - jQuery(window).load(function(){jQuery('body').trigger('adminConfigDefined')}) + registry.set('adminSystemConfig', adminSystemConfig); }); </script> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/system/config/form/field/array.phtml b/app/code/Magento/Backend/view/adminhtml/templates/system/config/form/field/array.phtml index 978f1806df767088feea206938412a00432c9b10..2707418fcd53e80e8f584305d0adf80dc65ab432 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/system/config/form/field/array.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/system/config/form/field/array.phtml @@ -37,7 +37,7 @@ $_colspan = $this->isAddAfter() ? 2 : 1; <input type="hidden" name="<?php echo $this->getElement()->getName(); ?>[__empty]" value="" /> <script> - + require(['prototype'], function(){ // create row creator var arrayRow<?php echo $_htmlId ?> = { @@ -117,6 +117,6 @@ $_colspan = $this->isAddAfter() ? 2 : 1; <?php if ($this->getElement()->getDisabled()):?> toggleValueElements({checked: true}, $('grid<?php echo $_htmlId; ?>').parentNode); <?php endif;?> - + }); </script> </div> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/system/config/js.phtml b/app/code/Magento/Backend/view/adminhtml/templates/system/config/js.phtml index dac09723f71f4ff21cd905a3c48d5484ff57c33b..aa73e1b8bd9ff8991b5a13802b945377aeaac51d 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/system/config/js.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/system/config/js.phtml @@ -8,7 +8,10 @@ ?> <script> -//<![CDATA[ +require([ + 'prototype' +], function () { + var freeModel = Class.create(); freeModel.prototype = { initialize : function() @@ -236,8 +239,8 @@ function showHint() { }); }); } -Event.observe(window, 'load', function(){ - showHint(); + +Event.observe(window, 'load', showHint); + }); -//]]> </script> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/system/search.phtml b/app/code/Magento/Backend/view/adminhtml/templates/system/search.phtml index f023180974b5c7ef3d32bfcc00bb43c6c81fcf01..975849b3a7e7f428ba674d72a0ed533318bc2949 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/system/search.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/system/search.phtml @@ -8,7 +8,7 @@ /** @var $this \Magento\Backend\Block\GlobalSearch */ ?> -<div class="search-global miniform"> +<div class="search-global miniform" data-mage-init='{"globalSearch": {}}'> <form action="#" id="form-search"> <div class="field search-global-field"> <label class="label" for="search-global"><span><?php echo __('Search')?></span></label> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/system/shipping/applicable_country.phtml b/app/code/Magento/Backend/view/adminhtml/templates/system/shipping/applicable_country.phtml index e0f0bc0588079dd3d0db25f7f8b7b67fbeb0f40c..2ff4b202b9038fdd939f5c84253429be0798299b 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/system/shipping/applicable_country.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/system/shipping/applicable_country.phtml @@ -5,7 +5,10 @@ */ ?> <script> -//<![CDATA[ +require([ + 'prototype' +], function () { + var CountryModel = Class.create(); CountryModel.prototype = { initialize : function() @@ -108,5 +111,5 @@ CountryModel.prototype = { } countryApply = new CountryModel(); -//]]> +}); </script> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/system/variable/js.phtml b/app/code/Magento/Backend/view/adminhtml/templates/system/variable/js.phtml index 29dc3c688435cfabbe2cf377d802a1dc96612c8f..25ecf31abccffb58af770fd93ef12a2c25e51434 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/system/variable/js.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/system/variable/js.phtml @@ -5,9 +5,11 @@ */ ?> <script> -//<![CDATA[ +require([ + 'prototype' +], function () { -function toggleValueElement(element) { +window.toggleValueElement = function(element) { var disabled = false; if (element.value == 1) { // use default value @@ -24,5 +26,5 @@ function toggleValueElement(element) { } } -//]]> +}); </script> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/widget/form/element.phtml b/app/code/Magento/Backend/view/adminhtml/templates/widget/form/element.phtml index 8fcf631f014a883c39b6a1e4bf8558dd5b7e26ac..a8b8d55a857b989cf7a73ba1ae8da7dc54ae94e5 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/widget/form/element.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/widget/form/element.phtml @@ -60,33 +60,31 @@ case 'wysiwyg': ?> <span class="form_row"> <label for="<?php echo $element->getHtmlId() ?>"><?php echo $element->getLabel() ?>:</label> - <script type="text/javascript" src="<?php echo $this->getViewFileUrl('tiny_mce/tiny_mce.js') ?>"></script> <script> - - //<![CDATA[ - tinyMCE.init({ - mode : "exact", - theme : "advanced", - elements : "<?php echo $element->getName(); ?>", - plugins : "inlinepopups,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,zoom,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras", - theme_advanced_buttons1 : "newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect", - theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor", - theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen", - theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,|,visualchars,nonbreaking", - theme_advanced_toolbar_location : "top", - theme_advanced_toolbar_align : "left", - theme_advanced_path_location : "bottom", - 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]", - theme_advanced_resize_horizontal : 'false', - theme_advanced_resizing : 'true', - apply_source_formatting : 'true', - convert_urls : 'false', - force_br_newlines : 'true', - doctype : '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">' - + require([ + 'tinymce' + ], function(tinyMCE){ + tinyMCE.init({ + mode : "exact", + theme : "advanced", + elements : "<?php echo $element->getName(); ?>", + plugins : "inlinepopups,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,zoom,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras", + theme_advanced_buttons1 : "newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect", + theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor", + theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen", + theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,|,visualchars,nonbreaking", + theme_advanced_toolbar_location : "top", + theme_advanced_toolbar_align : "left", + theme_advanced_path_location : "bottom", + 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]", + theme_advanced_resize_horizontal : 'false', + theme_advanced_resizing : 'true', + apply_source_formatting : 'true', + convert_urls : 'false', + force_br_newlines : 'true', + doctype : '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">' + }); }); - //]]> - </script> <textarea name="<?php echo $element->getName() ?>" title="<?php echo $element->getTitle() ?>" id="<?php echo $element->getHtmlId() ?>" class="textarea <?php echo $element->getClass() ?>" cols="80" rows="20"><?php echo $element->getValue(); ?></textarea> </span> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/widget/form/element/gallery.phtml b/app/code/Magento/Backend/view/adminhtml/templates/widget/form/element/gallery.phtml index 74a7c81782bd2fbf22b0e02f7b3d7eca10c3476f..06fbcfad3d1dbeba7a05eb994e52a442627ac201 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/widget/form/element/gallery.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/widget/form/element/gallery.phtml @@ -52,11 +52,13 @@ document.getElementById("gallery_thead").style.visibility="hidden"; </tbody></table> <script> -//<![CDATA[ +require([ + 'prototype' +], function () { id = 0; num_of_images = <?php echo $i ?>; -function addNewImage() +window.addNewImage = function() { document.getElementById("gallery_thead").style.visibility="visible"; @@ -105,7 +107,7 @@ function addNewImage() } -function deleteImage(image) +window.deleteImage = function(image) { num_of_images--; if (num_of_images<=0) { @@ -118,8 +120,7 @@ function deleteImage(image) image.parentNode.parentNode.parentNode.removeChild( image.parentNode.parentNode ); } } -//]]> - +}); </script> </td> </tr> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/widget/form/renderer/fieldset.phtml b/app/code/Magento/Backend/view/adminhtml/templates/widget/form/renderer/fieldset.phtml index af96e0bb2cf72b88d24d57de2f3593712bd3e139..2d35acca3518c298b7f4b3ff096647305fcefdb0 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/widget/form/renderer/fieldset.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/widget/form/renderer/fieldset.phtml @@ -85,7 +85,7 @@ if ($isField) { <?php if ($element->hasAdvanced() && !$isField): ?> <?php echo(!$element->getNoContainer() && $advancedAfter) ? '</fieldset>' : ''?> - <details class="details" id="details<?php echo $id ?>"> + <details data-mage-init='{"details": {}}' class="details" id="details<?php echo $id ?>"> <summary class="details-summary" id="details-summary<?php echo $id ?>"> <span><?php echo $advancedLabel ?></span> </summary> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/widget/grid/container.phtml b/app/code/Magento/Backend/view/adminhtml/templates/widget/grid/container.phtml index 914fc4d80329cec2dd46b6a6c46ad1f67d05ab72..b9b47925d884040a56292376cefc5b0e02c7ac34 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/widget/grid/container.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/widget/grid/container.phtml @@ -8,6 +8,6 @@ ?> <?php if ($this->getButtonsHtml()): ?> -<div class="page-actions"><?php echo $this->getButtonsHtml() ?></div> +<div data-mage-init='{"floatingHeader": {}}' class="page-actions"><?php echo $this->getButtonsHtml() ?></div> <?php endif; ?> <?php echo $this->getGridHtml() ?> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/widget/grid/serializer.phtml b/app/code/Magento/Backend/view/adminhtml/templates/widget/grid/serializer.phtml index fae5424a2fb995cc65dbfbf7ca2fd137d99a3fb1..56e9f6c7d944a0020931404c6b2e36bc41642345 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/widget/grid/serializer.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/widget/grid/serializer.phtml @@ -16,17 +16,22 @@ <?php $formId = $this->getFormId()?> <?php if (!empty($formId)) :?> <script> - Event.observe(window, "load", function(){ - var serializeInput = document.createElement('input'); - serializeInput.type = 'hidden'; - serializeInput.name = '<?php echo $this->getInputElementName()?>'; - serializeInput.id = '<?php echo $_id?>'; - try { - document.getElementById('<?php echo $formId?>').appendChild(serializeInput); - new serializerController('<?php echo $_id?>', <?php echo $this->getDataAsJSON() ?>, <?php echo $this->getColumnInputNames(true) ?>, <?php echo $this->getGridBlock()->getJsObjectName() ?>, '<?php echo $this->getReloadParamName()?>'); - } catch(e) { - //Error add serializer - } + require([ + 'prototype', + 'mage/adminhtml/grid' + ], function(){ + Event.observe(window, "load", function(){ + var serializeInput = document.createElement('input'); + serializeInput.type = 'hidden'; + serializeInput.name = '<?php echo $this->getInputElementName()?>'; + serializeInput.id = '<?php echo $_id?>'; + try { + document.getElementById('<?php echo $formId?>').appendChild(serializeInput); + new serializerController('<?php echo $_id?>', <?php echo $this->getDataAsJSON() ?>, <?php echo $this->getColumnInputNames(true) ?>, <?php echo $this->getGridBlock()->getJsObjectName() ?>, '<?php echo $this->getReloadParamName()?>'); + } catch(e) { + //Error add serializer + } + }); }); </script> <?php else :?> diff --git a/app/code/Magento/Backend/view/adminhtml/templates/widget/view/container.phtml b/app/code/Magento/Backend/view/adminhtml/templates/widget/view/container.phtml index 7454f10a81d475c8575077c58386aed2ccddf202..ca594d0d7be2b23caf224bed8e3b1971f3036b56 100644 --- a/app/code/Magento/Backend/view/adminhtml/templates/widget/view/container.phtml +++ b/app/code/Magento/Backend/view/adminhtml/templates/widget/view/container.phtml @@ -7,5 +7,5 @@ // @codingStandardsIgnoreFile ?> -<div class="page-actions"><?php echo $this->getButtonsHtml() ?></div> +<div data-mage-init='{"floatingHeader": {}}' class="page-actions"><?php echo $this->getButtonsHtml() ?></div> <?php echo $this->getViewHtml() ?> diff --git a/app/code/Magento/Backend/view/adminhtml/web/js/bootstrap/editor.js b/app/code/Magento/Backend/view/adminhtml/web/js/bootstrap/editor.js index 3bd60f3dccaec026b552c9162a30b856dd36481e..80ac54f08855e710660394d03e4862ce99a8f716 100644 --- a/app/code/Magento/Backend/view/adminhtml/web/js/bootstrap/editor.js +++ b/app/code/Magento/Backend/view/adminhtml/web/js/bootstrap/editor.js @@ -5,6 +5,5 @@ */ require([ "Magento_Backend/variables", - "mage/adminhtml/browser", - "mage/adminhtml/wysiwyg/widget" + "mage/adminhtml/browser" ]); \ No newline at end of file diff --git a/app/code/Magento/Backup/view/adminhtml/templates/backup/dialogs.phtml b/app/code/Magento/Backup/view/adminhtml/templates/backup/dialogs.phtml index 0c5ceb2637abf0bff303dcb81bc9f2943051c674..7cf1fee5ac8759195e9ccdd38ffd8b9805a0b4de 100644 --- a/app/code/Magento/Backup/view/adminhtml/templates/backup/dialogs.phtml +++ b/app/code/Magento/Backup/view/adminhtml/templates/backup/dialogs.phtml @@ -8,7 +8,7 @@ ?> <!-- TODO: refactor form styles and js --> -<div class="fade backup-dialog" id="rollback-warning" style="display: none;"> +<div data-mage-init='{"modalPopup": {}}' class="fade backup-dialog" id="rollback-warning" style="display: none;"> <div class="popup popup-notice"> <div class="popup-inner"> <header class="popup-header"> @@ -24,7 +24,7 @@ </div> </div> -<div class="fade backup-dialog" id="backup-warning" style="display: none;"> +<div data-mage-init='{"modalPopup": {}}' class="fade backup-dialog" id="backup-warning" style="display: none;"> <div class="popup popup-notice"> <div class="popup-inner"> <header class="popup-header"> @@ -43,7 +43,7 @@ </div> </div> -<div class="fade backup-dialog" id="backup-options" style="display: none;"> +<div data-mage-init='{"modalPopup": {}}' class="fade backup-dialog" id="backup-options" style="display: none;"> <div class="popup popup-notice"> <div class="popup-inner"> <header class="popup-header"> @@ -78,7 +78,7 @@ </div> </div> -<div class="fade backup-dialog" id="rollback-request-password" style="display: none;"> +<div data-mage-init='{"modalPopup": {}}' class="fade backup-dialog" id="rollback-request-password" style="display: none;"> <div class="popup popup-notice"> <div class="popup-inner"> <header class="popup-header"> diff --git a/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Checkbox.php b/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Checkbox.php index 47f27eddc23772de23773c881aa094f460b7a0a8..b6dcb6d46c2620ce98b6a17107e0b2fe40bd7b62 100644 --- a/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Checkbox.php +++ b/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Checkbox.php @@ -25,7 +25,7 @@ class Checkbox extends \Magento\Bundle\Block\Catalog\Product\View\Type\Bundle\Op public function setValidationContainer($elementId, $containerId) { return '<script> - $(\'' . + document.getElementById(\'' . $elementId . '\').advaiceContainer = \'' . $containerId . diff --git a/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Multi.php b/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Multi.php index 8681cd4ee624e5f6e20ef84dd208b834ef84eb2a..a315e6312bb877e05b04ddd8287e6f4d886f679f 100644 --- a/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Multi.php +++ b/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Multi.php @@ -25,7 +25,7 @@ class Multi extends \Magento\Bundle\Block\Catalog\Product\View\Type\Bundle\Optio public function setValidationContainer($elementId, $containerId) { return '<script> - $(\'' . + document.getElementById(\'' . $elementId . '\').advaiceContainer = \'' . $containerId . diff --git a/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Radio.php b/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Radio.php index e5c1a3764da4796cf70e23fa4c43043dee2868cd..1594ab04445c23aa672df2b67dc7e04c064eeb8f 100644 --- a/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Radio.php +++ b/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Radio.php @@ -25,7 +25,7 @@ class Radio extends \Magento\Bundle\Block\Catalog\Product\View\Type\Bundle\Optio public function setValidationContainer($elementId, $containerId) { return '<script> - $(\'' . + document.getElementById(\'' . $elementId . '\').advaiceContainer = \'' . $containerId . diff --git a/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Select.php b/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Select.php index 6e428d6652c45c9db2fa9a4b34ed42ec5ddf80ad..6aa5c16c26551423cc37cad439afcc43b93973ac 100644 --- a/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Select.php +++ b/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Composite/Fieldset/Options/Type/Select.php @@ -25,7 +25,7 @@ class Select extends \Magento\Bundle\Block\Catalog\Product\View\Type\Bundle\Opti public function setValidationContainer($elementId, $containerId) { return '<script> - $(\'' . + document.getElementById(\'' . $elementId . '\').advaiceContainer = \'' . $containerId . diff --git a/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Edit/Tab/Attributes.php b/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Edit/Tab/Attributes.php index 10439a8fb192ffc6f578bcdde5271fd125d71dae..06367ff6da556605ad8bb04f9c941499513b17b0 100644 --- a/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Edit/Tab/Attributes.php +++ b/app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Edit/Tab/Attributes.php @@ -74,7 +74,7 @@ class Attributes extends \Magento\Catalog\Block\Adminhtml\Product\Edit\Tab\Attri $tax->setAfterElementHtml( '<script>' . " - //<![CDATA[ + require(['prototype'], function(){ function changeTaxClassId() { if ($('price_type').value == '" . \Magento\Bundle\Model\Product\Price::PRICE_TYPE_DYNAMIC . @@ -93,13 +93,11 @@ class Attributes extends \Magento\Catalog\Block\Adminhtml\Product\Edit\Tab\Attri } } - document.observe('dom:loaded', function() { - if ($('price_type')) { - $('price_type').observe('change', changeTaxClassId); - changeTaxClassId(); - } + if ($('price_type')) { + $('price_type').observe('change', changeTaxClassId); + changeTaxClassId(); + } }); - //]]> " . '</script>' ); diff --git a/app/code/Magento/Bundle/view/adminhtml/requirejs-config.js b/app/code/Magento/Bundle/view/adminhtml/requirejs-config.js deleted file mode 100644 index 650ffe84e87024f379384c4dad0de8134848af68..0000000000000000000000000000000000000000 --- a/app/code/Magento/Bundle/view/adminhtml/requirejs-config.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ - -var config = { - deps: [ - 'Magento_Bundle/product/validation-rules' - ] -}; \ No newline at end of file diff --git a/app/code/Magento/Bundle/view/adminhtml/templates/product/edit/bundle/option.phtml b/app/code/Magento/Bundle/view/adminhtml/templates/product/edit/bundle/option.phtml index 2d68f15534eb43cf1b7213c52a6c6ac6456fc32d..51ef90c0baba38ebc198bacb6b3288bf5c61aa43 100644 --- a/app/code/Magento/Bundle/view/adminhtml/templates/product/edit/bundle/option.phtml +++ b/app/code/Magento/Bundle/view/adminhtml/templates/product/edit/bundle/option.phtml @@ -117,7 +117,7 @@ require([ "jquery", "jquery/jquery.tabs", - "js/theme", + "collapsable", "Magento_Bundle/js/bundle-product", "prototype", "mage/adminhtml/form" diff --git a/app/code/Magento/Bundle/view/adminhtml/web/product/validation-rules.js b/app/code/Magento/Bundle/view/adminhtml/web/product/validation-rules.js deleted file mode 100644 index 40608e8c8b0e9d0bc9978d03dedc5c8df37b6935..0000000000000000000000000000000000000000 --- a/app/code/Magento/Bundle/view/adminhtml/web/product/validation-rules.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Bundle client side validation rules - * - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ -define(["jquery","mage/backend/validation"], function($){ - $.validator.addMethod('validate-greater-zero-based-on-option', function(v, el) { - var optionType = $(el) - .closest('.form-list') - .prev('.fieldset-alt') - .find('select.select-product-option-type'), - optionTypeVal = optionType.val(); - v = Number(v) || 0; - if (optionType && (optionTypeVal == 'checkbox' || optionTypeVal == 'multi') && v <= 0) { - return false; - } - return true; - }, 'Please enter a number greater 0 in this field.'); -}); \ No newline at end of file diff --git a/app/code/Magento/Catalog/Block/Adminhtml/Category/Edit/Form.php b/app/code/Magento/Catalog/Block/Adminhtml/Category/Edit/Form.php index 3696da4c41474c39ad33bd06ae4bd8421b54d98d..783a3bf00587ec154f665b9d1376938145d3a339 100644 --- a/app/code/Magento/Catalog/Block/Adminhtml/Category/Edit/Form.php +++ b/app/code/Magento/Catalog/Block/Adminhtml/Category/Edit/Form.php @@ -78,8 +78,15 @@ class Form extends \Magento\Catalog\Block\Adminhtml\Category\AbstractCategory [ 'id' => 'save', 'label' => __('Save Category'), - 'onclick' => "categorySubmit('" . $this->getSaveUrl() . "', true)", - 'class' => 'save primary save-category' + 'class' => 'save primary save-category', + 'data_attribute' => [ + 'mage-init' => [ + 'Magento_Catalog/catalog/category/edit' => [ + 'url' => $this->getSaveUrl(), + 'ajax' => true + ] + ] + ] ] ); } diff --git a/app/code/Magento/Catalog/Block/Adminhtml/Category/Helper/Pricestep.php b/app/code/Magento/Catalog/Block/Adminhtml/Category/Helper/Pricestep.php index bc32a8f84cc6b6e8c50cb2f05f624f7fe380345b..d55631e29834cd3640d646b04c8f96541832d4bb 100644 --- a/app/code/Magento/Catalog/Block/Adminhtml/Category/Helper/Pricestep.php +++ b/app/code/Magento/Catalog/Block/Adminhtml/Category/Helper/Pricestep.php @@ -54,11 +54,13 @@ class Pricestep extends \Magento\Framework\Data\Form\Element\Text $html .= ' <label for="' . $htmlId . '" class="normal">' . __('Use Config Settings') . '</label>'; $html .= '<script>' . + 'require(["prototype"], function(){'. 'toggleValueElements($(\'' . $htmlId . '\'), $(\'' . $htmlId . '\').parentNode);' . + '});'. '</script>'; return $html; diff --git a/app/code/Magento/Catalog/Block/Adminhtml/Category/Helper/Sortby/Available.php b/app/code/Magento/Catalog/Block/Adminhtml/Category/Helper/Sortby/Available.php index 11332326eff55d44dc634b5bd89a39aaca39077a..896b92743bfcff5fc8ed8190470e850f0eff7a66 100644 --- a/app/code/Magento/Catalog/Block/Adminhtml/Category/Helper/Sortby/Available.php +++ b/app/code/Magento/Catalog/Block/Adminhtml/Category/Helper/Sortby/Available.php @@ -51,11 +51,11 @@ class Available extends \Magento\Framework\Data\Form\Element\Multiselect $html .= ' onclick="toggleValueElements(this, this.parentNode);" class="checkbox" type="checkbox" />'; $html .= ' <label for="' . $htmlId . '" class="normal">' . __('Use All Available Attributes') . '</label>'; - $html .= '<script>toggleValueElements($(\'' . + $html .= '<script>require(["prototype"], function(){toggleValueElements($(\'' . $htmlId . '\'), $(\'' . $htmlId . - '\').parentNode);</script>'; + '\').parentNode);});</script>'; return $html; } diff --git a/app/code/Magento/Catalog/Block/Adminhtml/Category/Helper/Sortby/DefaultSortby.php b/app/code/Magento/Catalog/Block/Adminhtml/Category/Helper/Sortby/DefaultSortby.php index dd1e70a384d8081cb1d05446abd132df35ff05c6..adebefb41012605394ff806b3f9ca29be22faa95 100644 --- a/app/code/Magento/Catalog/Block/Adminhtml/Category/Helper/Sortby/DefaultSortby.php +++ b/app/code/Magento/Catalog/Block/Adminhtml/Category/Helper/Sortby/DefaultSortby.php @@ -51,11 +51,11 @@ class DefaultSortby extends \Magento\Framework\Data\Form\Element\Select $html .= ' onclick="toggleValueElements(this, this.parentNode);" class="checkbox" type="checkbox" />'; $html .= ' <label for="' . $htmlId . '" class="normal">' . __('Use Config Settings') . '</label>'; - $html .= '<script>toggleValueElements($(\'' . + $html .= '<script>require(["prototype"], function(){toggleValueElements($(\'' . $htmlId . '\'), $(\'' . $htmlId . - '\').parentNode);</script>'; + '\').parentNode);});</script>'; return $html; } diff --git a/app/code/Magento/Catalog/Block/Adminhtml/Category/Tree.php b/app/code/Magento/Catalog/Block/Adminhtml/Category/Tree.php index 6db0db075824da391371c6ac752d79b5fa6cda58..749e52862fa44aaf1cb771b3026606565a27a15b 100644 --- a/app/code/Magento/Catalog/Block/Adminhtml/Category/Tree.php +++ b/app/code/Magento/Catalog/Block/Adminhtml/Category/Tree.php @@ -303,12 +303,12 @@ class Tree extends \Magento\Catalog\Block\Adminhtml\Category\AbstractCategory foreach ($categories as $key => $category) { $categories[$key] = $this->_getNodeJson($category); } - return '<script>' . $javascriptVarName . ' = ' . $this->_jsonEncoder->encode( + return '<script>require(["prototype"], function(){' . $javascriptVarName . ' = ' . $this->_jsonEncoder->encode( $categories ) . ';' . ($this->canAddSubCategory() ? '$("add_subcategory_button").show();' : '$("add_subcategory_button").hide();') . - '</script>'; + '});</script>'; } /** diff --git a/app/code/Magento/Catalog/Block/Adminhtml/Product/Helper/Form/Config.php b/app/code/Magento/Catalog/Block/Adminhtml/Product/Helper/Form/Config.php index 32b085dfe69a081e4fd7eb8eebf2c8c0ab7f397b..3e157435a97f5a9407123715e1ad6ebc5d19e41a 100644 --- a/app/code/Magento/Catalog/Block/Adminhtml/Product/Helper/Form/Config.php +++ b/app/code/Magento/Catalog/Block/Adminhtml/Product/Helper/Form/Config.php @@ -33,11 +33,11 @@ class Config extends \Magento\Framework\Data\Form\Element\Select $html .= '<input id="' . $htmlId . '" name="product[' . $htmlId . ']" ' . $disabled . ' value="1" ' . $checked; $html .= ' onclick="toggleValueElements(this, this.parentNode);" class="checkbox" type="checkbox" />'; $html .= ' <label for="' . $htmlId . '">' . __('Use Config Settings') . '</label>'; - $html .= '<script>toggleValueElements($(\'' . + $html .= '<script>require(["prototype"], function(){toggleValueElements($(\'' . $htmlId . '\'), $(\'' . $htmlId . - '\').parentNode);</script>'; + '\').parentNode);});</script>'; return $html; } diff --git a/app/code/Magento/Catalog/Block/Adminhtml/Product/Helper/Form/Image.php b/app/code/Magento/Catalog/Block/Adminhtml/Product/Helper/Form/Image.php index 79f40ecf750816da8d2c6f0520ed4c83a8caa2ad..51e48bd61f7bc3ff2ce4d8560393140dd677422b 100644 --- a/app/code/Magento/Catalog/Block/Adminhtml/Product/Helper/Form/Image.php +++ b/app/code/Magento/Catalog/Block/Adminhtml/Product/Helper/Form/Image.php @@ -39,12 +39,13 @@ class Image extends \Magento\Framework\Data\Form\Element\Image } else { $inputField = '<input value="%s" id="%s_hidden" type="hidden" class="required-entry" />'; $html .= sprintf($inputField, $this->getValue(), $this->getHtmlId()); - $html .= '<script> + $html .= '<script>require(["prototype"], function(){ syncOnchangeValue(\'' . $this->getHtmlId() . '\', \'' . $this->getHtmlId() . '_hidden\'); + }); </script>'; } } else { diff --git a/app/code/Magento/Catalog/view/adminhtml/layout/catalog_category_edit.xml b/app/code/Magento/Catalog/view/adminhtml/layout/catalog_category_edit.xml index 75abe550ad72419fbfd69c15b5914ecc2c0f80ac..202ff06a2222cde22fff192b5687b184197c1642 100644 --- a/app/code/Magento/Catalog/view/adminhtml/layout/catalog_category_edit.xml +++ b/app/code/Magento/Catalog/view/adminhtml/layout/catalog_category_edit.xml @@ -8,7 +8,6 @@ <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"> <head> <css src="jquery/fileUploader/css/jquery.fileupload-ui.css"/> - <link src="Magento_Catalog::js/bootstrap/category-edit.js"/> </head> <update handle="editor"/> <body> diff --git a/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_new.xml b/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_new.xml index 3acbce9c4bb80772c2a23664f99d47a5db9d6380..9bbf8fe2b398f1fe90b1864ea25c302d3c77a9b5 100644 --- a/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_new.xml +++ b/app/code/Magento/Catalog/view/adminhtml/layout/catalog_product_new.xml @@ -10,7 +10,6 @@ <css src="jquery/fileUploader/css/jquery.fileupload-ui.css"/> <css src="Magento_Catalog::catalog/category-selector.css"/> <css src="Magento_Catalog::product/product.css"/> - <link src="Magento_Catalog::js/bootstrap/product-new.js"/> </head> <update handle="editor"/> <body> diff --git a/app/code/Magento/Catalog/view/adminhtml/requirejs-config.js b/app/code/Magento/Catalog/view/adminhtml/requirejs-config.js index f6f6ae4ffe12ec9681b962a54f205dabde4b5865..9b1663d7553e4f89877424e06a255f1bc49537d4 100644 --- a/app/code/Magento/Catalog/view/adminhtml/requirejs-config.js +++ b/app/code/Magento/Catalog/view/adminhtml/requirejs-config.js @@ -11,10 +11,10 @@ var config = { categoryTree: 'Magento_Catalog/js/category-tree', productGallery: 'Magento_Catalog/js/product-gallery', baseImage: 'Magento_Catalog/catalog/base-image-uploader', - productAttributes: 'Magento_Catalog/catalog/product' + productAttributes: 'Magento_Catalog/catalog/product-attributes' } }, deps: [ - "Magento_Catalog/catalog/product" + 'Magento_Catalog/catalog/product' ] }; \ No newline at end of file diff --git a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/checkboxes/tree.phtml b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/checkboxes/tree.phtml index 78f0314f37e1de62a26e5b3666e5bd9ef6a54901..5b2d5356cb9104c938083655f3b23eb7afcd85a6 100644 --- a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/checkboxes/tree.phtml +++ b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/checkboxes/tree.phtml @@ -14,6 +14,7 @@ <script> require([ "prototype", + "extjs/ext-tree-checkbox", "mage/adminhtml/form" ], function(){ diff --git a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/edit.phtml b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/edit.phtml index 330375f2bbd380a80b7ad97ac0378bb01a2d54d6..0f26e6c0cce5b318a419150a61f6b6686b8497be 100644 --- a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/edit.phtml +++ b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/edit.phtml @@ -19,9 +19,10 @@ <script> require([ "jquery", - "js/theme", + "tinymce", + "loadingPopup", "mage/backend/floating-header" -], function(jQuery){ +], function(jQuery, tinyMCE){ //<![CDATA[ function categoryReset(url,useAjax){ @@ -91,6 +92,7 @@ require([ $('.page-actions').floatingHeader({ 'title': '.category-edit-title' }); + $('body').trigger('contentUpdated'); try { if (refreshTree) { window.refreshTreeArea(); diff --git a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/edit/form.phtml b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/edit/form.phtml index 6b3e96b3019fbca83d313b27f27d679cf043d1ed..858c1e78db5fe36197cd8025b775d5d42426230e 100644 --- a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/edit/form.phtml +++ b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/edit/form.phtml @@ -13,7 +13,7 @@ $categoryId = $this->getCategoryId(); <div class="category-edit-title"> <h3 class="title"><?php echo $this->escapeHtml($this->getHeader()) . ($this->getCategoryId() ? ' (' . __('ID: %1', $this->getCategoryId()) . ')' : '') ?></h3> </div> -<div class="page-actions"> +<div data-mage-init='{"floatingHeader": {}}' class="page-actions"> <?php echo $this->getResetButtonHtml() ?> <?php if ($this->getCategoryId()): ?> <?php echo $this->getDeleteButtonHtml() ?> diff --git a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/tree.phtml b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/tree.phtml index ab241f4cf2526362021d4fa0d51278367eaf8c65..c8a0632bfdb293717ef5ee0c3b76b565be9538e2 100644 --- a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/tree.phtml +++ b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/tree.phtml @@ -38,6 +38,7 @@ require([ "jquery", "jquery/ui", "prototype", + "extjs/ext-tree-checkbox", "mage/adminhtml/form", "mage/translate" ], function(jQuery){ diff --git a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/widget/tree.phtml b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/widget/tree.phtml index b40ac67e83969387dbadd4d8a2dbf784a44be429..0cf05f91b19f58445242a872daa4dbe768cc6f93 100644 --- a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/widget/tree.phtml +++ b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/category/widget/tree.phtml @@ -12,8 +12,7 @@ <div id="<?php echo $_divId ?>" class="tree"></div> <script> -require(['prototype'], function(){ -//<![CDATA[ +require(["prototype", "extjs/ext-tree-checkbox"], function(){ var tree<?php echo $this->getId() ?>; @@ -183,7 +182,6 @@ Ext.onReady(function() tree<?php echo $this->getId() ?>.loadTree({parameters:parameters, data:<?php echo $this->getTreeJson() ?>},true); }); -//]]> }); </script> diff --git a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/attribute/form.phtml b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/attribute/form.phtml index 49733c945841ac98f9bb5bd6b4bb24615f97ddd4..5d883eb1dfb8c344541d2f9d39f2b801371640b7 100644 --- a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/attribute/form.phtml +++ b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/attribute/form.phtml @@ -17,7 +17,7 @@ <input name="form_key" type="hidden" value="<?php echo $this->escapeHtml($this->getFormKey()) ?>" /> <?php echo $this->getChildHtml('form') ?> </form> -<div class="page-actions" <?php echo $this->getUiId('content-header') ?>> +<div data-mage-init='{"floatingHeader": {}}' class="page-actions" <?php echo $this->getUiId('content-header') ?>> <?php echo $this->getButtonsHtml('header') ?> </div> <script> diff --git a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/attribute/js.phtml b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/attribute/js.phtml index 46f2599f4f4298d4a358cef9aea7afe539890919..58b6dee7081e54f680a12434012e6d7f11a085ae 100644 --- a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/attribute/js.phtml +++ b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/attribute/js.phtml @@ -8,9 +8,8 @@ ?> <script> -require(["jquery", "js/theme", "prototype"], function(jQuery){ +require(["jquery", "collapsable", "prototype"], function(jQuery){ -//<![CDATA[ function toggleApplyVisibility(select) { if ($(select).value == 1) { $(select).next('select').removeClassName('no-display'); @@ -325,7 +324,6 @@ window.bindAttributeInputType = bindAttributeInputType; window.checkOptionsPanelVisibility = checkOptionsPanelVisibility; window.getFrontTab = getFrontTab; window.toggleApplyVisibility = toggleApplyVisibility; -//]]> }); </script> diff --git a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/attribute/set/main.phtml b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/attribute/set/main.phtml index b5fb8f89ebc6c80e7ef7a146ded5c532bbdd4ef6..d8eb14c72549e94a2e6db828e4c86b9c2c53fab7 100644 --- a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/attribute/set/main.phtml +++ b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/attribute/set/main.phtml @@ -39,7 +39,7 @@ require([ </div> <div id="tree-div2" class="attribute-set-tree"></div> <script> -require(['jquery'], function(jQuery){ +require(["jquery", "extjs/ext-tree-checkbox"], function(jQuery){ //<![CDATA[ var allowDragAndDrop = <?php echo($this->getIsReadOnly() ? 'false' : 'true'); ?>; diff --git a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/composite/fieldset/options/type/date.phtml b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/composite/fieldset/options/type/date.phtml index d569edd981107bf88748453fe2a607ea1e0d672a..443eadcfc64684e6256ee81af77b628ec15a7c38 100644 --- a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/composite/fieldset/options/type/date.phtml +++ b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/composite/fieldset/options/type/date.phtml @@ -47,7 +47,7 @@ require([ <script> require([ "jquery", - "mage/validation" + "mage/backend/validation" ], function(jQuery){ //<![CDATA[ diff --git a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/edit.phtml b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/edit.phtml index 42200afb58c0088f9096bbd8426f689ffecc0a83..5e83b5b88e5e0f351adf80243eb0ba43286c2c48 100644 --- a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/edit.phtml +++ b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/edit.phtml @@ -64,7 +64,7 @@ require([ "mage/mage", "Magento_Catalog/catalog/type-switcher", "mage/backend/tabs", - "domReady" + "domReady!" ], function($){ var $form = $('[data-form=edit-product]'); $form.data('typeSwitcher', new TypeSwitcher(<?php echo $this->getTypeSwitcherData();?>).bindAll()); diff --git a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/edit/action/websites.phtml b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/edit/action/websites.phtml index a771230a7091c55ce745c7d80af9082baffbe500..88c42be773a5f6f18e663a557438452d896d55d0 100644 --- a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/edit/action/websites.phtml +++ b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/edit/action/websites.phtml @@ -78,6 +78,9 @@ </div> <script> +require([ + 'prototype' +], function () { var productWebsiteCheckboxes = $$('.website-checkbox'); for(var i=0;i<productWebsiteCheckboxes.length;i++){ @@ -100,4 +103,5 @@ } } } +}); </script> diff --git a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/edit/serializer.phtml b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/edit/serializer.phtml index c51ca7f6aa9e5f8bb21d1e1d3a2a67ea0152e7be..eae850e28308dc0cd59af73d9513cc3767d45a89 100644 --- a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/edit/serializer.phtml +++ b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/product/edit/serializer.phtml @@ -10,7 +10,3 @@ <?php $_id = 'id_' . md5(microtime()) ?> <input type="hidden" name="<?php echo $this->getInputElementName()?>" value="" id="<?php echo $_id?>" /> -<script> -// create serializer controller, that will syncronize grid checkboxes with hidden input -new productLinksController('<?php echo $_id?>', <?php echo $this->getProductsJSON() ?>, <?php echo $this->getGridBlock()->getJsObjectName() ?>); -</script> diff --git a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/wysiwyg/js.phtml b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/wysiwyg/js.phtml index cb5e7d11f6f382e8de4c6aeafb75fff7f3d3ecf6..321d145bd472f893c59be5c6910b11de7b3419ad 100644 --- a/app/code/Magento/Catalog/view/adminhtml/templates/catalog/wysiwyg/js.phtml +++ b/app/code/Magento/Catalog/view/adminhtml/templates/catalog/wysiwyg/js.phtml @@ -10,9 +10,10 @@ <script> require([ "jquery", + "tinymce", "prototype", "mage/adminhtml/events" -], function(jQuery){ +], function(jQuery, tinyMCE){ //<![CDATA[ diff --git a/app/code/Magento/Catalog/view/adminhtml/web/catalog/category/edit.js b/app/code/Magento/Catalog/view/adminhtml/web/catalog/category/edit.js index ba29b7e8df72b44fac7b7a3a20a2b3c440f0aa9c..b56225bc6ea298dc8a74c20ffb87e01929806021 100644 --- a/app/code/Magento/Catalog/view/adminhtml/web/catalog/category/edit.js +++ b/app/code/Magento/Catalog/view/adminhtml/web/catalog/category/edit.js @@ -6,11 +6,11 @@ * Create/edit some category */ define([ - "jquery", - "prototype" -], function(jQuery){ + 'jquery', + 'prototype' +], function (jQuery) { -var categorySubmit = function (url, useAjax) { + var categorySubmit = function (url, useAjax) { var activeTab = $('active_tab_id'); if (activeTab) { if (activeTab.tabsJsObject && activeTab.tabsJsObject.tabs('activeAnchor')) { @@ -69,6 +69,10 @@ var categorySubmit = function (url, useAjax) { jQuery('#category_edit_form').trigger('submit'); }; -window.categorySubmit = categorySubmit; - + return function (config, element) { + config = config || {}; + jQuery(element).on('click', function (event) { + categorySubmit(config.url, config.ajax); + }); + }; }); \ No newline at end of file diff --git a/app/code/Magento/Catalog/view/adminhtml/web/catalog/product-attributes.js b/app/code/Magento/Catalog/view/adminhtml/web/catalog/product-attributes.js new file mode 100644 index 0000000000000000000000000000000000000000..3bb3a51ffaa8dc290296748d58fa9d8b7cda8f9a --- /dev/null +++ b/app/code/Magento/Catalog/view/adminhtml/web/catalog/product-attributes.js @@ -0,0 +1,75 @@ +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +define([ + 'jquery', + 'jquery/ui' +], function ($) { + 'use strict'; + + $.widget('mage.productAttributes', { + _create: function () { + this._on({ + 'click': '_showPopup' + }); + }, + + _prepareUrl: function () { + var name = $('[data-role=product-attribute-search]').val(); + + return this.options.url + + (/\?/.test(this.options.url) ? '&' : '?') + + 'set=' + $('#attribute_set_id').val() + + '&attribute[frontend_label]=' + + window.encodeURIComponent(name); + }, + + _showPopup: function (event) { + var wrapper, + iframe; + + wrapper = $('<div id="create_new_attribute"/>').appendTo('body').dialog({ + title: 'New Attribute', + width: 600, + minHeight: 650, + modal: true, + resizable: false, + resizeStop: function () { + iframe.height($(this).outerHeight() + 'px'); + iframe.width($(this).outerWidth() + 'px'); + } + }); + + iframe = $('<iframe id="create_new_attribute_container">').attr({ + src: this._prepareUrl(event), + frameborder: 0, + style: 'position:absolute;top:58px;left:0px;right:0px;bottom:0px' + }); + + iframe.on('load', function () { + $(this).css({ + height: wrapper.outerHeight() + 'px', + width: wrapper.outerWidth() + 'px' + }); + }); + + wrapper.append(iframe); + + wrapper.on('dialogclose', function () { + var dialog = this, + doc = iframe.get(0).document; + + if (doc && $.isFunction(doc.execCommand)) { + //IE9 break script loading but not execution on iframe removing + doc.execCommand('stop'); + iframe.remove(); + } + + $(dialog).remove(); + }); + } + }); + + return $.mage.productAttributes; +}); diff --git a/app/code/Magento/Catalog/view/adminhtml/web/catalog/product.js b/app/code/Magento/Catalog/view/adminhtml/web/catalog/product.js index 3f18a23e17f1f9202fc3a4472f0da31410dc5f5a..df3cc6b9694987e9e382d8e348db0fd2f95d9915 100644 --- a/app/code/Magento/Catalog/view/adminhtml/web/catalog/product.js +++ b/app/code/Magento/Catalog/view/adminhtml/web/catalog/product.js @@ -2,128 +2,70 @@ * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ -define([ +require([ "jquery", - "jquery/ui", "prototype" ], function(jQuery){ -window.Product = {}; + window.Product = {}; -(function ($) { - $.widget("mage.productAttributes", { - _create: function () { - this._on({'click':'_showPopup'}); - }, - _prepareUrl: function() { - var name = $('[data-role=product-attribute-search]').val(); - return this.options.url + - (/\?/.test(this.options.url) ? '&' : '?') + - 'set=' + $('#attribute_set_id').val() + - '&attribute[frontend_label]=' + - window.encodeURIComponent(name); - }, - _showPopup: function (event) { - var wrapper = $('<div id="create_new_attribute"/>').appendTo('body').dialog({ - title: 'New Attribute', - width: 600, - minHeight: 650, - modal: true, - resizable: false, - resizeStop: function(event, ui) { - iframe.height($(this).outerHeight() + 'px'); - iframe.width($(this).outerWidth() + 'px'); - } - }); - var iframe = $('<iframe id="create_new_attribute_container">').attr({ - src: this._prepareUrl(event), - frameborder: 0, - style: "position:absolute;top:58px;left:0px;right:0px;bottom:0px" - }); - iframe.on('load', function () { - $(this).css({ - height: wrapper.outerHeight() + 'px', - width: wrapper.outerWidth() + 'px' - }); - }); - wrapper.append(iframe); - - wrapper.on('dialogclose', function () { - var dialog = this; - var doc = iframe.get(0).document; - if (doc && $.isFunction(doc.execCommand)) { - //IE9 break script loading but not execution on iframe removing - doc.execCommand('stop'); - iframe.remove(); - } - $(dialog).remove(); - }); + function toogleFieldEditMode(toogleIdentifier, fieldContainer) { + if ($(toogleIdentifier).checked) { + enableFieldEditMode(fieldContainer); + } else { + disableFieldEditMode(fieldContainer); } - }); -})(jQuery); - -function toogleFieldEditMode(toogleIdentifier, fieldContainer) { - if ($(toogleIdentifier).checked) { - enableFieldEditMode(fieldContainer); - } else { - disableFieldEditMode(fieldContainer); } -} -function disableFieldEditMode(fieldContainer) { - $(fieldContainer).disabled = true; - if ($(fieldContainer + '_hidden')) { - $(fieldContainer + '_hidden').disabled = true; + function disableFieldEditMode(fieldContainer) { + $(fieldContainer).disabled = true; + if ($(fieldContainer + '_hidden')) { + $(fieldContainer + '_hidden').disabled = true; + } } -} -function enableFieldEditMode(fieldContainer) { - $(fieldContainer).disabled = false; - if ($(fieldContainer + '_hidden')) { - $(fieldContainer + '_hidden').disabled = false; + function enableFieldEditMode(fieldContainer) { + $(fieldContainer).disabled = false; + if ($(fieldContainer + '_hidden')) { + $(fieldContainer + '_hidden').disabled = false; + } } -} -function onCompleteDisableInited() { - jQuery.each(jQuery('[data-disable]'), function() { - var item = jQuery(this).data('disable'); - disableFieldEditMode(item); - }); -} + function onCompleteDisableInited() { + jQuery.each(jQuery('[data-disable]'), function () { + var item = jQuery(this).data('disable'); + disableFieldEditMode(item); + }); + } -function onUrlkeyChanged(urlKey) { - urlKey = $(urlKey); - var hidden = urlKey.next('input[type=hidden]'); - var chbx = urlKey.next('input[type=checkbox]'); - var oldValue = chbx.value; - chbx.disabled = (oldValue == urlKey.value); - hidden.disabled = chbx.disabled; -} + function onUrlkeyChanged(urlKey) { + urlKey = $(urlKey); + var hidden = urlKey.next('input[type=hidden]'); + var chbx = urlKey.next('input[type=checkbox]'); + var oldValue = chbx.value; + chbx.disabled = (oldValue == urlKey.value); + hidden.disabled = chbx.disabled; + } -function onCustomUseParentChanged(element) { - var useParent = (element.value == 1) ? true : false; - element.up(2).select('input', 'select', 'textarea').each(function(el){ - if (element.id != el.id) { - el.disabled = useParent; - } - }); - element.up(2).select('img').each(function(el){ - if (useParent) { - el.hide(); - } else { - el.show(); - } - }); -} + function onCustomUseParentChanged(element) { + var useParent = (element.value == 1) ? true : false; + element.up(2).select('input', 'select', 'textarea').each(function (el) { + if (element.id != el.id) { + el.disabled = useParent; + } + }); + element.up(2).select('img').each(function (el) { + if (useParent) { + el.hide(); + } else { + el.show(); + } + }); + } -window.onCustomUseParentChanged = onCustomUseParentChanged; -window.onUrlkeyChanged = onUrlkeyChanged; -window.onCompleteDisableInited = onCompleteDisableInited; -window.enableFieldEditMode = enableFieldEditMode; -window.disableFieldEditMode = disableFieldEditMode; -window.toogleFieldEditMode = toogleFieldEditMode; + window.onCustomUseParentChanged = onCustomUseParentChanged; + window.onUrlkeyChanged = onUrlkeyChanged; + window.toogleFieldEditMode = toogleFieldEditMode; -Event.observe(window, 'load', onCompleteDisableInited); - -return jQuery.mage.productAttributes; + Event.observe(window, 'load', onCompleteDisableInited); }); \ No newline at end of file diff --git a/app/code/Magento/Catalog/view/adminhtml/web/js/bootstrap.js b/app/code/Magento/Catalog/view/adminhtml/web/js/bootstrap.js deleted file mode 100644 index 59a4321db592dd97a908be7b065b00d3a10bd98e..0000000000000000000000000000000000000000 --- a/app/code/Magento/Catalog/view/adminhtml/web/js/bootstrap.js +++ /dev/null @@ -1,5 +0,0 @@ -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ - diff --git a/app/code/Magento/Catalog/view/adminhtml/web/js/bootstrap/category-edit.js b/app/code/Magento/Catalog/view/adminhtml/web/js/bootstrap/category-edit.js deleted file mode 100644 index 69ce3626f2a9e501b0ad7d1c0df0073c7ba63c7b..0000000000000000000000000000000000000000 --- a/app/code/Magento/Catalog/view/adminhtml/web/js/bootstrap/category-edit.js +++ /dev/null @@ -1,9 +0,0 @@ -/** - * - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ -require([ - "jquery/file-uploader", - "Magento_Catalog/catalog/category/edit" -]); \ No newline at end of file diff --git a/app/code/Magento/Catalog/view/adminhtml/web/js/bootstrap/product-new.js b/app/code/Magento/Catalog/view/adminhtml/web/js/bootstrap/product-new.js deleted file mode 100644 index 9ff4834020d71f95b97fce8a7fc871ab0c0d252b..0000000000000000000000000000000000000000 --- a/app/code/Magento/Catalog/view/adminhtml/web/js/bootstrap/product-new.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ -require([ - "jquery/file-uploader" -]); \ No newline at end of file diff --git a/app/code/Magento/Catalog/view/adminhtml/web/js/custom-options.js b/app/code/Magento/Catalog/view/adminhtml/web/js/custom-options.js index fd5f9b75b4927b49b46f40a4f2152a2cca7d1cb9..613de77ab14b08c68a7f3f1d75abbdccfa2c8277 100644 --- a/app/code/Magento/Catalog/view/adminhtml/web/js/custom-options.js +++ b/app/code/Magento/Catalog/view/adminhtml/web/js/custom-options.js @@ -8,7 +8,8 @@ define([ "jquery", "jquery/ui", "jquery/template", - "js/theme", + "useDefault", + "collapsable", "mage/translate", "mage/backend/validation" ], function($){ diff --git a/app/code/Magento/Catalog/view/frontend/web/product/view/validation.js b/app/code/Magento/Catalog/view/frontend/web/product/view/validation.js index a19ab628f91dbc17c322ddd30aa5bd30bdd7326a..2c33dae8b99ef12e49d49402233c188d89e2f54e 100644 --- a/app/code/Magento/Catalog/view/frontend/web/product/view/validation.js +++ b/app/code/Magento/Catalog/view/frontend/web/product/view/validation.js @@ -7,7 +7,7 @@ define([ "jquery", "jquery/ui", - "mage/validation" + "mage/validation/validation" ], factory); } else { factory(jQuery); diff --git a/app/code/Magento/CatalogRule/view/adminhtml/templates/promo/form.phtml b/app/code/Magento/CatalogRule/view/adminhtml/templates/promo/form.phtml index ea0eb2cbfacb83b331d9f4f2131151efa7adaa59..c1691cf0ea2ec84e0348502e51d651d531ab0b1b 100644 --- a/app/code/Magento/CatalogRule/view/adminhtml/templates/promo/form.phtml +++ b/app/code/Magento/CatalogRule/view/adminhtml/templates/promo/form.phtml @@ -10,13 +10,4 @@ <div class="entry-edit rule-tree"> <?php echo $this->getFormHtml() ?> </div> -<script> -/* - if ($('rule_conditions_fieldset')) { - var conditionsForm = new VarienRulesForm('rule_conditions_fieldset', '<?php echo $this->getNewConditionChildUrl() ?>'); - } - if ($('rule_actions_fieldset')) { - var actionsForm = new VarienRulesForm('rule_actions_fieldset', '<?php echo $this->getNewActionChildUrl() ?>'); - } -*/ -</script> + diff --git a/app/code/Magento/Checkout/view/frontend/templates/onepage.phtml b/app/code/Magento/Checkout/view/frontend/templates/onepage.phtml index f8e5b4d5aa56d03ebecfef1595d5c79afbbfe9b2..cceca23a050483cd6c241ac253a98ac85bc50a32 100644 --- a/app/code/Magento/Checkout/view/frontend/templates/onepage.phtml +++ b/app/code/Magento/Checkout/view/frontend/templates/onepage.phtml @@ -27,24 +27,34 @@ $_paymentBlock = $this->getLayout()->getBlock('checkout.onepage.payment'); </ol> <script> require([ - "jquery", - "mage/mage" -], function($){ + "underscore", + "accordion", + "opcOrderReview", +], function(_, accordion, opcOrderReview){ 'use strict'; - $(document).ready(function() { - $('#checkoutSteps').mage('accordion',{ - 'collapsibleElement' : ' > li', - 'openedState' : 'active' - }).mage('opcOrderReview', $.extend({ - 'checkoutAgreements': '#checkout-agreements', - 'checkoutProgressContainer': '#checkout-progress-wrapper', - 'methodDescription': '.items' - }, - <?php echo $this->helper('Magento\Core\Helper\Data')->jsonEncode($_paymentBlock->getOptions()); ?> - )); - }); + /** + * @todo refactor opcCheckoutMethod + * + * Initializiation of this components can't be moved to a data-mage-init attribute + * due to dependencies between instances of opcCheckoutMethod and mage.accordion. + * Thus initializiation has to be synchronyous. + */ + var elem = document.getElementById('checkoutSteps'), + opcConfig; + opcConfig = _.extend({ + 'checkoutAgreements': '#checkout-agreements', + 'checkoutProgressContainer': '#checkout-progress-wrapper', + 'methodDescription': '.items' + },<?php echo $this->helper('Magento\Core\Helper\Data')->jsonEncode($_paymentBlock->getOptions()); ?>); + + accordion({ + 'collapsibleElement': ' > li', + 'openedState': 'active' + }, elem); + + opcOrderReview(opcConfig, elem); }); </script> </div> diff --git a/app/code/Magento/Checkout/view/frontend/web/js/accordion.js b/app/code/Magento/Checkout/view/frontend/web/js/accordion.js deleted file mode 100644 index 9793d45d07a713907d7408ef80bf55369c4e9127..0000000000000000000000000000000000000000 --- a/app/code/Magento/Checkout/view/frontend/web/js/accordion.js +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ -/*jshint jquery:true browser:true*/ -define([ - "jquery", - "jquery/ui" -], function($){ - 'use strict'; - - // mage.accordion base functionality - $.widget('mage.accordion', $.ui.accordion, { - options: { - heightStyle: 'content', - animate: false, - beforeActivate: function(e, ui) { - // Make sure sections below current are not clickable and sections above are clickable - var newPanelParent = $(ui.newPanel).parent(); - if (!newPanelParent.hasClass('allow')) { - return false; - } - newPanelParent.addClass('active allow').prevAll().addClass('allow'); - newPanelParent.nextAll().removeClass('allow'); - $(ui.oldPanel).parent().removeClass('active'); - } - }, - - /** - * Accordion creation - * @protected - */ - _create: function() { - // Custom to enable section - this.element.on('enableSection', function(event, data) { - $(data.selector).addClass('allow').find('h2').trigger('click'); - }); - this._super(); - $(this.options.activeSelector).addClass('allow active').find('h2').trigger('click'); - } - }); - -}); \ No newline at end of file diff --git a/app/code/Magento/Checkout/view/frontend/web/js/opc-checkout-method.js b/app/code/Magento/Checkout/view/frontend/web/js/opc-checkout-method.js index 3eacc8103b7876f0872523a61fde3e9fff34ded7..09c2b3d679f566913ab356f527e991aa9bd78883 100644 --- a/app/code/Magento/Checkout/view/frontend/web/js/opc-checkout-method.js +++ b/app/code/Magento/Checkout/view/frontend/web/js/opc-checkout-method.js @@ -10,7 +10,6 @@ define([ "jquery", "jquery/ui", "mage/validation/validation", - "Magento_Checkout/js/accordion", "mage/translate" ], function($){ 'use strict'; diff --git a/app/code/Magento/Cms/view/adminhtml/layout/cms_block_edit.xml b/app/code/Magento/Cms/view/adminhtml/layout/cms_block_edit.xml index 03af8aeac67ac07873d6fd399e85f1c2b9dd816e..8d00302c4285be19d50cd64e961f707a19abcafb 100644 --- a/app/code/Magento/Cms/view/adminhtml/layout/cms_block_edit.xml +++ b/app/code/Magento/Cms/view/adminhtml/layout/cms_block_edit.xml @@ -8,7 +8,6 @@ <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"> <head> <css src="jquery/fileUploader/css/jquery.fileupload-ui.css"/> - <link src="jquery/fileUploader/bootstrap.js"/> </head> <update handle="editor"/> <body> diff --git a/app/code/Magento/Cms/view/adminhtml/layout/cms_page_edit.xml b/app/code/Magento/Cms/view/adminhtml/layout/cms_page_edit.xml index f092cf3a9075169a59fccb4d60e8b284b58df5fc..dc56780bbdca4e0c03883c6f3e1a7161575ad15a 100644 --- a/app/code/Magento/Cms/view/adminhtml/layout/cms_page_edit.xml +++ b/app/code/Magento/Cms/view/adminhtml/layout/cms_page_edit.xml @@ -8,7 +8,6 @@ <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" layout="admin-2columns-left" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"> <head> <css src="jquery/fileUploader/css/jquery.fileupload-ui.css"/> - <link src="jquery/fileUploader/bootstrap.js"/> </head> <update handle="editor"/> <body> diff --git a/app/code/Magento/ConfigurableProduct/view/adminhtml/templates/catalog/product/edit/super/attribute-template.phtml b/app/code/Magento/ConfigurableProduct/view/adminhtml/templates/catalog/product/edit/super/attribute-template.phtml index 88919daee9bf51da1ef87a700003988109aa95bd..4a167b16efefbf8a2a732446ee25c52b7ccffe3c 100644 --- a/app/code/Magento/ConfigurableProduct/view/adminhtml/templates/catalog/product/edit/super/attribute-template.phtml +++ b/app/code/Magento/ConfigurableProduct/view/adminhtml/templates/catalog/product/edit/super/attribute-template.phtml @@ -57,6 +57,7 @@ $id = $this->escapeHtml($attribute['attribute_id']); <div class="control"> <input type="text" value="<?php echo $this->escapeHtml($attribute['label']); ?>" name="product[configurable_attributes_data][<?php echo $id ?>][label]" + data-mage-init='{"useDefault": {}}' data-store-label="<?php echo $this->escapeHtml($attribute['label']); ?>" class="store-label required-entry"/> </div> diff --git a/app/code/Magento/ConfigurableProduct/view/adminhtml/templates/product/configurable/affected-attribute-set-selector/js.phtml b/app/code/Magento/ConfigurableProduct/view/adminhtml/templates/product/configurable/affected-attribute-set-selector/js.phtml index e152ac03776bc1845dda01ced8b348e22a3bf322..e723742e8f57a9b2be75c2f9e312588bd32a643e 100644 --- a/app/code/Magento/ConfigurableProduct/view/adminhtml/templates/product/configurable/affected-attribute-set-selector/js.phtml +++ b/app/code/Magento/ConfigurableProduct/view/adminhtml/templates/product/configurable/affected-attribute-set-selector/js.phtml @@ -9,7 +9,9 @@ /* @var $this \Magento\ConfigurableProduct\Block\Product\Configurable\AttributeSelector */ ?> <script> -(function($){ +(function(){ + 'use strict'; + var $form; require([ @@ -17,8 +19,6 @@ "jquery/ui", "Magento_ConfigurableProduct/catalog/product-variation" ], function($){ - 'use strict'; - $form = $('#affected-attribute-set-form'); var resetValidation = function() { @@ -101,37 +101,43 @@ } }); }); + + require([ + 'jquery' + ], function ($) { + + /** + * This fix was made in order to properly handle 'stopImmediatePropagation'. + */ + $('#save-split-button .item').on('click', function(event) { + if ($('#new-variations-attribute-set-id').val() != '') { + return; // affected attribute set was already chosen + } - /** - * This fix was made in order to properly handle 'stopImmediatePropagation'. - */ - $('#save-split-button .item').on('click', function(event) { - if ($('#new-variations-attribute-set-id').val() != '') { - return; // affected attribute set was already chosen - } - - var extendingAttributes = []; + var extendingAttributes = []; - $.each($('#configurable-attributes-container').variationsAttributes('getAttributes'), function () { - if (!$('#attribute-' + this.code + '-container').length) { - extendingAttributes.push(this.id); + $.each($('#configurable-attributes-container').variationsAttributes('getAttributes'), function () { + if (!$('#attribute-' + this.code + '-container').length) { + extendingAttributes.push(this.id); + } + }); + if (!extendingAttributes.length) { + $('#new-variations-attribute-set-id').val($('#attribute_set_id').val()); + return; // all selected configurable attributes belong to current attribute set + } + if (!$('[data-role=product-variations-matrix] [data-column=entity_id]:checked') + .closest('tr').has('input[name$="[name]"]').length + ) { + return; // no new simple products to save from matrix: uniting attribute set is not needed } + + event.stopImmediatePropagation(); + + $form.data('target', event.target) + .dialog('open'); }); - if (!extendingAttributes.length) { - $('#new-variations-attribute-set-id').val($('#attribute_set_id').val()); - return; // all selected configurable attributes belong to current attribute set - } - if (!$('[data-role=product-variations-matrix] [data-column=entity_id]:checked') - .closest('tr').has('input[name$="[name]"]').length - ) { - return; // no new simple products to save from matrix: uniting attribute set is not needed - } - - event.stopImmediatePropagation(); - - $form.data('target', event.target) - .dialog('open'); + }); -})(jQuery); +})(); </script> diff --git a/app/code/Magento/ConfigurableProduct/view/adminhtml/web/catalog/product-variation.js b/app/code/Magento/ConfigurableProduct/view/adminhtml/web/catalog/product-variation.js index b78fe9de77fdd1485485f71989fb3c0a659a910e..bebd4c132fee619f599c80ce4e16b96bc8137f35 100644 --- a/app/code/Magento/ConfigurableProduct/view/adminhtml/web/catalog/product-variation.js +++ b/app/code/Magento/ConfigurableProduct/view/adminhtml/web/catalog/product-variation.js @@ -6,7 +6,8 @@ define([ "jquery", "jquery/ui", "jquery/template", - "js/theme" + "useDefault", + "collapsable" ], function($){ "use strict"; diff --git a/app/code/Magento/ConfigurableProduct/view/adminhtml/web/catalog/product/attribute.js b/app/code/Magento/ConfigurableProduct/view/adminhtml/web/catalog/product/attribute.js index c36c4e2cdf5001f6fc8bc0a0d5f2e54265a7ea73..726cf4ddfbd0ce482ea77969fe7d1d08534a5117 100644 --- a/app/code/Magento/ConfigurableProduct/view/adminhtml/web/catalog/product/attribute.js +++ b/app/code/Magento/ConfigurableProduct/view/adminhtml/web/catalog/product/attribute.js @@ -3,15 +3,16 @@ * See COPYING.txt for license details. */ define([ - "jquery", - "jquery/ui", - "Magento_Catalog/catalog/product" -], function($){ - "use strict"; - - $.widget("mage.configurableAttribute", $.mage.productAttributes, { - _prepareUrl: function() { + 'jquery', + 'jquery/ui', + 'Magento_Catalog/catalog/product-attributes' +], function ($) { + 'use strict'; + + $.widget('mage.configurableAttribute', $.mage.productAttributes, { + _prepareUrl: function () { var name = $('#configurable-attribute-selector').val(); + return this.options.url + (/\?/.test(this.options.url) ? '&' : '?') + 'set=' + window.encodeURIComponent($('#attribute_set_id').val()) + @@ -21,4 +22,4 @@ define([ }); return $.mage.configurableAttribute; -}); \ No newline at end of file +}); diff --git a/app/code/Magento/Customer/view/frontend/requirejs-config.js b/app/code/Magento/Customer/view/frontend/requirejs-config.js index 96f981792ca15ea85e9b51b7da70ee370ba9c375..db206e3a4ab1281a7cc85db30ddf89945fea3f72 100644 --- a/app/code/Magento/Customer/view/frontend/requirejs-config.js +++ b/app/code/Magento/Customer/view/frontend/requirejs-config.js @@ -10,8 +10,5 @@ var config = { address: 'Magento_Customer/address', setPassword: 'Magento_Customer/set-password' } - }, - deps: [ - 'mage/validation/dob-rule' - ] + } }; \ No newline at end of file diff --git a/app/code/Magento/DesignEditor/view/adminhtml/templates/editor/form/renderer/composite.phtml b/app/code/Magento/DesignEditor/view/adminhtml/templates/editor/form/renderer/composite.phtml index a34053ec0c2740c11d36c03fbf7e3fa529e9939e..e947befe7f23f5bb0e52ba8e66b3e50f2958f1c2 100644 --- a/app/code/Magento/DesignEditor/view/adminhtml/templates/editor/form/renderer/composite.phtml +++ b/app/code/Magento/DesignEditor/view/adminhtml/templates/editor/form/renderer/composite.phtml @@ -54,7 +54,7 @@ $advancedAfter = $element->getAdvancedPosition() == 'after'; // To place advance <?php if ($element->hasAdvanced() && !$isField): ?> <?php echo(!$element->getNoContainer() && $advancedAfter) ? '</fieldset>' : ''?> - <details class="details" id="details<?php echo $id ?>"> + <details data-mage-init='{"details": {}}' class="details" id="details<?php echo $id ?>"> <summary class="details-summary" id="details-summary<?php echo $id ?>"> <span><?php echo $element->getAdvancedLabel() ?></span> </summary> diff --git a/app/code/Magento/DesignEditor/view/adminhtml/templates/editor/tools/files/tree.phtml b/app/code/Magento/DesignEditor/view/adminhtml/templates/editor/tools/files/tree.phtml index e9e1812bab50901beed54065b479bd736e2e9056..8357022aa95b11f752cd72ed74c4d34ff6ad5003 100644 --- a/app/code/Magento/DesignEditor/view/adminhtml/templates/editor/tools/files/tree.phtml +++ b/app/code/Magento/DesignEditor/view/adminhtml/templates/editor/tools/files/tree.phtml @@ -32,6 +32,7 @@ <script> require([ 'jquery', + "extjs/ext-tree-checkbox", 'Magento_DesignEditor/js/tools-files' ], function(jQuery){ diff --git a/app/code/Magento/DesignEditor/view/adminhtml/web/js/quick-style-uploader.js b/app/code/Magento/DesignEditor/view/adminhtml/web/js/quick-style-uploader.js index f947ab8094df7e7236e281e38dcbcaf0847504f3..b14f9c05dfb502233766611b54051c672171bbce 100644 --- a/app/code/Magento/DesignEditor/view/adminhtml/web/js/quick-style-uploader.js +++ b/app/code/Magento/DesignEditor/view/adminhtml/web/js/quick-style-uploader.js @@ -6,6 +6,7 @@ define([ "jquery", "jquery/ui", + "loadingPopup", "mage/translate", "jquery/file-uploader" ], function($){ diff --git a/app/code/Magento/DesignEditor/view/adminhtml/web/js/theme-delete.js b/app/code/Magento/DesignEditor/view/adminhtml/web/js/theme-delete.js index 966f82e67a21f02afe9baa6d71508ecfc8a3418d..27cc9306eb3d40ab24b7692091a6847cf0c5e58e 100644 --- a/app/code/Magento/DesignEditor/view/adminhtml/web/js/theme-delete.js +++ b/app/code/Magento/DesignEditor/view/adminhtml/web/js/theme-delete.js @@ -6,6 +6,7 @@ define([ "jquery", "jquery/ui", + "loadingPopup", "mage/translate", "jquery/template", "Magento_DesignEditor/js/dialog" diff --git a/app/code/Magento/DesignEditor/view/adminhtml/web/js/theme-selector.js b/app/code/Magento/DesignEditor/view/adminhtml/web/js/theme-selector.js index 4d3fecaca988a67a9da50211093fef35aa408047..f59b25065634b691e5c900292c1559513b08df88 100644 --- a/app/code/Magento/DesignEditor/view/adminhtml/web/js/theme-selector.js +++ b/app/code/Magento/DesignEditor/view/adminhtml/web/js/theme-selector.js @@ -6,6 +6,7 @@ define([ "jquery", "jquery/ui", "mage/translate", + "loadingPopup", "Magento_DesignEditor/js/dialog" ], function($){ diff --git a/app/code/Magento/DesignEditor/view/adminhtml/web/js/tools-files.js b/app/code/Magento/DesignEditor/view/adminhtml/web/js/tools-files.js index 778a9c31892b3ecdb8ed4f09418c5b40d27d4e32..303f14a1655b1fbf8a59c0df0ff0384f88da1399 100644 --- a/app/code/Magento/DesignEditor/view/adminhtml/web/js/tools-files.js +++ b/app/code/Magento/DesignEditor/view/adminhtml/web/js/tools-files.js @@ -4,13 +4,15 @@ */ define([ "jquery", + "tinymce", "jquery/ui", "Magento_DesignEditor/js/dialog", - "js/theme", + "loadingPopup", "mage/translate", "prototype", + "extjs/ext-tree-checkbox", "mage/adminhtml/events" -], function(jQuery){ +], function(jQuery, tinyMCE){ window.MediabrowserUtility = { getMaxZIndex: function() { diff --git a/app/code/Magento/Downloadable/view/adminhtml/requirejs-config.js b/app/code/Magento/Downloadable/view/adminhtml/requirejs-config.js deleted file mode 100644 index 9a1c74b7db537f745b173702514cdbd28cfde7a3..0000000000000000000000000000000000000000 --- a/app/code/Magento/Downloadable/view/adminhtml/requirejs-config.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ - -var config = { - deps: [ - 'Magento_Downloadable/product/validation-rules' - ] -}; \ No newline at end of file diff --git a/app/code/Magento/Downloadable/view/adminhtml/templates/product/edit/downloadable/links.phtml b/app/code/Magento/Downloadable/view/adminhtml/templates/product/edit/downloadable/links.phtml index 63e1d5dd1a39ea67eae20fbe854e8e070c891485..23a7b83b384a9758a2d4238576a1a242f7c4678c 100644 --- a/app/code/Magento/Downloadable/view/adminhtml/templates/product/edit/downloadable/links.phtml +++ b/app/code/Magento/Downloadable/view/adminhtml/templates/product/edit/downloadable/links.phtml @@ -74,8 +74,7 @@ require([ 'Magento_Ui/js/lib/registry/registry', 'jquery/file-uploader', 'mage/mage', - 'prototype', - + 'prototype' ], function(jQuery, registry){ registry.get('downloadable', function (Downloadable) { var linkTemplate = '<tr>'+ diff --git a/app/code/Magento/Downloadable/view/adminhtml/web/product/validation-rules.js b/app/code/Magento/Downloadable/view/adminhtml/web/product/validation-rules.js deleted file mode 100644 index 1475edbe7627b02bf1cdfa6350cf38bb7a46e5b7..0000000000000000000000000000000000000000 --- a/app/code/Magento/Downloadable/view/adminhtml/web/product/validation-rules.js +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Downloadable client side validation rules - * - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ -/*global newFileContainer:true, alertAlreadyDisplayed:true, alert:true, linkType:true*/ -define([ - "jquery", - "mage/validation", - "mage/translate" -], function($){ - - $.validator.addMethod('validate-downloadable-file', function (v, element) { - var elmParent = $(element).parent(), - linkType = elmParent.find('input[value="file"]'); - if (linkType.is(':checked') && (v === '' || v === '[]')) { - newFileContainer = elmParent.find('.new-file'); - if (!alertAlreadyDisplayed && (newFileContainer.empty() || newFileContainer.is(':visible'))) { - alertAlreadyDisplayed = true; - alert($.mage.__('There are files that were selected but not uploaded yet. ' + - 'Please upload or remove them first') - ); - } - return false; - } - return true; - }, 'Please upload a file.'); - $.validator.addMethod('validate-downloadable-url', function (v, element) { - linkType = $(element).parent().find('input[value="url"]'); - if (linkType.is(':checked') && v === '') { - return false; - } - return true; - }, 'Please specify Url.'); - -}); \ No newline at end of file diff --git a/app/code/Magento/Email/view/adminhtml/layout/adminhtml_email_template_edit.xml b/app/code/Magento/Email/view/adminhtml/layout/adminhtml_email_template_edit.xml deleted file mode 100644 index 8d9dba4423b6553b94915817937214c84c14315e..0000000000000000000000000000000000000000 --- a/app/code/Magento/Email/view/adminhtml/layout/adminhtml_email_template_edit.xml +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0"?> -<!-- -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ ---> -<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"> - <head> - <link src="Magento_Email::js/bootstrap.js"/> - </head> - <body/> -</page> diff --git a/app/code/Magento/Email/view/adminhtml/templates/template/edit.phtml b/app/code/Magento/Email/view/adminhtml/templates/template/edit.phtml index 5c1ae09ee32b085bb7ad06d7bd918abfcf8fd427..1c34ee1cdc08371e964db018c8b0bf30788af981 100644 --- a/app/code/Magento/Email/view/adminhtml/templates/template/edit.phtml +++ b/app/code/Magento/Email/view/adminhtml/templates/template/edit.phtml @@ -55,9 +55,10 @@ <script> require([ "jquery", + "tinymce", "mage/mage", "Magento_Backend/variables" -], function(jQuery){ +], function(jQuery, tinyMCE){ //<![CDATA[ jQuery('#email_template_edit_form').mage('form').mage('validation'); diff --git a/app/code/Magento/Email/view/adminhtml/templates/template/list.phtml b/app/code/Magento/Email/view/adminhtml/templates/template/list.phtml index 0f136e1bfbc4819a3c3f24b08a921917ff04e1bb..4c89bd3f39005a65fc6adb54a26e4f9fc0449fcb 100644 --- a/app/code/Magento/Email/view/adminhtml/templates/template/list.phtml +++ b/app/code/Magento/Email/view/adminhtml/templates/template/list.phtml @@ -7,5 +7,5 @@ // @codingStandardsIgnoreFile ?> -<div class="page-actions"><?php echo $this->getChildHtml('add_button') ?></div> +<div data-mage-init='{"floatingHeader": {}}' class="page-actions"><?php echo $this->getChildHtml('add_button') ?></div> <?php echo $this->getChildHtml('grid') ?> diff --git a/app/code/Magento/Email/view/adminhtml/web/js/bootstrap.js b/app/code/Magento/Email/view/adminhtml/web/js/bootstrap.js deleted file mode 100644 index abce180320179331fc97b86f337d364a281a1a87..0000000000000000000000000000000000000000 --- a/app/code/Magento/Email/view/adminhtml/web/js/bootstrap.js +++ /dev/null @@ -1,8 +0,0 @@ -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ - -require([ - 'Magento_Backend/variables' -]); \ No newline at end of file diff --git a/app/code/Magento/GoogleShopping/view/adminhtml/layout/adminhtml_googleshopping_items_index.xml b/app/code/Magento/GoogleShopping/view/adminhtml/layout/adminhtml_googleshopping_items_index.xml index acc2689a5954921a99ec52926fa831e912952dcb..068c8ec6a74270a13644c4f7e1b74c4168f1e451 100644 --- a/app/code/Magento/GoogleShopping/view/adminhtml/layout/adminhtml_googleshopping_items_index.xml +++ b/app/code/Magento/GoogleShopping/view/adminhtml/layout/adminhtml_googleshopping_items_index.xml @@ -6,9 +6,6 @@ */ --> <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"> - <head> - <link src="Magento_GoogleShopping::js/bootstrap.js"/> - </head> <body> <referenceContainer name="page.main.actions"> <block class="Magento\Backend\Block\Store\Switcher" name="store_switcher" template="Magento_Backend::store/switcher.phtml"/> diff --git a/app/code/Magento/GoogleShopping/view/adminhtml/templates/items.phtml b/app/code/Magento/GoogleShopping/view/adminhtml/templates/items.phtml index 15de0a51f35684c4111ee873df9ed4edb52c1962..e68c4187250388c0554de5f697502b92a2d16e35 100644 --- a/app/code/Magento/GoogleShopping/view/adminhtml/templates/items.phtml +++ b/app/code/Magento/GoogleShopping/view/adminhtml/templates/items.phtml @@ -15,7 +15,7 @@ </div> <div class="grid-title"> - <div class="page-actions"><?php echo $this->getAddButtonHtml() ?></div> + <div data-mage-init='{"floatingHeader": {}}' class="page-actions"><?php echo $this->getAddButtonHtml() ?></div> <span class="title"><?php echo __('Available Products') ?></span> </div> <div data-mage-init='{"loader": {}}' data-container="products" class="available-products"> diff --git a/app/code/Magento/GoogleShopping/view/adminhtml/web/js/bootstrap.js b/app/code/Magento/GoogleShopping/view/adminhtml/web/js/bootstrap.js deleted file mode 100644 index caebbd508b0392846fea0174e5326d41ab41334c..0000000000000000000000000000000000000000 --- a/app/code/Magento/GoogleShopping/view/adminhtml/web/js/bootstrap.js +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ - require([ - "Magento_GoogleShopping/googleshopping" - ]); \ No newline at end of file diff --git a/app/code/Magento/ImportExport/view/adminhtml/templates/export/form/filter/after.phtml b/app/code/Magento/ImportExport/view/adminhtml/templates/export/form/filter/after.phtml index 08f4d9c572593d2eb56605ba710ba83943f49d69..996f60380e526c00494bc92b982533f6f2f12532 100644 --- a/app/code/Magento/ImportExport/view/adminhtml/templates/export/form/filter/after.phtml +++ b/app/code/Magento/ImportExport/view/adminhtml/templates/export/form/filter/after.phtml @@ -5,13 +5,16 @@ */ ?> <script> -//<![CDATA[ -if (window['export_filter_gridJsObject'] != undefined) { - export_filter_gridJsObject.resetFilter = function () { - return varienGrid.prototype.resetFilter.call(this, varienExport.modifyFilterGrid); - }; - export_filter_gridJsObject.doFilter = function () { - return varienGrid.prototype.doFilter.call(this, varienExport.modifyFilterGrid); - }; -} +require([ + 'mage/adminhtml/grid' +], function(){ + if (window['export_filter_gridJsObject'] != undefined) { + export_filter_gridJsObject.resetFilter = function () { + return varienGrid.prototype.resetFilter.call(this, varienExport.modifyFilterGrid); + }; + export_filter_gridJsObject.doFilter = function () { + return varienGrid.prototype.doFilter.call(this, varienExport.modifyFilterGrid); + }; + } +}); </script> diff --git a/app/code/Magento/Msrp/Plugin/Bundle/Block/Adminhtml/Catalog/Product/Edit/Tab/Attributes.php b/app/code/Magento/Msrp/Plugin/Bundle/Block/Adminhtml/Catalog/Product/Edit/Tab/Attributes.php index 78f19112ba19bbfc81b9602acf18f917c280f115..c91e6cdf0c80e519b6109cf6a8845a24774ad696 100644 --- a/app/code/Magento/Msrp/Plugin/Bundle/Block/Adminhtml/Catalog/Product/Edit/Tab/Attributes.php +++ b/app/code/Magento/Msrp/Plugin/Bundle/Block/Adminhtml/Catalog/Product/Edit/Tab/Attributes.php @@ -23,6 +23,7 @@ class Attributes $mapEnabled->setAfterElementHtml( '<script>' . " + require(['prototype'], function(){ function changePriceTypeMap() { if ($('price_type').value == " . \Magento\Bundle\Model\Product\Price::PRICE_TYPE_DYNAMIC . ") { $('msrp_display_actual_price_type').setValue(" . Price::TYPE_USE_CONFIG . "); @@ -34,9 +35,10 @@ class Attributes $('msrp').enable(); } } - document.observe('dom:loaded', function() { - $('price_type').observe('change', changePriceTypeMap); - changePriceTypeMap(); + + $('price_type').observe('change', changePriceTypeMap); + changePriceTypeMap(); + }); " . '</script>' diff --git a/app/code/Magento/Newsletter/composer.json b/app/code/Magento/Newsletter/composer.json index 6a42aa3339296263f34ebd10ab3fa75a484afbc2..f6d1c6ad2181408810ccf36514ecff9e2b6a932e 100644 --- a/app/code/Magento/Newsletter/composer.json +++ b/app/code/Magento/Newsletter/composer.json @@ -12,6 +12,7 @@ "magento/module-email": "0.42.0-beta5", "magento/module-cron": "0.42.0-beta5", "magento/module-eav": "0.42.0-beta5", + "magento/module-require-js": "0.42.0-beta5", "magento/framework": "0.42.0-beta5", "magento/magento-composer-installer": "*" }, diff --git a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_queue_edit.xml b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_queue_edit.xml index 48d3a040809e562a52516db66c5a3c3ce6bd6232..d56d1d79a1a2c149854274d47ca463cfd69db481 100644 --- a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_queue_edit.xml +++ b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_queue_edit.xml @@ -8,7 +8,6 @@ <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"> <head> <css src="jquery/fileUploader/css/jquery.fileupload-ui.css"/> - <link src="jquery/fileUploader/bootstrap.js"/> </head> <update handle="editor"/> <body> diff --git a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_template_edit.xml b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_template_edit.xml index 6a812bb21cc5d6c728c41749ff202632ac773371..8c236ed2b11bea5f999cab9c08db6ab3951ac387 100644 --- a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_template_edit.xml +++ b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_template_edit.xml @@ -8,7 +8,6 @@ <page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"> <head> <css src="jquery/fileUploader/css/jquery.fileupload-ui.css"/> - <link src="jquery/fileUploader/bootstrap.js"/> </head> <update handle="editor"/> <body> diff --git a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_template_preview.xml b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_template_preview.xml index 76f9bc780ae851137224db1eb268a84b8c8cfdcc..cb7ac6cb26d428cbe1f5c7d4ee00f0e943364286 100644 --- a/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_template_preview.xml +++ b/app/code/Magento/Newsletter/view/adminhtml/layout/newsletter_template_preview.xml @@ -15,6 +15,7 @@ <block class="Magento\Newsletter\Block\Adminhtml\Queue\Preview\Form" name="preview_form"/> <block class="Magento\Backend\Block\Store\Switcher" name="store_switcher" template="Magento_Backend::store/switcher.phtml"/> </block> + <block class="Magento\RequireJs\Block\Html\Head\Config" name="requirejs-config"/> </referenceContainer> </body> </page> diff --git a/app/code/Magento/Newsletter/view/adminhtml/templates/preview/iframeswitcher.phtml b/app/code/Magento/Newsletter/view/adminhtml/templates/preview/iframeswitcher.phtml index cf09d83f1df88cfaeb3d991ba09c4f30ff5fe579..9381067e1cd0512a98548be81413d6e02de6c09b 100644 --- a/app/code/Magento/Newsletter/view/adminhtml/templates/preview/iframeswitcher.phtml +++ b/app/code/Magento/Newsletter/view/adminhtml/templates/preview/iframeswitcher.phtml @@ -20,7 +20,7 @@ </div> <script> -require(['jquery', 'js/theme', 'prototype'], function(jQuery){ +require(['jquery', 'loadingPopup', 'prototype'], function(jQuery){ //<![CDATA[ var previewForm = $('preview_form'); diff --git a/app/code/Magento/Newsletter/view/adminhtml/templates/queue/edit.phtml b/app/code/Magento/Newsletter/view/adminhtml/templates/queue/edit.phtml index bfb2eb9c81c064a57b703612312098eb584097b1..e7899c94eac678b5dfd82157d004c5d4cdf5d696 100644 --- a/app/code/Magento/Newsletter/view/adminhtml/templates/queue/edit.phtml +++ b/app/code/Magento/Newsletter/view/adminhtml/templates/queue/edit.phtml @@ -8,7 +8,7 @@ /* @var $this \Magento\Newsletter\Block\Adminhtml\Queue\Edit */ ?> -<div class="page-actions"> +<div data-mage-init='{"floatingHeader": {}}' class="page-actions"> <?php echo $this->getBackButtonHtml() ?> <?php echo $this->getPreviewButtonHtml(); ?> <?php if (!$this->getIsPreview()): ?> @@ -34,7 +34,12 @@ </div> </form> <script> -require(['jquery', 'mage/mage', 'prototype'], function(jQuery){ +require([ + 'jquery', + 'tinymce', + 'mage/mage', + 'prototype' +], function(jQuery, tinyMCE){ //<![CDATA[ jQuery('#queue_edit_form').mage('form').mage('validation'); diff --git a/app/code/Magento/Newsletter/view/adminhtml/templates/template/edit.phtml b/app/code/Magento/Newsletter/view/adminhtml/templates/template/edit.phtml index f4d7f8f1d5a14bc64c21f8f3decd727002347c4d..02e41d7e26fe995b683508dc71b1349c64bd5b20 100644 --- a/app/code/Magento/Newsletter/view/adminhtml/templates/template/edit.phtml +++ b/app/code/Magento/Newsletter/view/adminhtml/templates/template/edit.phtml @@ -26,7 +26,12 @@ </div> </form> <script> -require(['jquery', 'mage/mage', 'prototype'], function(jQuery){ +require([ + 'jquery', + 'tinymce', + 'mage/mage', + 'prototype' +], function(jQuery, tinyMCE){ //<![CDATA[ jQuery('#newsletter_template_edit_form').mage('form').mage('validation'); diff --git a/app/code/Magento/Newsletter/view/frontend/requirejs-config.js b/app/code/Magento/Newsletter/view/frontend/requirejs-config.js deleted file mode 100644 index 7baa7c9c7f41e9c917416752a7959352f5f3ac3d..0000000000000000000000000000000000000000 --- a/app/code/Magento/Newsletter/view/frontend/requirejs-config.js +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ - -var config = { - map: { - '*': { - newsletter: 'Magento_Newsletter/newsletter' - } - } -}; \ No newline at end of file diff --git a/app/code/Magento/Newsletter/view/frontend/templates/subscribe.phtml b/app/code/Magento/Newsletter/view/frontend/templates/subscribe.phtml index b98b69a605794e4836b217d7cb9660d1ef0f4e1a..cfbee2042d35b62ad147b2545425bfbefc1b068d 100644 --- a/app/code/Magento/Newsletter/view/frontend/templates/subscribe.phtml +++ b/app/code/Magento/Newsletter/view/frontend/templates/subscribe.phtml @@ -10,14 +10,18 @@ <div class="block newsletter"> <div class="title"><strong>Newsletter</strong></div> <div class="content"> - <form class="form subscribe" action="<?php echo $this->getFormActionUrl() ?>" method="post" id="newsletter-validate-detail"> + <form class="form subscribe" + novalidate + action="<?php echo $this->getFormActionUrl() ?>" + method="post" + data-mage-init='{"validation": {"errorClass": "mage-error"}}' + id="newsletter-validate-detail"> <div class="field newsletter"> <label class="label" for="newsletter"><span><?php echo __('Sign Up for Our Newsletter:') ?></span></label> <div class="control"> <input name="email" type="email" id="newsletter" - placeholder="<?php echo __('Enter your email address') ?>" - data-mage-init='{"newsletter":{"formSelector": "#newsletter-validate-detail", "placeholder": "<?php echo __('Enter your email address') ?>"}}' - data-validate="{required:true, 'validate-email':true}"/> + placeholder="<?php echo __('Enter your email address') ?>" + data-validate="{required:true, 'validate-email':true}"/> </div> </div> <div class="actions"> diff --git a/app/code/Magento/Newsletter/view/frontend/web/newsletter.js b/app/code/Magento/Newsletter/view/frontend/web/newsletter.js deleted file mode 100644 index 7440e2c1a79921d2c690e1c5e4c93e48f8780835..0000000000000000000000000000000000000000 --- a/app/code/Magento/Newsletter/view/frontend/web/newsletter.js +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ -/*jshint browser:true jquery:true*/ -define([ - "jquery", - "jquery/ui", - "mage/validation/validation" -], function($){ - "use strict"; - - $.widget('mage.newsletter', { - options: { - errorClass: 'mage-error' - }, - _create: function() { - $(this.options.formSelector) - .validation({errorClass: this.options.errorClass}); - this.element.on('click', $.proxy(function(e) { - if ($(e.target).val() === this.options.placeholder) { - $(e.target).val(''); - } - }, this)).on('focusout', $.proxy(function(e) { - setTimeout($.proxy(function() { - if ($.trim($(e.target).val()) === '') { - $(e.target).val(this.options.placeholder); - } - }, this), 100); - }, this)); - } - }); - - return $.mage.newsletter; -}); \ No newline at end of file diff --git a/app/code/Magento/OfflineShipping/Block/Adminhtml/Form/Field/Import.php b/app/code/Magento/OfflineShipping/Block/Adminhtml/Form/Field/Import.php index b646ccf5bfdb3eacda4fa7683595a974483f7a69..a8d8102d57ca06fe44d9eb1406070cb59a41b9a4 100644 --- a/app/code/Magento/OfflineShipping/Block/Adminhtml/Form/Field/Import.php +++ b/app/code/Magento/OfflineShipping/Block/Adminhtml/Form/Field/Import.php @@ -34,6 +34,7 @@ class Import extends \Magento\Framework\Data\Form\Element\AbstractElement $html .= <<<EndHTML <script> + require(['prototype'], function(){ Event.observe($('carriers_tablerate_condition_name'), 'change', checkConditionName.bind(this)); function checkConditionName(event) { @@ -42,6 +43,7 @@ class Import extends \Magento\Framework\Data\Form\Element\AbstractElement $('time_condition').value = '_' + conditionNameElement.value + '/' + Math.random(); } } + }); </script> EndHTML; diff --git a/app/code/Magento/PageCache/view/frontend/requirejs-config.js b/app/code/Magento/PageCache/view/frontend/requirejs-config.js index 3bbfd7563f4eb18d657a38123d6057febccddaeb..ee4f512e0b7800ed5f71c7e568d7b1e41f798612 100644 --- a/app/code/Magento/PageCache/view/frontend/requirejs-config.js +++ b/app/code/Magento/PageCache/view/frontend/requirejs-config.js @@ -6,12 +6,7 @@ var config = { map: { '*': { - formKey: 'Magento_PageCache/js/form-key', pageCache: 'Magento_PageCache/js/page-cache' } - }, - deps: [ - 'Magento_PageCache/js/form-key', - 'Magento_PageCache/js/msg-box' - ] -}; \ No newline at end of file + } +}; diff --git a/app/code/Magento/PageCache/view/frontend/templates/javascript.phtml b/app/code/Magento/PageCache/view/frontend/templates/javascript.phtml index 2a3100b1acee5ff75c8e48ddff4086f8d589668e..25502193ff8ecd7271750666c9d1764ce3775fe6 100644 --- a/app/code/Magento/PageCache/view/frontend/templates/javascript.phtml +++ b/app/code/Magento/PageCache/view/frontend/templates/javascript.phtml @@ -7,15 +7,12 @@ <?php /** @var \Magento\PageCache\Block\Javascript $this */ ?> <script> require([ - "jquery", - "mage/mage" -], function(jQuery){ - - //<![CDATA[ - jQuery(function () { - jQuery('body').mage('pageCache', <?php echo $this->getScriptOptions(); ?>); - }); - //]]> + 'jquery', + 'pageCache', + 'domReady!' +], function($){ + 'use strict'; + $('body').pageCache(<?php echo $this->getScriptOptions(); ?>); }); </script> diff --git a/app/code/Magento/PageCache/view/frontend/web/js/comments.js b/app/code/Magento/PageCache/view/frontend/web/js/comments.js deleted file mode 100644 index 2a2522e5ccabc46f58bbe1b4863595fd1c46a27b..0000000000000000000000000000000000000000 --- a/app/code/Magento/PageCache/view/frontend/web/js/comments.js +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Finds all comment elements - * - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ -/*jshint browser:true jquery:true expr:true*/ -define([ - "jquery" -], function($){ - "use strict"; - $.fn.comments = function () { - var elements = []; - var lookup = function (el) { - if (el.is('iframe')) { - var hostName = window.location.hostname, - iFrameHostName = $('<a>').prop('href', el.prop('src')).prop('hostname'); - if (hostName != iFrameHostName) { - return elements; - } - } - el.contents().each(function (i, el) { - if (el.nodeType == 8) { - elements.push(el); - } else if (el.nodeType == 1) { - lookup($(el)); - } - }); - }; - lookup(this); - return elements; - }; - -}); \ No newline at end of file diff --git a/app/code/Magento/PageCache/view/frontend/web/js/form-key.js b/app/code/Magento/PageCache/view/frontend/web/js/form-key.js deleted file mode 100644 index d40f48c5a5ffb91b12fd5f5393578c1299ce8116..0000000000000000000000000000000000000000 --- a/app/code/Magento/PageCache/view/frontend/web/js/form-key.js +++ /dev/null @@ -1,46 +0,0 @@ -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ -define([ - "jquery", - "jquery/ui", - "mage/cookies" -], function($){ - "use strict"; - - /** - * FormKey Widget - this widget is generating from key, saves it to cookie and - */ - $.widget('mage.formKey', { - - options: { - inputSelector: 'input[name="form_key"]', - allowedCharacters: '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', - length: 16 - }, - - _create: function() { - var formKey = $.mage.cookies.get('form_key'); - if (!formKey) { - formKey = this._generate(this.options.allowedCharacters, this.options.length); - var date = new Date(); - date.setTime(date.getTime() + (365 * 24 * 60 * 60 * 1000)); - $.mage.cookies.set('form_key', formKey, {expires: date, path: '/'}); - } - $(this.options.inputSelector).val(formKey); - }, - - _generate: function(chars, length) { - var result = ''; - for (var i = length; i > 0; --i) result += chars[Math.round(Math.random() * (chars.length - 1))]; - return result; - } - }); - - $(function() { - $('body').formKey(); - }); - - return $.mage.formKey; -}); \ No newline at end of file diff --git a/app/code/Magento/PageCache/view/frontend/web/js/msg-box.js b/app/code/Magento/PageCache/view/frontend/web/js/msg-box.js deleted file mode 100644 index 8c107b6b2a27f29dfd2bcf286eb57d864ff160d7..0000000000000000000000000000000000000000 --- a/app/code/Magento/PageCache/view/frontend/web/js/msg-box.js +++ /dev/null @@ -1,34 +0,0 @@ -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ -/*jshint browser:true jquery:true expr:true*/ -define([ - "jquery", - "jquery/ui", - "mage/cookies" -], function($){ - "use strict"; - - /** - * MsgBox Widget checks if message box is displayed and sets cookie - */ - $.widget('mage.msgBox', { - options: { - msgBoxCookieName: 'message_box_display', - msgBoxSelector: '.main div.messages' - }, - _create: function() { - if ($.mage.cookies.get(this.options.msgBoxCookieName)) { - $.mage.cookies.set(this.options.msgBoxCookieName, null, {expires: new Date(), path: "/"}); - } else { - $(this.options.msgBoxSelector).hide(); - } - } - }); - - $(document).ready(function($){ - $('body').msgBox(); - }); - -}); \ No newline at end of file diff --git a/app/code/Magento/PageCache/view/frontend/web/js/page-cache.js b/app/code/Magento/PageCache/view/frontend/web/js/page-cache.js index b5106032d00444ec20e831de901ab19b606b5c5f..bc7708cf4dc88c424b67f4d1a33cf329342feb50 100644 --- a/app/code/Magento/PageCache/view/frontend/web/js/page-cache.js +++ b/app/code/Magento/PageCache/view/frontend/web/js/page-cache.js @@ -4,15 +4,109 @@ * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ -/*jshint browser:true jquery:true expr:true*/ + define([ - "jquery", - "jquery/ui", - "mage/cookies", - "Magento_PageCache/js/comments" -], function($){ - "use strict"; - + 'jquery', + 'domReady', + 'jquery/ui', + 'mage/cookies' +], function ($, domReady) { + 'use strict'; + + /** + * Nodes tree to flat list converter + * @returns {Array} + */ + $.fn.comments = function () { + var elements = []; + + /** + * @param {jQuery} element - Comment holder + */ + (function lookup(element) { + $(element).contents().each(function (index, el) { + switch (el.nodeType) { + case 1: // ELEMENT_NODE + lookup(el); + break; + + case 8: // COMMENT_NODE + elements.push(el); + break; + + case 9: // DOCUMENT_NODE + var hostName = window.location.hostname, + iFrameHostName = $('<a>') + .prop('href', element.prop('src')) + .prop('hostname'); + + if (hostName === iFrameHostName) { + lookup($(el).find('body')); + } + break; + } + }); + })(this); + + return elements; + }; + + /** + * MsgBox Widget checks if message box is displayed and sets cookie + */ + $.widget('mage.msgBox', { + options: { + msgBoxCookieName: 'message_box_display', + msgBoxSelector: '.main div.messages' + }, + + /** + * Creates widget 'mage.msgBox' + * @private + */ + _create: function () { + if ($.mage.cookies.get(this.options.msgBoxCookieName)) { + $.mage.cookies.clear(this.options.msgBoxCookieName); + } else { + $(this.options.msgBoxSelector).hide(); + } + } + }); + + /** + * FormKey Widget - this widget is generating from key, saves it to cookie and + */ + $.widget('mage.formKey', { + options: { + inputSelector: 'input[name="form_key"]', + allowedCharacters: '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', + length: 16 + }, + + /** + * Creates widget 'mage.formKey' + * @private + */ + _create: function () { + var date, + formKey = $.mage.cookies.get('form_key'); + + if (!formKey) { + formKey = generateRandomString(this.options.allowedCharacters, this.options.length); + date = new Date(); + date.setTime(date.getTime() + (365 * 24 * 60 * 60 * 1000)); + $.mage.cookies.set('form_key', formKey, { + expires: date, + path: '/' + }); + } + $(this.options.inputSelector).val(formKey); + } + }); + + /** + * PageCache Widget + */ $.widget('mage.pageCache', { options: { url: '/', @@ -21,26 +115,46 @@ define([ versionCookieName: 'private_content_version', handles: [] }, + + /** + * Creates widget 'mage.pageCache' + * @private + */ _create: function () { - var version = $.mage.cookies.get(this.options.versionCookieName); + var placeholders, + version = $.mage.cookies.get(this.options.versionCookieName); + if (!version) { - return ; + return; } - var placeholders = this._searchPlaceholders(this.element.comments()); - if (placeholders.length) { + placeholders = this._searchPlaceholders(this.element.comments()); + + if (placeholders && placeholders.length) { this._ajax(placeholders, version); } }, + + /** + * Parse page for placeholders. + * @param {Array} elements + * @returns {Array} + * @private + */ _searchPlaceholders: function (elements) { var placeholders = [], - tmp = {}; - if (!elements.length) { + tmp = {}, + ii, + len, + el, matches, name; + + if (!(elements && elements.length)) { return placeholders; } - for (var i = 0; i < elements.length; i++) { - var el = elements[i], - matches = this.options.patternPlaceholderOpen.exec(el.nodeValue), - name = null; + + for (ii = 0, len = elements.length; ii < len; ii++) { + el = elements[ii]; + matches = this.options.patternPlaceholderOpen.exec(el.nodeValue); + name = null; if (matches) { name = matches[1]; @@ -50,8 +164,10 @@ define([ }; } else { matches = this.options.patternPlaceholderClose.exec(el.nodeValue); + if (matches) { name = matches[1]; + if (tmp[name]) { tmp[name].closeElement = el; placeholders.push(tmp[name]); @@ -60,44 +176,74 @@ define([ } } } + return placeholders; }, - _replacePlaceholder: function(placeholder, html) { + + /** + * Parse for page and replace placeholders + * @param {Object} placeholder + * @param {Object} html + * @protected + */ + _replacePlaceholder: function (placeholder, html) { + if (!placeholder || !html) { + return; + } + var parent = $(placeholder.openElement).parent(), contents = parent.contents(), startReplacing = false, - prevSibling = null; - for (var y = 0; y < contents.length; y++) { - var element = contents[y]; + prevSibling = null, + yy, + len, + element; + + for (yy = 0, len = contents.length; yy < len; yy++) { + element = contents[yy]; + if (element == placeholder.openElement) { startReplacing = true; } + if (startReplacing) { $(element).remove(); } else if (element.nodeType != 8) { //due to comment tag doesn't have siblings we try to find it manually prevSibling = element; } + if (element == placeholder.closeElement) { break; } } + if (prevSibling) { $(prevSibling).after(html); } else { $(parent).prepend(html); } + // trigger event to use mage-data-init attribute $(parent).trigger('contentUpdated'); }, + + /** + * AJAX helper + * @param {Object} placeholders + * @param {String} version + * @private + */ _ajax: function (placeholders, version) { - var data = { - blocks: [], - handles: this.options.handles, - version: version - }; - for (var i = 0; i < placeholders.length; i++) { - data.blocks.push(placeholders[i].name); + var ii, + data = { + blocks: [], + handles: this.options.handles, + version: version + }; + + for (ii = 0; ii < placeholders.length; ii++) { + data.blocks.push(placeholders[ii].name); } data.blocks = JSON.stringify(data.blocks.sort()); data.handles = JSON.stringify(data.handles); @@ -108,18 +254,53 @@ define([ cache: true, dataType: 'json', context: this, + + /** + * Response handler + * @param {Object} response + */ success: function (response) { - for (var i = 0; i < placeholders.length; i++) { - var placeholder = placeholders[i]; - if (!response.hasOwnProperty(placeholder.name)) { - continue; + var placeholder, i; + + for (i = 0; i < placeholders.length; i++) { + placeholder = placeholders[i]; + + if (response.hasOwnProperty(placeholder.name)) { + this._replacePlaceholder(placeholder, response[placeholder.name]); } - this._replacePlaceholder(placeholder, response[placeholder.name]); } } }); } }); - - return $.mage.pageCache; + + domReady(function () { + $('body') + .msgBox() + .formKey(); + }); + + return { + 'pageCache': $.mage.pageCache, + 'formKey': $.mage.formKey, + 'msgBox': $.mage.msgBox + }; + + /** + * Helper. Generate random string + * TODO: Merge with mage/utils + * @param {String} chars - list of symbols + * @param {Number} length - length for need string + * @returns {String} + */ + function generateRandomString(chars, length) { + var result = ''; + length = length > 0 ? length : 1; + + while (length--) { + result += chars[Math.round(Math.random() * (chars.length - 1))]; + } + + return result; + } }); diff --git a/app/code/Magento/Reports/view/adminhtml/templates/report/refresh/statistics.phtml b/app/code/Magento/Reports/view/adminhtml/templates/report/refresh/statistics.phtml index 476eb5940c95c5eca090a4f04459bfd204a56abe..49c0d645a0b32e10d1340d549362a485f1a55f64 100644 --- a/app/code/Magento/Reports/view/adminhtml/templates/report/refresh/statistics.phtml +++ b/app/code/Magento/Reports/view/adminhtml/templates/report/refresh/statistics.phtml @@ -7,5 +7,5 @@ // @codingStandardsIgnoreFile ?> -<div class="page-actions"><?php echo $this->getButtonsHtml() ?></div> +<div data-mage-init='{"floatingHeader": {}}' class="page-actions"><?php echo $this->getButtonsHtml() ?></div> <?php echo $this->getChildHtml('grid') ?> diff --git a/app/code/Magento/Review/Block/Adminhtml/Add.php b/app/code/Magento/Review/Block/Adminhtml/Add.php index ce58795f990a07583fd59ebe119649066a5a23a9..d2eae2be459bfea0a49a03f171c17c8f40c6bda1 100644 --- a/app/code/Magento/Review/Block/Adminhtml/Add.php +++ b/app/code/Magento/Review/Block/Adminhtml/Add.php @@ -40,8 +40,8 @@ class Add extends \Magento\Backend\Block\Widget\Form\Container '; $this->_formInitScripts[] = ' - //<![CDATA[ - var review = function() { + require(["jquery","prototype"], function(jQuery){ + window.review = function() { return { productInfoUrl : null, formHidden : true, @@ -56,7 +56,16 @@ class Add extends \Magento\Backend\Block\Widget\Form\Container }, loadProductData : function() { - var con = new Ext.lib.Ajax.request(\'POST\', review.productInfoUrl, {success:review.reqSuccess,failure:review.reqFailure}, {form_key:FORM_KEY}); + jQuery.ajax({ + type: "POST", + url: review.productInfoUrl, + data: { + form_key: FORM_KEY + }, + showLoader: true, + success: review.reqSuccess, + error: review.reqFailure + }); }, showForm : function() { @@ -83,8 +92,7 @@ class Add extends \Magento\Backend\Block\Widget\Form\Container '", {parameters:params, evalScripts: true, onComplete:function(){ $(\'save_button\').disabled = false; } }); }, - reqSuccess :function(o) { - var response = Ext.util.JSON.decode(o.responseText); + reqSuccess :function(response) { if( response.error ) { alert(response.message); } else if( response.id ){ @@ -102,11 +110,12 @@ class Add extends \Magento\Backend\Block\Widget\Form\Container } }(); - Event.observe(window, \'load\', function(){ + Event.observe(window, \'load\', function(){ if ($("select_stores")) { Event.observe($("select_stores"), \'change\', review.updateRating); } - }); + }); + }); //]]> '; } diff --git a/app/code/Magento/Review/view/adminhtml/requirejs-config.js b/app/code/Magento/Review/view/adminhtml/requirejs-config.js deleted file mode 100644 index 3c9c2a068876ebfc1899dcec95e51eaebc76cb73..0000000000000000000000000000000000000000 --- a/app/code/Magento/Review/view/adminhtml/requirejs-config.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ - -var config = { - deps: [ - 'Magento_Review/rating/validation-rules' - ] -}; \ No newline at end of file diff --git a/app/code/Magento/Review/view/adminhtml/templates/add.phtml b/app/code/Magento/Review/view/adminhtml/templates/add.phtml index 5ccafd39f0f051294648d0f8f2d3455df38e05a8..783158b931fb87529ffcdd42dda93e64e524612d 100644 --- a/app/code/Magento/Review/view/adminhtml/templates/add.phtml +++ b/app/code/Magento/Review/view/adminhtml/templates/add.phtml @@ -4,7 +4,7 @@ * See COPYING.txt for license details. */ ?> -<div class="page-actions"> +<div data-mage-init='{"floatingHeader": {}}' class="page-actions"> <?php echo $this->getBackButtonHtml() ?> <?php echo $this->getResetButtonHtml() ?> <span class="hidden" id="formButtons"> diff --git a/app/code/Magento/Review/view/adminhtml/web/rating/validation-rules.js b/app/code/Magento/Review/view/adminhtml/web/rating/validation-rules.js deleted file mode 100644 index 3b2742d24c64fc10c03263d9787c072605f491e9..0000000000000000000000000000000000000000 --- a/app/code/Magento/Review/view/adminhtml/web/rating/validation-rules.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Rating validation rules - * - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ -define([ - "jquery", - "mage/validation" -], function($){ - - $.validator.addMethod( - 'validate-rating', - function () { - var ratings = $('#detailed_rating').find('.field-rating'), - noError = true; - - ratings.each(function (index, rating) { - noError = noError && $(rating).find('input:checked').length > 0; - }); - return noError; - }, - 'Please select one of each ratings above.'); - -}); \ No newline at end of file diff --git a/app/code/Magento/Review/view/frontend/templates/review.phtml b/app/code/Magento/Review/view/frontend/templates/review.phtml index 94453714fdf058b99201902dfaf8da1adbf319dc..deca6df9232fb3b0979e6f933a7f62abc9e731cf 100644 --- a/app/code/Magento/Review/view/frontend/templates/review.phtml +++ b/app/code/Magento/Review/view/frontend/templates/review.phtml @@ -9,45 +9,47 @@ <?php echo $this->getChildHtml(); ?> <script> -//<![CDATA[ -function processReviews(url,fromPages) { -(function($) { - $.ajax({ - url: url, - dataType: 'html' - }).done(function(data) { - $('#product-review-container').html(data); - $('.pages a').each(function(index, element) { - $(element).click(function(event) { - processReviews($(element).attr('href'), true); - event.preventDefault(); + require([ + 'jquery' + ], function ($) { + + function processReviews(url, fromPages) { + $.ajax({ + url: url, + dataType: 'html' + }).done(function (data) { + $('#product-review-container').html(data); + $('.pages a').each(function (index, element) { + $(element).click(function (event) { + processReviews($(element).attr('href'), true); + event.preventDefault(); + }); + }); + }).complete(function () { + if (fromPages == true) { + $('html, body').animate({ + scrollTop: $('#reviews').offset().top - 50 + }, 300); + } }); - }); - }).complete(function(){ - if (fromPages == true) { - $('html, body').animate({ - scrollTop: $('#reviews').offset().top - 50 - }, 300); } - }); -})(jQuery); -} -processReviews('<?php echo $this->getProductReviewUrl();?>'); -jQuery(function() { - jQuery('.product-info-main .reviews-actions a').click(function(event) { - event.preventDefault(); - var acnchor = jQuery(this).attr('href').replace(/^.*?(#|$)/,''); - jQuery(".product.data.items [data-role='content']").each(function(index){ - if(this.id == "reviews") { - jQuery(".product.data.items").tabs('activate',index); - jQuery('html, body').animate({ - scrollTop: jQuery('#' + acnchor).offset().top - 50 - }, 300); - } - }) - }) -}); + processReviews('<?php echo $this->getProductReviewUrl();?>'); -//]]> -</script> + $(function () { + $('.product-info-main .reviews-actions a').click(function (event) { + event.preventDefault(); + var acnchor = $(this).attr('href').replace(/^.*?(#|$)/, ''); + $(".product.data.items [data-role='content']").each(function(index){ + if (this.id == 'reviews') { + $('.product.data.items').tabs('activate', index); + $('html, body').animate({ + scrollTop: $('#' + acnchor).offset().top - 50 + }, 300); + } + }); + }); + }); + + }); +</script> \ No newline at end of file diff --git a/app/code/Magento/Sales/view/adminhtml/templates/transactions/detail.phtml b/app/code/Magento/Sales/view/adminhtml/templates/transactions/detail.phtml index 7d3564c822b40227d1ddf4481f582d492b218b02..56dc4bd3507793c36ec82ba9878a0f9e71210893 100644 --- a/app/code/Magento/Sales/view/adminhtml/templates/transactions/detail.phtml +++ b/app/code/Magento/Sales/view/adminhtml/templates/transactions/detail.phtml @@ -7,7 +7,7 @@ // @codingStandardsIgnoreFile ?> -<div class="page-actions"><?php echo $this->getButtonsHtml() ?></div> +<div data-mage-init='{"floatingHeader": {}}' class="page-actions"><?php echo $this->getButtonsHtml() ?></div> <div class="fieldset-wrapper"> <div class="fieldset-wrapper-title"> <span class="title"><?php echo __('Transaction Data'); ?></span> diff --git a/app/code/Magento/Sales/view/adminhtml/web/js/bootstrap/order-create-index.js b/app/code/Magento/Sales/view/adminhtml/web/js/bootstrap/order-create-index.js index 41653616c434370e0aa99335f3c9407e6c4a6a4e..57cedc091591584ebc4c79a686d5152e6716a6d7 100644 --- a/app/code/Magento/Sales/view/adminhtml/web/js/bootstrap/order-create-index.js +++ b/app/code/Magento/Sales/view/adminhtml/web/js/bootstrap/order-create-index.js @@ -4,7 +4,5 @@ */ require([ - // From Magento_Sales::sales_order_create_index.xml - "Magento_Sales/order/create/giftmessage", - "Magento_Sales/order/giftoptions_tooltip" + "Magento_Sales/order/create/giftmessage" ]); \ No newline at end of file diff --git a/app/code/Magento/Sales/view/adminhtml/web/order/giftoptions_tooltip.js b/app/code/Magento/Sales/view/adminhtml/web/order/giftoptions_tooltip.js index 9286de955f4861b23e83515822875bdd7cf1e655..1f4c5002b98d9fe538b955e33e740b7a8e73d57d 100644 --- a/app/code/Magento/Sales/view/adminhtml/web/order/giftoptions_tooltip.js +++ b/app/code/Magento/Sales/view/adminhtml/web/order/giftoptions_tooltip.js @@ -9,8 +9,8 @@ */ define(["prototype"], function(){ +var GiftOptionsTooltip = Class.create(); -window.GiftOptionsTooltip = Class.create(); GiftOptionsTooltip.prototype = { _tooltipLines: [], _tooltipWindow: null, diff --git a/app/code/Magento/Tax/view/adminhtml/templates/class/page/edit.phtml b/app/code/Magento/Tax/view/adminhtml/templates/class/page/edit.phtml index 0687d7fec5198b34d000590ee59f46d5471a9fc3..f9d1098da35bb2fcb3de4a0809b32c032b18b881 100644 --- a/app/code/Magento/Tax/view/adminhtml/templates/class/page/edit.phtml +++ b/app/code/Magento/Tax/view/adminhtml/templates/class/page/edit.phtml @@ -4,7 +4,7 @@ * See COPYING.txt for license details. */ ?> -<div class="page-actions"> +<div data-mage-init='{"floatingHeader": {}}' class="page-actions"> <?php echo $this->getBackButtonHtml(); ?> <?php echo $this->getResetButtonHtml(); ?> <?php echo $this->getDeleteButtonHtml(); ?> diff --git a/app/code/Magento/Tax/view/adminhtml/templates/toolbar/class/add.phtml b/app/code/Magento/Tax/view/adminhtml/templates/toolbar/class/add.phtml index eb37ee69af5d0eb084f0de56efb76132a03da3ff..154baa06c34587e372b18b3aa4fcea13a053e828 100644 --- a/app/code/Magento/Tax/view/adminhtml/templates/toolbar/class/add.phtml +++ b/app/code/Magento/Tax/view/adminhtml/templates/toolbar/class/add.phtml @@ -4,7 +4,7 @@ * See COPYING.txt for license details. */ ?> -<div class="page-actions"> +<div data-mage-init='{"floatingHeader": {}}' class="page-actions"> <button onclick="window.location.href='<?php echo $createUrl ?>'"> <?php echo __('Add New Class') ?> </button> diff --git a/app/code/Magento/Tax/view/adminhtml/templates/toolbar/class/save.phtml b/app/code/Magento/Tax/view/adminhtml/templates/toolbar/class/save.phtml index 611cc27fa33acef904fbf4d03b8d514b96b92ee6..d67af60be8cd0fe8722c00d5a7cd9087bae86659 100644 --- a/app/code/Magento/Tax/view/adminhtml/templates/toolbar/class/save.phtml +++ b/app/code/Magento/Tax/view/adminhtml/templates/toolbar/class/save.phtml @@ -7,7 +7,7 @@ // @codingStandardsIgnoreFile ?> -<div class="page-actions"> +<div data-mage-init='{"floatingHeader": {}}' class="page-actions"> <?php echo $this->getBackButtonHtml() ?> <?php echo $this->getResetButtonHtml() ?> <?php echo $this->getSaveButtonHtml() ?> diff --git a/app/code/Magento/Tax/view/adminhtml/templates/toolbar/rule/add.phtml b/app/code/Magento/Tax/view/adminhtml/templates/toolbar/rule/add.phtml index 61346078bf068a98ae8a43059f61dac95dc71654..c39cc32bb3109e862e7664ec920a3673acc1fd8a 100644 --- a/app/code/Magento/Tax/view/adminhtml/templates/toolbar/rule/add.phtml +++ b/app/code/Magento/Tax/view/adminhtml/templates/toolbar/rule/add.phtml @@ -4,7 +4,7 @@ * See COPYING.txt for license details. */ ?> -<div class="page-actions"> +<div data-mage-init='{"floatingHeader": {}}' class="page-actions"> <button onclick="window.location.href='<?php echo $createUrl ?>'"> <?php echo __('Add New Tax Rule') ?> </button> diff --git a/app/code/Magento/Tax/view/adminhtml/templates/toolbar/rule/save.phtml b/app/code/Magento/Tax/view/adminhtml/templates/toolbar/rule/save.phtml index 6601a6fee7a8fa0326abc62791df4e274a438e7e..c1585d0f1aa8c372fadc852d0dab03cf578544ec 100644 --- a/app/code/Magento/Tax/view/adminhtml/templates/toolbar/rule/save.phtml +++ b/app/code/Magento/Tax/view/adminhtml/templates/toolbar/rule/save.phtml @@ -7,7 +7,7 @@ // @codingStandardsIgnoreFile ?> -<div class="page-actions"> +<div data-mage-init='{"floatingHeader": {}}' class="page-actions"> <?php echo $this->getBackButtonHtml(); ?> <?php echo $this->getResetButtonHtml(); ?> <?php echo $this->getSaveButtonHtml(); ?> diff --git a/app/code/Magento/TaxImportExport/view/adminhtml/templates/importExport.phtml b/app/code/Magento/TaxImportExport/view/adminhtml/templates/importExport.phtml index fb5fc443fe42ff4a594b6e78df2c2b1bb2296be0..5bfaf3e8aacc97247bfcdd53e65ac5dc8fb5b931 100644 --- a/app/code/Magento/TaxImportExport/view/adminhtml/templates/importExport.phtml +++ b/app/code/Magento/TaxImportExport/view/adminhtml/templates/importExport.phtml @@ -23,7 +23,7 @@ </form> <?php endif; ?> <script> -require(['jquery', "mage/mage", "js/theme"], function(jQuery){ +require(['jquery', "mage/mage", "loadingPopup"], function(jQuery){ jQuery('#import-form').mage('form').mage('validation'); (function ($) { diff --git a/app/code/Magento/Theme/view/adminhtml/requirejs-config.js b/app/code/Magento/Theme/view/adminhtml/requirejs-config.js new file mode 100644 index 0000000000000000000000000000000000000000..13f4b8a4228eab61c52d84d5cec7658cad328c26 --- /dev/null +++ b/app/code/Magento/Theme/view/adminhtml/requirejs-config.js @@ -0,0 +1,58 @@ +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +var config = { + "shim": { + "extjs/ext-tree-checkbox": [ + "extjs/ext-tree", + "extjs/defaults" + ] + }, + "bundles": { + "js/theme": [ + "globalNavigation", + "globalSearch", + "modalPopup", + "useDefault", + "loadingPopup", + "collapsable" + ] + }, + "map": { + "*": { + "translateInline": "mage/translate-inline", + "form": "mage/backend/form", + "button": "mage/backend/button", + "accordion": "mage/accordion", + "actionLink": "mage/backend/action-link", + "validation": "mage/backend/validation", + "notification": "mage/backend/notification", + "loader": "mage/loader_old", + "loaderAjax": "mage/loader_old", + "floatingHeader": "mage/backend/floating-header", + "suggest": "mage/backend/suggest", + "mediabrowser": "jquery/jstree/jquery.jstree", + "tabs": "mage/backend/tabs", + "treeSuggest": "mage/backend/tree-suggest", + "calendar": "mage/calendar", + "dropdown": "mage/dropdown_old", + "collapsible": "mage/collapsible", + "menu": "mage/backend/menu", + "jstree": "jquery/jstree/jquery.jstree", + "details": "jquery/jquery.details" + } + }, + "deps": [ + "js/theme", + "mage/backend/bootstrap" + ], + "paths": { + "jquery/ui": "jquery/jquery-ui-1.9.2" + } +}; + +require(['jquery'], function (jQuery) { + jQuery.noConflict(); +}); \ No newline at end of file diff --git a/app/code/Magento/Theme/view/adminhtml/templates/tabs/fieldset/js.phtml b/app/code/Magento/Theme/view/adminhtml/templates/tabs/fieldset/js.phtml index bb3d55c4c9e7b71f24d2e0fb23047b3d4810575f..6f81ceb18656b1f8125d8f3d08e606d224917dee 100644 --- a/app/code/Magento/Theme/view/adminhtml/templates/tabs/fieldset/js.phtml +++ b/app/code/Magento/Theme/view/adminhtml/templates/tabs/fieldset/js.phtml @@ -42,6 +42,7 @@ require([ "jquery", "jquery/ui", + "Magento_Theme/js/sortable", "Magento_Theme/js/custom-js-list" ], function(jQuery){ diff --git a/app/code/Magento/Theme/view/adminhtml/templates/tabs/js.phtml b/app/code/Magento/Theme/view/adminhtml/templates/tabs/js.phtml index d7652b782a6ada0450e9babd7262f031fd3a9f85..0b64d8d1a4c7d5ef646f50c7e198fca36e7cdd61 100644 --- a/app/code/Magento/Theme/view/adminhtml/templates/tabs/js.phtml +++ b/app/code/Magento/Theme/view/adminhtml/templates/tabs/js.phtml @@ -11,6 +11,7 @@ require([ "jquery", "jquery/file-uploader", + "Magento_Theme/js/sortable", "mage/translate" ], function($){ diff --git a/app/code/Magento/Theme/view/adminhtml/web/js/bootstrap.js b/app/code/Magento/Theme/view/adminhtml/web/js/bootstrap.js index fa5168eacb1ca187ab7c5e71c634ec00d3a26067..1087a962aca5b8c4dc583073e9c83060cd29646d 100644 --- a/app/code/Magento/Theme/view/adminhtml/web/js/bootstrap.js +++ b/app/code/Magento/Theme/view/adminhtml/web/js/bootstrap.js @@ -6,6 +6,5 @@ require([ "jquery/fileUploader/jquery.fileupload-ui", "mage/adminhtml/browser", - "Magento_Theme/js/form", - "Magento_Theme/js/sortable" + "Magento_Theme/js/form" ]); \ No newline at end of file diff --git a/app/code/Magento/Theme/view/adminhtml/web/js/sortable.js b/app/code/Magento/Theme/view/adminhtml/web/js/sortable.js index 13047196ba0082648b9f83f9ea1c3610aafade94..2e33d96bbde5fcf72410e958ddbf534da5ebef15 100644 --- a/app/code/Magento/Theme/view/adminhtml/web/js/sortable.js +++ b/app/code/Magento/Theme/view/adminhtml/web/js/sortable.js @@ -44,6 +44,6 @@ define([ data.item.insertAfter(data.item.next()); } }); - + return $.mage.sortable; }); \ No newline at end of file diff --git a/app/code/Magento/Theme/view/base/requirejs-config.js b/app/code/Magento/Theme/view/base/requirejs-config.js new file mode 100644 index 0000000000000000000000000000000000000000..963f164eda16cf83e4d1b3c98b8657cba1ccc721 --- /dev/null +++ b/app/code/Magento/Theme/view/base/requirejs-config.js @@ -0,0 +1,50 @@ +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +var config = { + "waitSeconds": 0, + "shim": { + "jquery/jquery-migrate": ["jquery"], + "jquery/jquery.hashchange": ["jquery"], + "jquery/jstree/jquery.hotkeys": ["jquery"], + "jquery/hover-intent": ["jquery"], + "mage/adminhtml/backup": ["prototype"], + "mage/adminhtml/tools": ["prototype"], + "mage/adminhtml/varienLoader": ["prototype"], + "mage/captcha": ["prototype"], + "mage/common": ["jquery"], + "mage/requirejs/plugin/id-normalizer": ["jquery"], + "mage/webapi": ["jquery"], + "jquery/ui": ["jquery"], + "tinymce": { + "exports": "tinymce" + }, + "ko": { + "exports": "ko" + }, + "moment": { + "exports": "moment" + }, + "matchMedia": { + "exports": "mediaCheck" + } + }, + "paths": { + "jquery/validate": "jquery/jquery.validate", + "jquery/hover-intent": "jquery/jquery.hoverIntent", + "jquery/template": "jquery/jquery.tmpl.min", + "jquery/file-uploader": "jquery/fileUploader/jquery.fileupload-fp", + "handlebars": "jquery/handlebars/handlebars-v1.3.0", + "jquery/jquery.hashchange": "jquery/jquery.ba-hashchange.min", + "prototype": "prototype/prototype-amd", + "text": "requirejs/text", + "domReady": "requirejs/domReady", + "ko": "ko/ko", + "tinymce": "tiny_mce/tiny_mce" + }, + "deps": [ + "jquery/jquery-migrate" + ] +}; \ No newline at end of file diff --git a/app/code/Magento/Theme/view/frontend/layout/default.xml b/app/code/Magento/Theme/view/frontend/layout/default.xml index b0f2b06196e0228ba337ba317b88c2e8ddf53338..c6769c7cfe7cf3ede4c0c39487378c4e8eb48649 100644 --- a/app/code/Magento/Theme/view/frontend/layout/default.xml +++ b/app/code/Magento/Theme/view/frontend/layout/default.xml @@ -8,8 +8,6 @@ <page layout="3columns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"> <update handle="default_head_blocks"/> <body> - <!-- Temporary solution --> - <block name="require.js" class="Magento\Framework\View\Element\Template" template="Magento_Theme::js/require_js.phtml" /> <referenceContainer name="after.body.start"> <block class="Magento\RequireJs\Block\Html\Head\Config" name="requirejs-config"/> <block class="Magento\Translation\Block\Js" name="translate" template="Magento_Translation::translate.phtml"/> diff --git a/app/code/Magento/Theme/view/frontend/layout/default_head_blocks.xml b/app/code/Magento/Theme/view/frontend/layout/default_head_blocks.xml index c62eb0ab85c6ef421939307332259f2567a0798d..0dc044355c5f45155901108ef05ee06e093d097d 100644 --- a/app/code/Magento/Theme/view/frontend/layout/default_head_blocks.xml +++ b/app/code/Magento/Theme/view/frontend/layout/default_head_blocks.xml @@ -11,12 +11,6 @@ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no"/> <css src="mage/calendar.css"/> <script src="requirejs/require.js"/> - <!-- /** - TODO: remove jQuery. jQuery could be loaded through RequireJS. But only in case ALL MODULES ARE AMD MODULES. - Detail: http://requirejs.org/docs/jquery.html#noconflictmap - */ --> - <script src="jquery/jquery.js"/> - <script src="app-config.js"/> </head> <body> <referenceContainer name="after.body.start"> diff --git a/app/code/Magento/Theme/view/frontend/requirejs-config.js b/app/code/Magento/Theme/view/frontend/requirejs-config.js index 54705fb5abca08b5cd2027e7198eb8cf78778d11..f984999b783288823be273cf35aaa559da930235 100644 --- a/app/code/Magento/Theme/view/frontend/requirejs-config.js +++ b/app/code/Magento/Theme/view/frontend/requirejs-config.js @@ -5,45 +5,42 @@ var config = { map: { - '*': { - cookieBlock: 'Magento_Theme/js/notices', - rowBuilder: 'Magento_Theme/js/row-builder', - toggleAdvanced: 'mage/toggle', - translateInline: 'mage/translate-inline', - sticky: 'mage/sticky', - tabs: 'mage/tabs', - zoom: 'mage/zoom', - gallery: 'mage/gallery', - galleryFullScreen: 'mage/gallery-fullscreen', - collapsible: 'mage/collapsible', - dropdownDialog: 'mage/dropdown', - dropdown: 'mage/dropdowns', - accordion: 'mage/accordion', - loader: 'mage/loader', - tooltip: 'mage/tooltip', - deletableItem: 'mage/deletable-item', - itemTable: 'mage/item-table', - fieldsetControls: 'mage/fieldset-controls', - fieldsetResetControl: 'mage/fieldset-controls', - redirectUrl: 'mage/redirect-url', - loaderAjax: 'mage/loader', - menu: 'mage/menu', - popupWindow: 'mage/popup-window', - validation: 'mage/validation/validation' + "*": { + "cookieBlock": "Magento_Theme/js/notices", + "rowBuilder": "Magento_Theme/js/row-builder", + "toggleAdvanced": "mage/toggle", + "translateInline": "mage/translate-inline", + "sticky": "mage/sticky", + "tabs": "mage/tabs", + "zoom": "mage/zoom", + "gallery": "mage/gallery", + "galleryFullScreen": "mage/gallery-fullscreen", + "collapsible": "mage/collapsible", + "dropdownDialog": "mage/dropdown", + "dropdown": "mage/dropdowns", + "accordion": "mage/accordion", + "loader": "mage/loader", + "tooltip": "mage/tooltip", + "deletableItem": "mage/deletable-item", + "itemTable": "mage/item-table", + "fieldsetControls": "mage/fieldset-controls", + "fieldsetResetControl": "mage/fieldset-controls", + "redirectUrl": "mage/redirect-url", + "loaderAjax": "mage/loader", + "menu": "mage/menu", + "popupWindow": "mage/popup-window", + "validation": "mage/validation/validation" } }, paths: { - 'jquery/ui': 'jquery/jquery-ui' + "jquery/ui": "jquery/jquery-ui" }, deps: [ - 'jquery', - 'jquery/jquery-migrate', - 'jquery/jquery.mobile.custom', - 'js/responsive', - 'mage/common', - 'mage/dataPost', - 'js/theme', - 'mage/terms', - 'mage/bootstrap' + "jquery/jquery.mobile.custom", + "js/responsive", + "mage/common", + "mage/dataPost", + "js/theme", + "mage/bootstrap" ] }; \ No newline at end of file diff --git a/app/code/Magento/Theme/view/frontend/templates/js/require_js.phtml b/app/code/Magento/Theme/view/frontend/templates/js/require_js.phtml deleted file mode 100644 index 97d0888128561b583f446883da74c1857841846a..0000000000000000000000000000000000000000 --- a/app/code/Magento/Theme/view/frontend/templates/js/require_js.phtml +++ /dev/null @@ -1,11 +0,0 @@ -<?php -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ -?> -<script> - var require = { - "baseUrl": "<?php echo $this->getViewFileUrl('/') ?>" - }; -</script> diff --git a/app/code/Magento/Ui/view/base/layout/ui_components.xml b/app/code/Magento/Ui/view/base/layout/ui_components.xml index 411aa482d005c918da68508329d9c6a4c1f51091..0a2a85b793f16b58fe5b21a4fc5dc3b96be55686 100644 --- a/app/code/Magento/Ui/view/base/layout/ui_components.xml +++ b/app/code/Magento/Ui/view/base/layout/ui_components.xml @@ -132,6 +132,7 @@ <arguments> <argument name="js_config" xsi:type="array"> <item name="extends" xsi:type="string">input</item> + <item name="component" xsi:type="string">Magento_Ui/js/form/element/date</item> <item name="config" xsi:type="array"> <item name="input_type" xsi:type="string">date</item> </item> diff --git a/app/code/Magento/Ui/view/base/web/js/form/element/date.js b/app/code/Magento/Ui/view/base/web/js/form/element/date.js new file mode 100644 index 0000000000000000000000000000000000000000..6e53005137b69fac101db602d58b930d24c24473 --- /dev/null +++ b/app/code/Magento/Ui/view/base/web/js/form/element/date.js @@ -0,0 +1,31 @@ +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +define([ + 'moment', + './abstract' +], function (moment, Abstract) { + 'use strict'; + + return Abstract.extend({ + defaults: { + dateFormat: 'MM/DD/YYYY' + }, + + /** + * Converts initial value to the specified date format. + * + * @returns {String} + */ + getInititalValue: function () { + var value = this._super(); + + if (value) { + value = moment(value).format(this.dateFormat); + } + + return value; + } + }); +}); diff --git a/app/code/Magento/Ui/view/base/web/templates/pageactions.html b/app/code/Magento/Ui/view/base/web/templates/pageactions.html index a6496f30d95ad62e6b13c126ecccd2d36342cf07..caf4d917fadfaaa6827f1a25cbd45682bbfa747d 100644 --- a/app/code/Magento/Ui/view/base/web/templates/pageactions.html +++ b/app/code/Magento/Ui/view/base/web/templates/pageactions.html @@ -6,7 +6,7 @@ --> <div class="page-main-actions"> <div class="page-actions-placeholder"></div> - <div class="page-actions" data-ui-id="page-actions-toolbar-content-header"> + <div data-mage-init='{"floatingHeader": {}}' class="page-actions" data-ui-id="page-actions-toolbar-content-header"> <div class="page-actions-inner" data-title="Pages"> <div class="page-actions-buttons"> <!-- ko foreach: actions --> diff --git a/app/code/Magento/User/view/adminhtml/templates/admin/forgotpassword.phtml b/app/code/Magento/User/view/adminhtml/templates/admin/forgotpassword.phtml index 5657758c199dcf23d740cc4ce27ca908822cd5f0..fa7e1060551dcf69fd4bd64175d5667efb7c7f9f 100644 --- a/app/code/Magento/User/view/adminhtml/templates/admin/forgotpassword.phtml +++ b/app/code/Magento/User/view/adminhtml/templates/admin/forgotpassword.phtml @@ -28,9 +28,8 @@ <script src="<?php echo $this->getViewFileUrl('mage/captcha.js') ?>"></script> <script src="<?php echo $this->getViewFileUrl('requirejs/require.js') ?>"></script> - <script src="<?php echo $this->getViewFileUrl('jquery/jquery.js') ?>"></script> - <script src="<?php echo $this->getViewFileUrl('mage/jquery-no-conflict.js') ?>"></script> - <script src="<?php echo $this->getViewFileUrl('app-config.js') ?>"></script> + <script src="<?php echo $this->getViewFileUrl('jquery.js') ?>"></script> + <script src="<?php echo $this->getViewFileUrl('Magento_User::app-config.js') ?>"></script> <?php echo $this->getChildHtml('requirejs-config');?> <body id="page-login" class="page-login page-forgotpassword"> diff --git a/app/code/Magento/User/view/adminhtml/templates/admin/resetforgottenpassword.phtml b/app/code/Magento/User/view/adminhtml/templates/admin/resetforgottenpassword.phtml index d2c97581ce3394e6c5d579b43d1701433aeab4eb..4e0906e29196deae2003f82a3d56200f5a0f304c 100644 --- a/app/code/Magento/User/view/adminhtml/templates/admin/resetforgottenpassword.phtml +++ b/app/code/Magento/User/view/adminhtml/templates/admin/resetforgottenpassword.phtml @@ -27,9 +27,9 @@ <script src="<?php echo $this->getViewFileUrl('mage/captcha.js') ?>"></script> <script src="<?php echo $this->getViewFileUrl('requirejs/require.js') ?>"></script> - <script src="<?php echo $this->getViewFileUrl('jquery/jquery.js') ?>"></script> - <script src="<?php echo $this->getViewFileUrl('mage/jquery-no-conflict.js') ?>"></script> - <script src="<?php echo $this->getViewFileUrl('app-config.js') ?>"></script> + <script src="<?php echo $this->getViewFileUrl('jquery.js') ?>"></script> + <script src="<?php echo $this->getViewFileUrl('Magento_User::app-config.js') ?>"></script> + <?php echo $this->getChildHtml('requirejs-config');?> <body id="page-login" class="page-login page-resetpass"> <div class="wrapper"> diff --git a/lib/web/app-config.js b/app/code/Magento/User/view/adminhtml/web/app-config.js similarity index 81% rename from lib/web/app-config.js rename to app/code/Magento/User/view/adminhtml/web/app-config.js index eac841d94392fc32b8df074d78bed427c0594f50..3d547aa5ade899e09bf57662e24fd5f25a613d1a 100644 --- a/lib/web/app-config.js +++ b/app/code/Magento/User/view/adminhtml/web/app-config.js @@ -3,11 +3,9 @@ * See COPYING.txt for license details. */ require.config({ - "waitSeconds":"0", + "waitSeconds": 0, "shim": { "jquery/jquery.hashchange": ["jquery"], - "jquery/jquery.mousewheel": ["jquery"], - "jquery/jquery.popups": ["jquery"], "jquery/jstree/jquery.hotkeys": ["jquery"], "jquery/hover-intent": ["jquery"], "mage/adminhtml/backup": ["prototype"], @@ -15,18 +13,16 @@ require.config({ "mage/adminhtml/varienLoader": ["prototype"], "mage/captcha": ["prototype"], "mage/common": ["jquery"], - "mage/jquery-no-conflict": ["jquery"], "mage/requirejs/plugin/id-normalizer": ["jquery"], "mage/webapi": ["jquery"], "ko": { exports: "ko" }, "moment": { exports: "moment" } }, "paths":{ - 'jquery/ui': 'jquery/jquery-ui-1.9.2', + "jquery/ui": "jquery/jquery-ui-1.9.2", "jquery/validate": "jquery/jquery.validate", "jquery/hover-intent": "jquery/jquery.hoverIntent", "jquery/template": "jquery/jquery.tmpl.min", - "jquery/farbtastic": "jquery/farbtastic/jquery.farbtastic", "jquery/file-uploader": "jquery/fileUploader/jquery.fileupload-fp", "handlebars": "jquery/handlebars/handlebars-v1.3.0", "jquery/jquery.hashchange": "jquery/jquery.ba-hashchange.min", @@ -36,3 +32,7 @@ require.config({ "ko": "ko/ko" } }); + +require(['jquery'], function(jQuery){ + jQuery.noConflict(); +}); diff --git a/app/code/Magento/Weee/view/frontend/requirejs-config.js b/app/code/Magento/Weee/view/frontend/requirejs-config.js index 34cefb64a590fdb4c27c032edf44ba1e30656699..2dbcc0ab7c33d6df0ffdf89f75f057071ca99997 100644 --- a/app/code/Magento/Weee/view/frontend/requirejs-config.js +++ b/app/code/Magento/Weee/view/frontend/requirejs-config.js @@ -4,7 +4,9 @@ */ var config = { - deps: [ - 'Magento_Weee/tax-toggle' - ] -}; \ No newline at end of file + map: { + "*": { + "taxToggle": "Magento_Weee/tax-toggle" + } + } +}; diff --git a/app/code/Magento/Weee/view/frontend/templates/checkout/onepage/review/item/price/row_excl_tax.phtml b/app/code/Magento/Weee/view/frontend/templates/checkout/onepage/review/item/price/row_excl_tax.phtml index 1fae6dfcbf3efe2df2599f33e8c1b9e0df9916b8..48e73f2a3433345021c3a98d62c7246a4660e381 100644 --- a/app/code/Magento/Weee/view/frontend/templates/checkout/onepage/review/item/price/row_excl_tax.phtml +++ b/app/code/Magento/Weee/view/frontend/templates/checkout/onepage/review/item/price/row_excl_tax.phtml @@ -11,7 +11,7 @@ $_item = $this->getItem(); ?> <?php if ($this->displayPriceWithWeeeDetails()): ?> - <span class="cart-tax-total" data-tax-toggle='{"itemTaxId" : "#esubtotal-item-tax-details<?php echo $_item->getId(); ?>"}'> + <span class="cart-tax-total" data-mage-init='{"taxtToggle": {"itemTaxId" : "#esubtotal-item-tax-details<?php echo $_item->getId(); ?>"}}'> <?php else: ?> <span class="cart-price"> <?php endif; ?> @@ -28,7 +28,7 @@ $_item = $this->getItem(); </span> <?php if ($this->displayFinalPrice()): ?> - <span class="cart-tax-total" data-tax-toggle='{"itemTaxId" : "#esubtotal-item-tax-details<?php echo $_item->getId(); ?>"}'> + <span class="cart-tax-total" data-mage-init='{"taxtToggle": {"itemTaxId" : "#esubtotal-item-tax-details<?php echo $_item->getId(); ?>"}}'> <span class="weee" data-label="<?php echo __('Total'); ?>"> <?php echo $this->formatPrice($this->getFinalRowDisplayPriceExclTax()); ?> </span> diff --git a/app/code/Magento/Weee/view/frontend/templates/checkout/onepage/review/item/price/row_incl_tax.phtml b/app/code/Magento/Weee/view/frontend/templates/checkout/onepage/review/item/price/row_incl_tax.phtml index 5782357df3b224145e62b3b5321a3d5af34671bc..d63257b9dc09ca6625703840b11b271fb5deee49 100644 --- a/app/code/Magento/Weee/view/frontend/templates/checkout/onepage/review/item/price/row_incl_tax.phtml +++ b/app/code/Magento/Weee/view/frontend/templates/checkout/onepage/review/item/price/row_incl_tax.phtml @@ -14,7 +14,7 @@ $_weeeHelper = $this->helper('Magento\Weee\Helper\Data'); ?> <?php $_incl = $_item->getRowTotalInclTax(); ?> <?php if ($this->displayPriceWithWeeeDetails()): ?> - <span class="cart-tax-total" data-tax-toggle='{"itemTaxId" : "#subtotal-item-tax-details<?php echo $_item->getId(); ?>"}'> + <span class="cart-tax-total" data-mage-init='{"taxtToggle": {"itemTaxId" : "#subtotal-item-tax-details<?php echo $_item->getId(); ?>"}}'> <?php else: ?> <span class="cart-price"> <?php endif; ?> @@ -31,7 +31,7 @@ $_weeeHelper = $this->helper('Magento\Weee\Helper\Data'); </span> <?php if ($this->displayFinalPrice()): ?> - <span class="cart-tax-total" data-tax-toggle='{"itemTaxId" : "#subtotal-item-tax-details<?php echo $_item->getId(); ?>"}'> + <span class="cart-tax-total" data-mage-init='{"taxtToggle": {"itemTaxId" : "#subtotal-item-tax-details<?php echo $_item->getId(); ?>"}}'> <span class="weee" data-label="<?php echo __('Total incl. tax'); ?>"> <?php echo $this->formatPrice($this->getFinalRowDisplayPriceInclTax()); ?> </span> diff --git a/app/code/Magento/Weee/view/frontend/templates/checkout/onepage/review/item/price/unit_excl_tax.phtml b/app/code/Magento/Weee/view/frontend/templates/checkout/onepage/review/item/price/unit_excl_tax.phtml index 5ed7782e839206497d516eb575bf2f0474550f33..4208b0f997e565357552f5af715f81f1c3bf273d 100644 --- a/app/code/Magento/Weee/view/frontend/templates/checkout/onepage/review/item/price/unit_excl_tax.phtml +++ b/app/code/Magento/Weee/view/frontend/templates/checkout/onepage/review/item/price/unit_excl_tax.phtml @@ -11,7 +11,7 @@ $_item = $this->getItem(); ?> <?php if ($this->displayPriceWithWeeeDetails()): ?> - <span class="cart-tax-total" data-tax-toggle='{"itemTaxId" : "#eunit-item-tax-details<?php echo $_item->getId(); ?>"}'> + <span class="cart-tax-total" data-mage-init='{"taxtToggle": {"itemTaxId" : "#eunit-item-tax-details<?php echo $_item->getId(); ?>"}}'> <?php else: ?> <span class="cart-price"> <?php endif; ?> @@ -29,7 +29,7 @@ $_item = $this->getItem(); </span> <?php if ($this->displayFinalPrice()): ?> - <span class="cart-tax-total" data-tax-toggle='{"itemTaxId" : "#eunit-item-tax-details<?php echo $_item->getId(); ?>"}'> + <span class="cart-tax-total" data-mage-init='{"taxtToggle": {"itemTaxId" : "#eunit-item-tax-details<?php echo $_item->getId(); ?>"}}'> <span class="weee" data-label="<?php echo __('Total'); ?>"> <?php echo $this->formatPrice($this->getFinalUnitDisplayPriceExclTax()); ?> </span> diff --git a/app/code/Magento/Weee/view/frontend/templates/checkout/onepage/review/item/price/unit_incl_tax.phtml b/app/code/Magento/Weee/view/frontend/templates/checkout/onepage/review/item/price/unit_incl_tax.phtml index a3bdf78bc3c405ccb1c726d63039e17369d85861..8d36c80c9e78a0f33dce0996679d0778c761d717 100644 --- a/app/code/Magento/Weee/view/frontend/templates/checkout/onepage/review/item/price/unit_incl_tax.phtml +++ b/app/code/Magento/Weee/view/frontend/templates/checkout/onepage/review/item/price/unit_incl_tax.phtml @@ -14,7 +14,7 @@ $_weeeHelper = $this->helper('Magento\Weee\Helper\Data'); ?> <?php $_incl = $_item->getPriceInclTax(); ?> <?php if ($this->displayPriceWithWeeeDetails()): ?> - <span class="cart-tax-total" data-tax-toggle='{"itemTaxId" : "#unit-item-tax-details<?php echo $_item->getId(); ?>"}'> + <span class="cart-tax-total" data-mage-init='{"taxtToggle": {"itemTaxId" : "#unit-item-tax-details<?php echo $_item->getId(); ?>"}}'> <?php else: ?> <span class="cart-price"> <?php endif; ?> @@ -32,7 +32,7 @@ $_weeeHelper = $this->helper('Magento\Weee\Helper\Data'); </span> <?php if ($this->displayFinalPrice()): ?> - <span class="cart-tax-total" data-tax-toggle='{"itemTaxId" : "#unit-item-tax-details<?php echo $_item->getId(); ?>"}'> + <span class="cart-tax-total" data-mage-init='{"taxtToggle": {"itemTaxId" : "#unit-item-tax-details<?php echo $_item->getId(); ?>"}}'> <span class="weee" data-label="<?php echo __('Total incl. tax'); ?>"> <?php echo $this->formatPrice($this->getFinalUnitDisplayPriceInclTax()); ?> </span> diff --git a/app/code/Magento/Weee/view/frontend/templates/item/price/row.phtml b/app/code/Magento/Weee/view/frontend/templates/item/price/row.phtml index c5df85d313ce185b20fa788ac0d9b2b967d3f4f0..9fe1b48b7125d974a098c577d1227eadf4969ed1 100644 --- a/app/code/Magento/Weee/view/frontend/templates/item/price/row.phtml +++ b/app/code/Magento/Weee/view/frontend/templates/item/price/row.phtml @@ -14,7 +14,7 @@ $item = $this->getItem(); <span class="price-including-tax" data-label="<?php echo $this->escapeHtml(__('Incl. Tax')); ?>"> <?php if ($this->displayPriceWithWeeeDetails()): ?> <span class="cart-tax-total" - data-tax-toggle='{"itemTaxId" : "#subtotal-item-tax-details<?php echo $item->getId(); ?>"}'> + data-mage-init='{"taxtToggle": {"itemTaxId" : "#subtotal-item-tax-details<?php echo $item->getId(); ?>"}}'> <?php else: ?> <span class="cart-price"> <?php endif; ?> @@ -32,7 +32,7 @@ $item = $this->getItem(); <?php if ($this->displayFinalPrice()): ?> <span class="cart-tax-total" - data-tax-toggle='{"itemTaxId" : "#subtotal-item-tax-details<?php echo $item->getId(); ?>"}'> + data-mage-init='{"taxtToggle": {"itemTaxId" : "#subtotal-item-tax-details<?php echo $item->getId(); ?>"}}'> <span class="weee" data-label="<?php echo $this->escapeHtml(__('Total incl. tax')); ?>"> <?php echo $this->formatPrice($this->getFinalRowDisplayPriceInclTax()); ?> </span> @@ -46,7 +46,7 @@ $item = $this->getItem(); <span class="price-excluding-tax" data-label="<?php echo $this->escapeHtml(__('Excl. Tax')); ?>"> <?php if ($this->displayPriceWithWeeeDetails()): ?> <span class="cart-tax-total" - data-tax-toggle='{"itemTaxId" : "#esubtotal-item-tax-details<?php echo $item->getId(); ?>"}'> + data-mage-init='{"taxtToggle": {"itemTaxId" : "#esubtotal-item-tax-details<?php echo $item->getId(); ?>"}}'> <?php else: ?> <span class="cart-price"> <?php endif; ?> @@ -65,7 +65,7 @@ $item = $this->getItem(); <?php if ($this->displayFinalPrice()): ?> <span class="cart-tax-total" - data-tax-toggle='{"itemTaxId" : "#esubtotal-item-tax-details<?php echo $item->getId(); ?>"}'> + data-mage-init='{"taxtToggle": {"itemTaxId" : "#esubtotal-item-tax-details<?php echo $item->getId(); ?>"}}'> <span class="weee" data-label="<?php echo $this->escapeHtml(__('Total')); ?>"> <?php echo $this->formatPrice($this->getFinalRowDisplayPriceExclTax()); ?> </span> diff --git a/app/code/Magento/Weee/view/frontend/templates/item/price/unit.phtml b/app/code/Magento/Weee/view/frontend/templates/item/price/unit.phtml index 1d5a0f621ee7883ab3733b2dc820f44db29d840b..dd499e0e13bd327db6157564a069ed60f7e9390b 100644 --- a/app/code/Magento/Weee/view/frontend/templates/item/price/unit.phtml +++ b/app/code/Magento/Weee/view/frontend/templates/item/price/unit.phtml @@ -14,7 +14,7 @@ $item = $this->getItem(); <span class="price-including-tax" data-label="<?php echo $this->escapeHtml(__('Incl. Tax')); ?>"> <?php if ($this->displayPriceWithWeeeDetails()): ?> <span class="cart-tax-total" - data-tax-toggle='{"itemTaxId" : "#unit-item-tax-details<?php echo $item->getId(); ?>"}'> + data-mage-init='{"taxtToggle": {"itemTaxId" : "#unit-item-tax-details<?php echo $item->getId(); ?>"}}'> <?php else: ?> <span class="cart-price"> <?php endif; ?> @@ -32,7 +32,7 @@ $item = $this->getItem(); <?php if ($this->displayFinalPrice()): ?> <span class="cart-tax-total" - data-tax-toggle='{"itemTaxId" : "#unit-item-tax-details<?php echo $item->getId(); ?>"}'> + data-mage-init='{"taxtToggle": {"itemTaxId" : "#unit-item-tax-details<?php echo $item->getId(); ?>"}}'> <span class="weee" data-label="<?php echo $this->escapeHtml(__('Total incl. tax')); ?>"> <?php echo $this->formatPrice($this->getFinalUnitDisplayPriceInclTax()); ?> </span> @@ -46,7 +46,7 @@ $item = $this->getItem(); <span class="price-excluding-tax" data-label="<?php echo $this->escapeHtml(__('Excl. Tax')); ?>"> <?php if ($this->displayPriceWithWeeeDetails()): ?> <span class="cart-tax-total" - data-tax-toggle='{"itemTaxId" : "#eunit-item-tax-details<?php echo $item->getId(); ?>"}'> + data-mage-init='{"taxtToggle": {"itemTaxId" : "#eunit-item-tax-details<?php echo $item->getId(); ?>"}}'> <?php else: ?> <span class="cart-price"> <?php endif; ?> @@ -65,7 +65,7 @@ $item = $this->getItem(); <?php if ($this->displayFinalPrice()): ?> <span class="cart-tax-total" - data-tax-toggle='{"itemTaxId" : "#eunit-item-tax-details<?php echo $item->getId(); ?>"}'> + data-mage-init='{"taxtToggle": {"itemTaxId" : "#eunit-item-tax-details<?php echo $item->getId(); ?>"}}'> <span class="weee" data-label="<?php echo $this->escapeHtml(__('Total')); ?>"> <?php echo $this->formatPrice($this->getFinalUnitDisplayPriceExclTax()); ?> </span> diff --git a/app/code/Magento/Weee/view/frontend/web/tax-toggle.js b/app/code/Magento/Weee/view/frontend/web/tax-toggle.js index 8edf1eb3ad8e7418d380675f3deb42ab99a3ea6d..3d3dc9c140b363c7796301ebc9ce959710899bfa 100644 --- a/app/code/Magento/Weee/view/frontend/web/tax-toggle.js +++ b/app/code/Magento/Weee/view/frontend/web/tax-toggle.js @@ -3,17 +3,21 @@ * See COPYING.txt for license details. */ /*jshint browser:true jquery:true*/ -define(["jquery"], function($){ - "use strict"; - - $(function() { - $('body').on('click', '[data-tax-toggle]', function() { - var currElem = $(this), - args = currElem.data("tax-toggle"), - expandedClassName = args.expandedClassName ? args.expandedClassName : 'cart-tax-total-expanded'; - currElem.toggleClass(expandedClassName); - $(args.itemTaxId).toggle(); - }); - }); +define([ + 'jquery' +], function ($) { + 'use strict'; -}); \ No newline at end of file + function onToggle(config, e) { + var elem = $(e.currentTarget), + expandedClassName = config.expandedClassName || 'cart-tax-total-expanded'; + + elem.toggleClass(expandedClassName); + + $(config.itemTaxId).toggle(); + } + + return function (data, el) { + $(el).on('click', onToggle.bind(null, data)); + }; +}); diff --git a/app/code/Magento/Widget/view/adminhtml/templates/instance/edit/layout.phtml b/app/code/Magento/Widget/view/adminhtml/templates/instance/edit/layout.phtml index ccd04fb7a617b2f6f9b7361036b40d5f5ab077d0..8e83ef8894fa64cdd0835ee226f205cdeed38102 100644 --- a/app/code/Magento/Widget/view/adminhtml/templates/instance/edit/layout.phtml +++ b/app/code/Magento/Widget/view/adminhtml/templates/instance/edit/layout.phtml @@ -16,7 +16,7 @@ </div> </fieldset> <script> -require(['prototype'], function(){ +require(["prototype", "extjs/ext-tree-checkbox"], function(){ //<![CDATA[ diff --git a/app/design/adminhtml/Magento/backend/Magento_Backend/layout/default.xml b/app/design/adminhtml/Magento/backend/Magento_Backend/layout/default.xml index 58ddcc5a0985fda2bd54e9b67c8e1d9b7f402819..5929c0bbc0a355ddb6f4b1e72789fed975a8fc59 100644 --- a/app/design/adminhtml/Magento/backend/Magento_Backend/layout/default.xml +++ b/app/design/adminhtml/Magento/backend/Magento_Backend/layout/default.xml @@ -15,7 +15,6 @@ <css src="css/admin.css"/> <css src="css/pages.css"/> <css src="css/styles.css"/> - <css src="jquery/farbtastic/css/farbtastic.css"/> <css src="mui/utils.css"/> <css src="Magento_Core::prototype/magento.css"/> <css src="mui/print.css" media="print"/> diff --git a/app/design/adminhtml/Magento/backend/web/js/theme.js b/app/design/adminhtml/Magento/backend/web/js/theme.js index 8b36f4fc21f335d78750174053950122dd15332d..0a5b8f4ab0dfd4a6c1ff96314f346a147985397b 100644 --- a/app/design/adminhtml/Magento/backend/web/js/theme.js +++ b/app/design/adminhtml/Magento/backend/web/js/theme.js @@ -3,47 +3,13 @@ * See COPYING.txt for license details. */ -define([ - "jquery", - 'mage/smart-keyboard-handler', - "mage/backend/floating-header", - 'mage/ie-class-fixer', - "jquery/ui", - "jquery/hover-intent", - "jquery/jquery.details", - "jquery/jquery.tabs", - "jquery/farbtastic" // $(..).farbtastic() -],function($, keyboardHandler) { +define('globalNavigation', [ + 'jquery', + 'jquery/ui', + 'jquery/hover-intent' +], function ($) { 'use strict'; - $.widget('mage.globalSearch', { - options: { - field: '.search-global-field', - fieldActiveClass: 'active', - input: '#search-global' - }, - - _create: function() { - this.field = $(this.options.field); - this.input = $(this.options.input); - this._events(); - }, - - _events: function() { - var self = this; - this.input - .on('blur.resetGlobalSearchForm', function() { - if (!self.input.val()) { - self.field.removeClass(self.options.fieldActiveClass) - } - }); - this.input - .on('focus.activateGlobalSearchForm', function() { - self.field.addClass(self.options.fieldActiveClass) - }); - } - }); - $.widget('mage.globalNavigation', { options: { menuCategory: '.level-0', @@ -52,35 +18,45 @@ define([ hoverIntentConfig: { interval: 100, timeout: 500 // number = milliseconds delay before onMouseOut + }, + categoriesConfig: { + '[data-ui-id="menu-mage-adminhtml-system"]': { + open: 'click' + }, + '[data-ui-id="menu-mage-adminhtml-stores"]': { + open: 'click' + } } }, - _create: function() { + _create: function () { this.menu = this.element; this.menuCategory = $(this.options.menuCategory, this.menu); this.menuLinks = $(this.options.menuLinks, this.menuCategory); this._bind(); }, - _menuCategoryBind: function(category, config) { + _menuCategoryBind: function (category, config) { category .hoverIntent($.extend({}, this.options.hoverIntentConfig, { over: !config.open ? this._hoverEffects : $.noop, out: !config.close ? this._leaveEffects : $.noop })); + if (config.open) { category.on(config.open, this._hoverEffects); } + if (config.close) { category.on(config.close, this._leaveEffects); } }, - _menuCategoryEvents: function() { - this.menuCategory.each($.proxy(function(i, category) { + _menuCategoryEvents: function () { + this.menuCategory.each($.proxy(function (i, category) { var itemConfig = {}; if (this.options.categoriesConfig) { - $.each(this.options.categoriesConfig, $.proxy(function(selector, conf) { + $.each(this.options.categoriesConfig, $.proxy(function (selector, conf) { if ($(category).is(selector)) { itemConfig = conf; } @@ -90,13 +66,13 @@ define([ }, this)); }, - _bind: function() { + _bind: function () { this._menuCategoryEvents(); this.menuLinks - .on('focus.tabFocus', function(e) { + .on('focus.tabFocus', function (e) { $(e.target).trigger('mouseenter'); }) - .on('blur.tabFocus', function(e) { + .on('blur.tabFocus', function (e) { $(e.target).trigger('mouseleave'); }); }, @@ -104,14 +80,14 @@ define([ _hoverEffects: function (e) { $(this) .addClass('hover recent') - .siblings('.level-0').each(function() { - clearTimeout($(this).prop('hoverIntent_t')); + .siblings('.level-0').each(function () { + clearTimeout($(this).prop('hoverIntent_t')); $(this).prop('hoverIntent_s', 0); $(this).removeClass('recent hover'); }); var targetSubmenu = $(e.target).closest('.submenu'); - if(targetSubmenu.length && targetSubmenu.is(':visible')) { + if (targetSubmenu.length && targetSubmenu.is(':visible')) { return; } var availableWidth = parseInt($(this).parent().css('width')) - $(this).position().left, @@ -120,11 +96,11 @@ define([ submenu.show(); - $.each($('> .submenu > ul li.column', this), function() { + $.each($('> .submenu > ul li.column', this), function () { colsWidth = colsWidth + parseInt($(this).css('width')); }); - var containerPaddings = parseInt(submenu.css('padding-left')) + parseInt(submenu.css('padding-right')); + var containerPaddings = parseInt(submenu.css('padding-left')) + parseInt(submenu.css('padding-right')); $(this).toggleClass('reverse', (containerPaddings + colsWidth) > availableWidth); @@ -135,15 +111,15 @@ define([ _leaveEffects: function (e) { var targetSubmenu = $(e.target).closest('.submenu'), - self = $(this), - submenu = $('> .submenu', this); + self = $(this), + submenu = $('> .submenu', this); - if(targetSubmenu.length && targetSubmenu.is(':hidden')) { + if (targetSubmenu.length && targetSubmenu.is(':hidden')) { return; } - if(submenu.length) { - submenu.slideUp('fast', function() { + if (submenu.length) { + submenu.slideUp('fast', function () { self.removeClass('hover'); }); } else { @@ -153,6 +129,54 @@ define([ } }); + return $.mage.globalNavigation; +}); + +define('globalSearch', [ + 'jquery', + 'jquery/ui' +], function ($) { + 'use strict'; + + $.widget('mage.globalSearch', { + options: { + field: '.search-global-field', + fieldActiveClass: 'active', + input: '#search-global' + }, + + _create: function () { + this.field = $(this.options.field); + this.input = $(this.options.input); + this._events(); + }, + + _events: function () { + var self = this; + + this.input + .on('blur.resetGlobalSearchForm', function () { + if (!self.input.val()) { + self.field.removeClass(self.options.fieldActiveClass) + } + }); + + this.input + .on('focus.activateGlobalSearchForm', function () { + self.field.addClass(self.options.fieldActiveClass) + }); + } + }); + + return $.mage.globalSearch; +}); + +define('modalPopup', [ + 'jquery', + 'jquery/ui' +], function ($) { + 'use strict'; + $.widget('mage.modalPopup', { options: { popup: '.popup', @@ -160,7 +184,7 @@ define([ btnHide: '[data-hide="popup"]' }, - _create: function() { + _create: function () { this.fade = this.element; this.popup = $(this.options.popup, this.fade); this.btnDismiss = $(this.options.btnDismiss, this.popup); @@ -169,77 +193,29 @@ define([ this._events(); }, - _events: function() { + _events: function () { var self = this; this.btnDismiss - .on('click.dismissModalPopup', function() { + .on('click.dismissModalPopup', function () { self.fade.remove(); }); this.btnHide - .on('click.hideModalPopup', function() { + .on('click.hideModalPopup', function () { self.fade.hide(); }); } }); - $.widget('mage.loadingPopup', { - options: { - message: 'Please wait...', - timeout: 5000, - timeoutId: null, - callback: null, - template: null - }, - - _create: function() { - this.template = - '<div class="popup popup-loading">' + - '<div class="popup-inner">' + this.options.message + '</div>' + - '</div>'; - - this.popup = $(this.template); - - this._show(); - this._events(); - }, - - _events: function() { - var self = this; - - this.element - .on('showLoadingPopup', function() { - self._show(); - }) - .on('hideLoadingPopup', function() { - self._hide(); - }); - }, - - _show: function() { - var options = this.options, - timeout = options.timeout; - - $('body').trigger('processStart'); - - if (timeout) { - options.timeoutId = setTimeout( this._delayedHide.bind(this), timeout); - } - }, - - _hide: function() { - $('body').trigger('processStop'); - }, - - _delayedHide: function(){ - this._hide(); - - this.options.callback && this.options.callback(); + return $.mage.modalPopup; +}); - this.options.timeoutId && clearTimeout(this.options.timeoutId); - } - }); +define('useDefault', [ + 'jquery', + 'jquery/ui' +], function ($) { + 'use strict'; $.widget('mage.useDefault', { options: { @@ -249,7 +225,7 @@ define([ label: '.use-default-label' }, - _create: function() { + _create: function () { this.el = this.element; this.field = $(this.el).closest(this.options.field); this.useDefault = $(this.options.useDefault, this.field); @@ -260,7 +236,7 @@ define([ this._events(); }, - _events: function() { + _events: function () { var self = this; this.el @@ -268,7 +244,7 @@ define([ .trigger('change.toggleUseDefaultVisibility'); this.checkbox - .on('change.setOrigValue', function() { + .on('change.setOrigValue', function () { if ($(this).prop('checked')) { self.el .val(self.origValue) @@ -279,22 +255,98 @@ define([ }); }, - _toggleUseDefaultVisibility: function() { + _toggleUseDefaultVisibility: function () { var curValue = this.el.val(), origValue = this.origValue; this[curValue != origValue ? '_show' : '_hide'](); }, - _show: function() { + _show: function () { this.useDefault.show(); }, - _hide: function() { + _hide: function () { this.useDefault.hide(); } }); + return $.mage.useDefault; +}); + +define('loadingPopup', [ + 'jquery', + 'jquery/ui' +], function ($) { + 'use strict'; + + $.widget('mage.loadingPopup', { + options: { + message: 'Please wait...', + timeout: 5000, + timeoutId: null, + callback: null, + template: null + }, + + _create: function () { + this.template = + '<div class="popup popup-loading">' + + '<div class="popup-inner">' + this.options.message + '</div>' + + '</div>'; + + this.popup = $(this.template); + + this._show(); + this._events(); + }, + + _events: function () { + var self = this; + + this.element + .on('showLoadingPopup', function () { + self._show(); + }) + .on('hideLoadingPopup', function () { + self._hide(); + }); + }, + + _show: function () { + var options = this.options, + timeout = options.timeout; + + $('body').trigger('processStart'); + + if (timeout) { + options.timeoutId = setTimeout(this._delayedHide.bind(this), timeout); + } + }, + + _hide: function () { + $('body').trigger('processStop'); + }, + + _delayedHide: function () { + this._hide(); + + this.options.callback && this.options.callback(); + + this.options.timeoutId && clearTimeout(this.options.timeoutId); + } + }); + + return $.mage.loadingPopup; +}); + +define('collapsable', [ + 'jquery', + 'jquery/ui', + 'jquery/jquery.tabs' +], function ($) { + 'use strict'; + $.widget('mage.collapsable', { options: { parent: null, @@ -302,11 +354,11 @@ define([ wrapper: '.fieldset-wrapper' }, - _create: function() { + _create: function () { this._events(); }, - _events: function() { + _events: function () { var self = this; this.element @@ -325,99 +377,26 @@ define([ } }); - var updateColorPickerValues = function() { - $('.element-color-picker').each(function(){ - var _this = $(this); - _this.find('.color-box.active').removeClass('active'); - if (_this.find('.farbtastic').is(':visible')) { - _this - .find('.farbtastic').hide() - .end() - .find('input').trigger('change.quickStyleElement'); - } - }); - }; - - var toggleColorPickerPosition = function () { - var colorPicker = $('.farbtastic:visible'), - colorPickerWidth = 350; - - colorPicker.offset() && colorPicker.toggleClass('vertical', parseInt(colorPicker.offset().left, 10) + colorPickerWidth > $(window).width()); - }; - - $(document).ready(function() { - $('.search-global.miniform').globalSearch(); - $('.navigation').globalNavigation({ - categoriesConfig: { - '[data-ui-id="menu-mage-adminhtml-system"]': { - open: 'click' - }, - '[data-ui-id="menu-mage-adminhtml-stores"]': { - open: 'click' - } - } - }); - $('.fade').modalPopup(); - $('details').details(); - $('.page-actions').floatingHeader(); - $('[data-store-label]').useDefault(); - - /* @TODO refactor collapsable as widget and avoid logic binding with such a general selectors */ - $('.collapse').collapsable(); - $.each($('.entry-edit'), function(i, entry) { - $('.collapse:first', entry).filter(function(){ - return $(this).data('collapsed') !== true; - }).collapse('show'); - }); - - // TODO: Move to VDE js widjets - $.each($('.color-box'), function(index, elem) { - $(elem).farbtastic(function(color) { - $(elem).css({ - 'backgroundColor': color - }); - $(elem).siblings('input').val(color); - }); - }); + return $.mage.collapsable; +}); - $(document).on('click', function(e) { - var target = $(e.target); - if (target.closest('.control').find('.color-box').length < 1) { - updateColorPickerValues(); - } - }); - $(window) - .on('resize.vdeColorPicker', function () { - this.vdeColorPickerTimeoutId && clearTimeout(this.vdeColorPickerTimeoutId); - - this.vdeColorPickerTimeoutId = setTimeout(function() { - toggleColorPickerPosition(); - }, 500); - }); +define('js/theme', [ + 'jquery', + 'mage/smart-keyboard-handler', + 'mage/ie-class-fixer', + 'collapsable', + 'domReady!' +], function ($, keyboardHandler) { + 'use strict'; - $('.color-box') - .on('click.showColorPicker', function() { - updateColorPickerValues(); // Update values is other color picker is not closed yet - $(this) - .addClass('active') - .siblings('input').trigger('focus.quickStyleElement') - .end() - .find('.farbtastic').show(); - toggleColorPickerPosition(); - }); - keyboardHandler.apply(); - }); + /* @TODO refactor collapsable as widget and avoid logic binding with such a general selectors */ + $('.collapse').collapsable(); - $(document).on('ajaxComplete', function() { - $('details').details(); + $.each($('.entry-edit'), function (i, entry) { + $('.collapse:first', entry).filter(function () { + return $(this).data('collapsed') !== true; + }).collapse('show'); }); - return { - collapsable: $.mage.collapsable, - useDefault: $.mage.useDefault, - loadingPopup: $.mage.loadingPopup, - modalPopup: $.mage.modalPopup, - globalNavigation: $.mage.globalNavigation, - globalSearch: $.mage.globalSearch - }; + keyboardHandler.apply(); }); diff --git a/app/design/frontend/Magento/blank/web/js/navigation-menu.js b/app/design/frontend/Magento/blank/web/js/navigation-menu.js index 5717d9bea015b2bac78174c7f952491b9f236aed..472e7a658c5b8d1ab8e16e8c3073633b353150f1 100644 --- a/app/design/frontend/Magento/blank/web/js/navigation-menu.js +++ b/app/design/frontend/Magento/blank/web/js/navigation-menu.js @@ -6,11 +6,11 @@ define([ "jquery", - "jquery/template", "matchMedia", + "jquery/template", "mage/dropdowns", "mage/terms" -],function($) { +],function($, mediaCheck) { 'use strict'; $.widget('mage.navigationMenu', { diff --git a/app/design/frontend/Magento/blank/web/js/responsive.js b/app/design/frontend/Magento/blank/web/js/responsive.js index 4bbaeae0ccff497ff319e509bf3bf1e9342ff4bb..d670ea1e4d41242820412bf660af230de444f543 100644 --- a/app/design/frontend/Magento/blank/web/js/responsive.js +++ b/app/design/frontend/Magento/blank/web/js/responsive.js @@ -4,79 +4,78 @@ */ define([ - "jquery", - "matchMedia", - "mage/zoom", - "mage/gallery", - "mage/tabs" -],function($) { + 'jquery', + 'matchMedia', + 'mage/tabs', + 'domReady!' +], function ($, mediaCheck) { 'use strict'; - $(function(){ - mediaCheck({ - media: '(min-width: 768px)', - // Switch to Desktop Version - entry: function() { - (function() { + mediaCheck({ + media: '(min-width: 768px)', + // Switch to Desktop Version + entry: function () { + (function () { - var productInfoMain = $('.product-info-main'), - productInfoAdditional = $("#product-info-additional"); + var productInfoMain = $('.product-info-main'), + productInfoAdditional = $('#product-info-additional'); - if(productInfoAdditional.length) { - productInfoAdditional.addClass("hidden"); - productInfoMain.removeClass("responsive"); - } + if (productInfoAdditional.length) { + productInfoAdditional.addClass('hidden'); + productInfoMain.removeClass('responsive'); + } - })(); + })(); - var galleryElement = $('[data-role=media-gallery]'); - if (galleryElement.length && galleryElement.data('mageZoom')) { - galleryElement.zoom('enable'); - } - if (galleryElement.length && galleryElement.data('mageGallery')) { - galleryElement.gallery("option","disableLinks",true); - galleryElement.gallery("option","showNav",false); - galleryElement.gallery("option","showThumbs",true); - } + var galleryElement = $('[data-role=media-gallery]'); + + if (galleryElement.length && galleryElement.data('mageZoom')) { + galleryElement.zoom('enable'); + } - setTimeout(function(){ - $(".product.data.items").tabs("option","openOnFocus",true); - }, 500); - }, - // Switch to Mobile Version - exit: function() { - $('.action.toggle.checkout.progress') - .on('click.gotoCheckoutProgress', function(e){ - var myWrapper = '#checkout-progress-wrapper'; - scrollTo(myWrapper + ' .title'); - $(myWrapper + ' .title').addClass('active'); - $(myWrapper + ' .content').show(); - }); + if (galleryElement.length && galleryElement.data('mageGallery')) { + galleryElement.gallery('option', 'disableLinks', true); + galleryElement.gallery('option', 'showNav', false); + galleryElement.gallery('option', 'showThumbs', true); + } - $('body') - .on('click.checkoutProgress', '#checkout-progress-wrapper .title', function(e){ - $(this).toggleClass('active'); - $('#checkout-progress-wrapper .content').toggle(); - }); + setTimeout(function () { + $('.product.data.items').tabs('option', 'openOnFocus', true); + }, 500); + }, + // Switch to Mobile Version + exit: function () { + $('.action.toggle.checkout.progress') + .on('click.gotoCheckoutProgress', function () { + var myWrapper = '#checkout-progress-wrapper'; + scrollTo(myWrapper + ' .title'); + $(myWrapper + ' .title').addClass('active'); + $(myWrapper + ' .content').show(); + }); - var galleryElement = $('[data-role=media-gallery]'); - setTimeout(function(){ - if (galleryElement.length && galleryElement.data('mageZoom')) { - galleryElement.zoom('disable'); - } - if (galleryElement.length && galleryElement.data('mageGallery')) { - galleryElement.gallery("option","disableLinks",false); - galleryElement.gallery("option","showNav",true); - galleryElement.gallery("option","showThumbs",false); - } - }, 2000); + $('body') + .on('click.checkoutProgress', '#checkout-progress-wrapper .title', function () { + $(this).toggleClass('active'); + $('#checkout-progress-wrapper .content').toggle(); + }); - setTimeout(function(){ - $(".product.data.items").tabs("option","openOnFocus",false); - }, 500); + var galleryElement = $('[data-role=media-gallery]'); - } + setTimeout(function () { + if (galleryElement.length && galleryElement.data('mageZoom')) { + galleryElement.zoom('disable'); + } + + if (galleryElement.length && galleryElement.data('mageGallery')) { + galleryElement.gallery('option', 'disableLinks', false); + galleryElement.gallery('option', 'showNav', true); + galleryElement.gallery('option', 'showThumbs', false); + } + }, 2000); - }); + setTimeout(function () { + $('.product.data.items').tabs('option', 'openOnFocus', false); + }, 500); + } }); }); diff --git a/app/design/frontend/Magento/blank/web/js/theme.js b/app/design/frontend/Magento/blank/web/js/theme.js index 863502cd891682c40d1fffe514f83bdadd971e12..4e335b7f56b1982176d4fea01991c5419659f21b 100644 --- a/app/design/frontend/Magento/blank/web/js/theme.js +++ b/app/design/frontend/Magento/blank/web/js/theme.js @@ -6,29 +6,24 @@ define([ 'jquery', 'mage/smart-keyboard-handler', 'mage/mage', - 'mage/collapsible', 'mage/ie-class-fixer', - 'jquery/ui' -],function($, keyboardHandler) { + 'domReady!' +], function ($, keyboardHandler) { 'use strict'; - $(function() { - - if ($('body').hasClass('checkout-cart-index')) { - if ($('#co-shipping-method-form .fieldset.rates').length > 0 && $('#co-shipping-method-form .fieldset.rates :checked').length === 0 ) { - $('#block-shipping').on('collapsiblecreate' ,function() { - $('#block-shipping').collapsible('forceActivate'); - }); - } + if ($('body').hasClass('checkout-cart-index')) { + if ($('#co-shipping-method-form .fieldset.rates').length > 0 && $('#co-shipping-method-form .fieldset.rates :checked').length === 0) { + $('#block-shipping').on('collapsiblecreate', function () { + $('#block-shipping').collapsible('forceActivate'); + }); } + } - $('.cart-summary').mage('sticky', { - container: '#maincontent' - }); - - $('.panel.header > .header.links').clone().appendTo('#store\\.links'); - - keyboardHandler.apply(); + $('.cart-summary').mage('sticky', { + container: '#maincontent' }); + $('.panel.header > .header.links').clone().appendTo('#store\\.links'); + + keyboardHandler.apply(); }); diff --git a/app/design/frontend/Magento/luma/Magento_LayeredNavigation/templates/layer/view.phtml b/app/design/frontend/Magento/luma/Magento_LayeredNavigation/templates/layer/view.phtml index e20e7a5022c44455f2adf228471e2f86c20ceedd..e26fbc28211b9ed0d0d49d432b5bd8e551568adb 100644 --- a/app/design/frontend/Magento/luma/Magento_LayeredNavigation/templates/layer/view.phtml +++ b/app/design/frontend/Magento/luma/Magento_LayeredNavigation/templates/layer/view.phtml @@ -43,7 +43,11 @@ </div> <?php else: ?> <script> - jQuery('#layered-filter-block').addClass('filter-no-options'); + require([ + 'jquery' + ], function ($) { + $('#layered-filter-block').addClass('filter-no-options'); + }); </script> <?php endif; ?> </div> diff --git a/composer.json b/composer.json index 6de5bd137c7ec9937e0f137b62027bf6496c74f2..335239646a24341af693099f5920637c504d5935 100644 --- a/composer.json +++ b/composer.json @@ -166,7 +166,7 @@ "linkorb/jsmin-php": "lib/internal/JSMin", "phpseclib/phpseclib": "lib/internal/phpseclib", "components/jquery": [ - "lib/web/jquery/jquery.js", + "lib/web/jquery.js", "lib/web/jquery/jquery.min.js", "lib/web/jquery/jquery-migrate.js", "lib/web/jquery/jquery-migrate.min.js" @@ -177,8 +177,7 @@ "lib/web/jquery/jquery-ui.min.js" ], "twbs/bootstrap": [ - "lib/web/jquery/jquery.tabs.js", - "lib/web/jquery/jquery.popups.js" + "lib/web/jquery/jquery.tabs.js" ], "tinymce/tinymce": "lib/web/tiny_mce" } diff --git a/composer.lock b/composer.lock index ea9bad3526069363200decb3a1acf7fcbc66f512..468bb76ee6930d0827d24fe62177a0a2c0b0780e 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "e24c7a4c699d06b73cd408289bb4f2d2", + "hash": "bf5c9bfea7230f2f1647df81ce568d5c", "packages": [ { "name": "composer/composer", @@ -2024,29 +2024,32 @@ }, { "name": "phpmd/phpmd", - "version": "2.1.3", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/phpmd/phpmd.git", - "reference": "1a485d9db869137af5e9678bd844568c92998b25" + "reference": "580e6ca75b472a844389ab8df7a0b412901d0d91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpmd/phpmd/zipball/1a485d9db869137af5e9678bd844568c92998b25", - "reference": "1a485d9db869137af5e9678bd844568c92998b25", + "url": "https://api.github.com/repos/phpmd/phpmd/zipball/580e6ca75b472a844389ab8df7a0b412901d0d91", + "reference": "580e6ca75b472a844389ab8df7a0b412901d0d91", "shasum": "" }, "require": { "pdepend/pdepend": "2.0.*", "php": ">=5.3.0", - "symfony/config": "2.5.*", - "symfony/dependency-injection": "2.5.*", - "symfony/filesystem": "2.5.*" + "symfony/config": ">=2.4", + "symfony/dependency-injection": ">=2.4", + "symfony/filesystem": ">=2.4" + }, + "require-dev": { + "phpunit/phpunit": "*" }, "bin": [ "src/bin/phpmd" ], - "type": "library", + "type": "project", "autoload": { "psr-0": { "PHPMD\\": "src/main/php" @@ -2056,21 +2059,42 @@ "license": [ "BSD-3-Clause" ], - "description": "Official version of PHPMD handled with Composer.", - "time": "2014-09-25 15:56:22" + "authors": [ + { + "name": "Manuel Pichler", + "email": "github@manuel-pichler.de", + "homepage": "https://github.com/manuelpichler", + "role": "Project founder" + }, + { + "name": "Other contributors", + "homepage": "https://github.com/phpmd/phpmd/graphs/contributors", + "role": "Contributors" + } + ], + "description": "PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD.", + "homepage": "http://phpmd.org/", + "keywords": [ + "mess detection", + "mess detector", + "pdepend", + "phpmd", + "pmd" + ], + "time": "2015-01-25 13:46:59" }, { "name": "phpunit/php-code-coverage", - "version": "2.0.14", + "version": "2.0.15", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "ca158276c1200cc27f5409a5e338486bc0b4fc94" + "reference": "34cc484af1ca149188d0d9e91412191e398e0b67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ca158276c1200cc27f5409a5e338486bc0b4fc94", - "reference": "ca158276c1200cc27f5409a5e338486bc0b4fc94", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/34cc484af1ca149188d0d9e91412191e398e0b67", + "reference": "34cc484af1ca149188d0d9e91412191e398e0b67", "shasum": "" }, "require": { @@ -2083,7 +2107,7 @@ }, "require-dev": { "ext-xdebug": ">=2.1.4", - "phpunit/phpunit": "~4.1" + "phpunit/phpunit": "~4" }, "suggest": { "ext-dom": "*", @@ -2102,9 +2126,6 @@ ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], @@ -2122,7 +2143,7 @@ "testing", "xunit" ], - "time": "2014-12-26 13:28:33" + "time": "2015-01-24 10:06:35" }, { "name": "phpunit/php-file-iterator", @@ -2603,28 +2624,29 @@ }, { "name": "sebastian/exporter", - "version": "1.0.2", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "c7d59948d6e82818e1bdff7cadb6c34710eb7dc0" + "reference": "35ab8d385eef068186c83e23ae83c96b0288b3ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/c7d59948d6e82818e1bdff7cadb6c34710eb7dc0", - "reference": "c7d59948d6e82818e1bdff7cadb6c34710eb7dc0", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/35ab8d385eef068186c83e23ae83c96b0288b3ee", + "reference": "35ab8d385eef068186c83e23ae83c96b0288b3ee", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.3.3", + "sebastian/recursion-context": "~1.0" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "phpunit/phpunit": "~4.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { @@ -2664,7 +2686,60 @@ "export", "exporter" ], - "time": "2014-09-10 00:51:36" + "time": "2015-01-24 09:57:24" + }, + { + "name": "sebastian/recursion-context", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "3989662bbb30a29d20d9faa04a846af79b276252" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/3989662bbb30a29d20d9faa04a846af79b276252", + "reference": "3989662bbb30a29d20d9faa04a846af79b276252", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "time": "2015-01-24 09:48:32" }, { "name": "sebastian/version", @@ -2831,17 +2906,17 @@ }, { "name": "symfony/config", - "version": "v2.5.9", + "version": "v2.6.3", "target-dir": "Symfony/Component/Config", "source": { "type": "git", "url": "https://github.com/symfony/Config.git", - "reference": "c7309e33b719433d5cf3845d0b5b9608609d8c8e" + "reference": "d94f222eff99a22ce313555b78642b4873418d56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Config/zipball/c7309e33b719433d5cf3845d0b5b9608609d8c8e", - "reference": "c7309e33b719433d5cf3845d0b5b9608609d8c8e", + "url": "https://api.github.com/repos/symfony/Config/zipball/d94f222eff99a22ce313555b78642b4873418d56", + "reference": "d94f222eff99a22ce313555b78642b4873418d56", "shasum": "" }, "require": { @@ -2851,7 +2926,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "2.6-dev" } }, "autoload": { @@ -2875,29 +2950,32 @@ ], "description": "Symfony Config Component", "homepage": "http://symfony.com", - "time": "2015-01-03 08:01:13" + "time": "2015-01-03 08:01:59" }, { "name": "symfony/dependency-injection", - "version": "v2.5.9", + "version": "v2.6.3", "target-dir": "Symfony/Component/DependencyInjection", "source": { "type": "git", "url": "https://github.com/symfony/DependencyInjection.git", - "reference": "b04e6782962f8e3312274fd16fb6b37a8210a1c3" + "reference": "72db9adf2f6c42e773108038bcdaff263f325b4e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/b04e6782962f8e3312274fd16fb6b37a8210a1c3", - "reference": "b04e6782962f8e3312274fd16fb6b37a8210a1c3", + "url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/72db9adf2f6c42e773108038bcdaff263f325b4e", + "reference": "72db9adf2f6c42e773108038bcdaff263f325b4e", "shasum": "" }, "require": { "php": ">=5.3.3" }, + "conflict": { + "symfony/expression-language": "<2.6" + }, "require-dev": { "symfony/config": "~2.2", - "symfony/expression-language": "~2.4,>=2.4.10", + "symfony/expression-language": "~2.6", "symfony/yaml": "~2.1" }, "suggest": { @@ -2908,7 +2986,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "2.6-dev" } }, "autoload": { @@ -2932,7 +3010,7 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "http://symfony.com", - "time": "2015-01-05 08:51:41" + "time": "2015-01-05 17:41:06" }, { "name": "symfony/event-dispatcher", @@ -2994,17 +3072,17 @@ }, { "name": "symfony/filesystem", - "version": "v2.5.9", + "version": "v2.6.3", "target-dir": "Symfony/Component/Filesystem", "source": { "type": "git", "url": "https://github.com/symfony/Filesystem.git", - "reference": "d3c24d7d6e9c342008d8421b2fade460311647ea" + "reference": "a1f566d1f92e142fa1593f4555d6d89e3044a9b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Filesystem/zipball/d3c24d7d6e9c342008d8421b2fade460311647ea", - "reference": "d3c24d7d6e9c342008d8421b2fade460311647ea", + "url": "https://api.github.com/repos/symfony/Filesystem/zipball/a1f566d1f92e142fa1593f4555d6d89e3044a9b7", + "reference": "a1f566d1f92e142fa1593f4555d6d89e3044a9b7", "shasum": "" }, "require": { @@ -3013,7 +3091,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5-dev" + "dev-master": "2.6-dev" } }, "autoload": { @@ -3037,7 +3115,7 @@ ], "description": "Symfony Filesystem Component", "homepage": "http://symfony.com", - "time": "2015-01-03 21:04:44" + "time": "2015-01-03 21:13:09" }, { "name": "symfony/stopwatch", diff --git a/dev/tests/integration/testsuite/Magento/Backend/Controller/Adminhtml/System/VariableTest.php b/dev/tests/integration/testsuite/Magento/Backend/Controller/Adminhtml/System/VariableTest.php index b10e7eaabca6b153c1f7fae0bef80ee1d65b9989..663d72757afa209bedd29491f43e297bf50c9d8f 100644 --- a/dev/tests/integration/testsuite/Magento/Backend/Controller/Adminhtml/System/VariableTest.php +++ b/dev/tests/integration/testsuite/Magento/Backend/Controller/Adminhtml/System/VariableTest.php @@ -17,6 +17,6 @@ class VariableTest extends \Magento\Backend\Utility\Controller { $this->dispatch('backend/admin/system_variable/edit'); $body = $this->getResponse()->getBody(); - $this->assertContains('function toggleValueElement(element) {', $body); + $this->assertContains('window.toggleValueElement = function(element) {', $body); } } diff --git a/dev/tests/js/jsTestDriverOrder.php b/dev/tests/js/jsTestDriverOrder.php index 70f17d874e5aa74055595d025bedee24b82917ff..221a4c40d0e1c57f6c0615852eba8acfc2dce8de 100644 --- a/dev/tests/js/jsTestDriverOrder.php +++ b/dev/tests/js/jsTestDriverOrder.php @@ -9,7 +9,7 @@ * @return array */ return [ - '/lib/web/jquery/jquery.js', + '/lib/web/jquery.js', '/lib/web/jquery/jquery-migrate.js', '/lib/web/jquery/jquery-ui-1.9.2.js', '/dev/tests/js/framework/requirejs-util.js', diff --git a/dev/tests/js/spec/integration/Magento/PageCache/frontend/js/pageCacheSpec.js b/dev/tests/js/spec/integration/Magento/PageCache/frontend/js/pageCacheSpec.js new file mode 100644 index 0000000000000000000000000000000000000000..a1c8a63fab3f1ad8a09b036c5a5c5898afc8dee3 --- /dev/null +++ b/dev/tests/js/spec/integration/Magento/PageCache/frontend/js/pageCacheSpec.js @@ -0,0 +1,340 @@ +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ + +/*global describe*/ +/*global beforeEach*/ +/*global afterEach*/ +/*global it*/ +/*global expect*/ +/*global jasmine*/ +/*global spyOn*/ +define([ + 'jquery', + 'Magento_PageCache/js/page-cache' +], function ($) { + 'use strict'; + + if (!Function.prototype.bind) { + /** + * @param {Object} bind + * @returns {Function} + */ + Function.prototype.bind = function (bind) { + var self = this; + + /** + * @returns {Function} + */ + return function () { + var args = Array.prototype.slice.call(arguments); + + return self.apply(bind || null, args); + }; + }; + } + + describe('Testing html-comments-parser $.fn.comments behavior', function () { + var element, + iframe, + comment, + host; + + beforeEach(function () { + element = $('<div />'); + iframe = $('<iframe />'); + comment = '<!--COMMENT CONTENT-->'; + host = window.location.hostname; + + $('body') + .append(element) + .append(iframe); + }); + + afterEach(function () { + $(element).remove(); + $(iframe).remove(); + }); + + it('comments fn exists', function () { + expect($.fn.comments).toBeDefined(); + expect($.fn.comments()).toEqual([]); + }); + + it('on empty node comments() returns empty Array', function () { + expect($(element).comments()).toEqual([]); + expect($(iframe).insertAfter('body').comments()).toEqual([]); + }); + + it('on non-empty node comments() returns empty Array with nodes', function () { + element.html(comment); + expect($(element).comments().length).toEqual(1); + expect($(element).comments()[0].nodeType).toEqual(8); + expect($(element).comments()[0].nodeValue).toEqual('COMMENT CONTENT'); + }); + + it('on iframe from same host returns Array with nodes', function () { + iframe.contents().find('body').html(comment); + iframe.attr('src', '//' + host + '/'); + + expect(iframe.comments().length).toEqual(1); + expect(iframe.comments()[0].nodeType).toEqual(8); + expect(iframe.comments()[0].nodeValue).toEqual('COMMENT CONTENT'); + }); + + it('on iframe from other host returns empty Array', function () { + iframe.contents().find('body').html(comment); + iframe.attr('src', '//' + host + '.otherHost/'); + + expect(iframe.comments().length).toEqual(0); + }); + }); + + describe('Testing msgBox Widget', function () { + var wdContainer, + msgCookieName, + msgContainer; + + beforeEach(function () { + wdContainer = $('<div />'); + msgContainer = $('<div />'); + msgCookieName = 'FAKE_COOKIE'; + }); + + afterEach(function () { + $(wdContainer).remove(); + $(msgContainer).remove(); + }); + + it('widget extends jQuery object', function () { + expect($.fn.msgBox).toBeDefined(); + }); + + it('widget gets options', function () { + wdContainer.msgBox({ + 'msgBoxCookieName': msgCookieName + }); + expect(wdContainer.msgBox('option', 'msgBoxCookieName')).toBe('FAKE_COOKIE'); + }); + + it('widget disables cookie if it exist', function () { + spyOn($.mage.cookies, 'get').and.returnValue('FAKE_MAGE_COOKIE'); + spyOn($.mage.cookies, 'clear'); + + wdContainer.msgBox({ + 'msgBoxSelector': msgContainer + }); + + expect($.mage.cookies.get).toHaveBeenCalled(); + expect($.mage.cookies.clear).toHaveBeenCalled(); + }); + + it('widget disables messageBox if cookie not exist', function () { + spyOn($.mage.cookies, 'get'); + + wdContainer.msgBox({ + 'msgBoxSelector': msgContainer + }); + + expect($.mage.cookies.get).toHaveBeenCalled(); + expect(msgContainer.is(':hidden')).toBeTruthy(); + }); + + it('widget exist on load on body', function (done) { + $(function () { + expect($('body').data('mageMsgBox')).toBeDefined(); + done(); + }); + }); + }); + + describe('Testing FormKey Widget', function () { + var wdContainer, + msgCookieName, + inputContainer; + + beforeEach(function () { + wdContainer = $('<div />'); + inputContainer = $('<input />'); + msgCookieName = 'FAKE_COOKIE'; + }); + + afterEach(function () { + $(wdContainer).remove(); + $(inputContainer).remove(); + }); + + it('widget extends jQuery object', function () { + expect($.fn.formKey).toBeDefined(); + }); + + it('widget set value to input[form_key]', function () { + spyOn($.mage.cookies, 'get').and.returnValue('FAKE_COOKIE'); + + wdContainer.formKey({ + 'inputSelector': inputContainer + }); + + expect($.mage.cookies.get).toHaveBeenCalled(); + expect(inputContainer.val()).toBe('FAKE_COOKIE'); + }); + + it('widget set value to input[form_key]', function () { + spyOn($.mage.cookies, 'set'); + spyOn($.mage.cookies, 'get'); + + wdContainer.formKey({ + 'inputSelector': inputContainer + }); + + expect($.mage.cookies.get).toHaveBeenCalled(); + expect($.mage.cookies.set).toHaveBeenCalled(); + expect(inputContainer.val()).toEqual(jasmine.any(String)); + }); + + it('widget exist on load on body', function (done) { + $(function () { + expect($('body').data('mageFormKey')).toBeDefined(); + done(); + }); + }); + }); + + describe('Testing PageCache Widget', function () { + var wdContainer, + versionCookieName, + pageBlockContainer; + + beforeEach(function () { + wdContainer = $('<div />'); + pageBlockContainer = $('<div />'); + versionCookieName = 'FAKE_COOKIE'; + }); + + afterEach(function () { + $(wdContainer).remove(); + $(pageBlockContainer).remove(); + }); + + it('widget extends jQuery object', function () { + expect($.fn.pageCache).toBeDefined(); + }); + + it('widget breaks if no private_content_version cookie', function () { + spyOn($.mage.cookies, 'get'); + spyOn($.fn, 'comments'); + + wdContainer.pageCache(); + + expect($.mage.cookies.get).toHaveBeenCalled(); + expect($.fn.comments).not.toHaveBeenCalled(); + }); + + it('_searchPlaceholders called only when HTML_COMMENTS', function () { + var nodes; + spyOn($.mage.cookies, 'get').and.returnValue('FAKE_VERSION_COOKIE'); + spyOn($.mage.pageCache.prototype, '_searchPlaceholders'); + + wdContainer + .html('<!-- BLOCK FAKE_BLOCK -->FAKE_TEXT<!-- /BLOCK FAKE_BLOCK -->') + .pageCache(); + + nodes = wdContainer.comments(); + expect(nodes.length).toEqual(2); + + expect($.mage.cookies.get).toHaveBeenCalled(); + expect($.mage.pageCache.prototype._searchPlaceholders).toHaveBeenCalled(); + expect($.mage.pageCache.prototype._searchPlaceholders).toHaveBeenCalledWith(nodes); + }); + + it('_searchPlaceholders return Array of blocks', function () { + var nodes, + searches; + spyOn($.mage.cookies, 'get').and.returnValue('FAKE_VERSION_COOKIE'); + + wdContainer + .html('<!-- BLOCK FAKE_BLOCK -->FAKE_TEXT<!-- /BLOCK FAKE_BLOCK -->') + .pageCache(); + + nodes = wdContainer.comments(); + searches = wdContainer.data('pageCache')._searchPlaceholders(nodes); + expect(wdContainer.data('pageCache')._searchPlaceholders()).toEqual([]); + expect(searches[0]).toEqual(jasmine.objectContaining({ + name: 'FAKE_BLOCK' + })); + expect(searches[0].openElement.nodeType).toBeDefined(); + expect(searches[0].closeElement.nodeType).toBeDefined(); + }); + + it('_searchPlaceholders called only when HTML_COMMENTS', function () { + var nodes; + spyOn($.mage.cookies, 'get').and.returnValue('FAKE_VERSION_COOKIE'); + spyOn($.mage.pageCache.prototype, '_searchPlaceholders'); + + wdContainer + .html('<!-- BLOCK FAKE_BLOCK -->FAKE_TEXT<!-- /BLOCK FAKE_BLOCK -->') + .pageCache(); + + nodes = wdContainer.comments(); + expect(nodes.length).toEqual(2); + + expect($.mage.cookies.get).toHaveBeenCalled(); + expect($.mage.pageCache.prototype._searchPlaceholders).toHaveBeenCalled(); + expect($.mage.pageCache.prototype._searchPlaceholders).toHaveBeenCalledWith(nodes); + }); + + it('_replacePlaceholder append HTML after sibling node', function () { + var replacer, + searcher, + placeholders, + context; + + context = { + options: { + patternPlaceholderOpen: /^ BLOCK (.+) $/, + patternPlaceholderClose: /^ \/BLOCK (.+) $/ + } + }; + replacer = $.mage.pageCache.prototype._replacePlaceholder.bind(context); + searcher = $.mage.pageCache.prototype._searchPlaceholders.bind(context); + + wdContainer + .html('<span></span><!-- BLOCK FAKE_BLOCK -->FAKE_TEXT<!-- /BLOCK FAKE_BLOCK -->'); + placeholders = searcher(wdContainer.comments()); + replacer(placeholders[0], '<span>FAKE_HTML</span>'); + + expect(wdContainer.html()).toEqual('<span></span><span>FAKE_HTML</span>'); + }); + + it('_replacePlaceholder prepend HTML if no sibling', function () { + var replacer, + searcher, + placeholders, + context; + + context = { + options: { + patternPlaceholderOpen: /^ BLOCK (.+) $/, + patternPlaceholderClose: /^ \/BLOCK (.+) $/ + } + }; + replacer = $.mage.pageCache.prototype._replacePlaceholder.bind(context); + searcher = $.mage.pageCache.prototype._searchPlaceholders.bind(context); + + wdContainer + .html('<!-- BLOCK FAKE_BLOCK -->FAKE_TEXT<!-- /BLOCK FAKE_BLOCK -->'); + placeholders = searcher(wdContainer.comments()); + replacer(placeholders[0], '<span>FAKE_HTML</span>'); + + expect(wdContainer.html()).toEqual('<span>FAKE_HTML</span>'); + }); + + it('widget exist on load on body', function (done) { + $(function () { + expect($('body').data('magePageCache')).toBeDefined(); + done(); + }); + }); + }); +}); diff --git a/dev/tests/js/testsuite/lib/ko/datepicker/index.html b/dev/tests/js/testsuite/lib/ko/datepicker/index.html index 91a9d8696837cd4fcd44707875e34e555c3bedce..40dd387ffff3019885817bf388f47bdd74875a80 100644 --- a/dev/tests/js/testsuite/lib/ko/datepicker/index.html +++ b/dev/tests/js/testsuite/lib/ko/datepicker/index.html @@ -14,7 +14,7 @@ <base href="../../../"/> <link type="text/css" rel="stylesheet" href="framework/qunit/qunit-1.14.0.css"/> <script type="text/javascript" src="framework/qunit/qunit-1.14.0.js"></script> - <script src="../../../pub/lib/jquery/jquery.js"></script> + <script src="../../../pub/lib/jquery.js"></script> <script src="../../../pub/moment.js"></script> <script src="../../../pub/lib/ko/ko.js"></script> <script type="text/javascript" src="testsuite/lib/ko/datepicker/datepicker.js"></script> diff --git a/dev/tests/js/testsuite/lib/storage/index.html b/dev/tests/js/testsuite/lib/storage/index.html index 815fdc1b2d39bd2cd555b34277bb595f589ede05..d8a724c4239dd21da2409f88825a6f489e5eef30 100644 --- a/dev/tests/js/testsuite/lib/storage/index.html +++ b/dev/tests/js/testsuite/lib/storage/index.html @@ -14,7 +14,7 @@ <base href="../../../"/> <link type="text/css" rel="stylesheet" href="framework/qunit/qunit-1.14.0.css"/> <script type="text/javascript" src="framework/qunit/qunit-1.14.0.js"></script> - <script src="../../../pub/lib/jquery/jquery.js"></script> + <script src="../../../pub/lib/jquery.js"></script> <script src="../../../pub/lib/jquery/jquery-ui.js"></script> <script src="../../../pub/lib/jquery/jquery.cookie.js"></script> <script src="../../../pub/lib/lib/storage.js"></script> diff --git a/dev/tests/js/testsuite/mage/accordion/index.html b/dev/tests/js/testsuite/mage/accordion/index.html index caf0d37ac7f17ff02f810936a85735eb858f55ad..0a06f9508838afcf231f0b64c8e58ff168ca90b2 100644 --- a/dev/tests/js/testsuite/mage/accordion/index.html +++ b/dev/tests/js/testsuite/mage/accordion/index.html @@ -14,7 +14,7 @@ <title>Accordion Widget: QUnit Tests </title> <base href="../../../"/> <link type="text/css" rel="stylesheet" href="framework/qunit/qunit-1.14.0.css"/> - <script type="text/javascript" src="../../../pub/lib/jquery/jquery.js"></script> + <script type="text/javascript" src="../../../pub/lib/jquery.js"></script> <script type="text/javascript" src="../../../pub/lib/jquery/jquery-ui.js"></script> <script type="text/javascript" src="framework/qunit/qunit-1.14.0.js"></script> <script type="text/javascript" src="../../../pub/lib/mage/mage.js"></script> diff --git a/dev/tests/js/testsuite/mage/calendar/calendar.html b/dev/tests/js/testsuite/mage/calendar/calendar.html index 815dcd1e5cdb9f358ec40a6ffb769094d27fbb83..cde85a37fb06198ba3f162a2e2df712ec9ec8183 100644 --- a/dev/tests/js/testsuite/mage/calendar/calendar.html +++ b/dev/tests/js/testsuite/mage/calendar/calendar.html @@ -14,7 +14,7 @@ <title>Calendar Widget: QUnit Tests </title> <base href="../../../"/> <link type="text/css" rel="stylesheet" href="framework/qunit/qunit-1.14.0.css"/> - <script type="text/javascript" src="../../../lib/web/jquery/jquery.js"></script> + <script type="text/javascript" src="../../../lib/web/jquery.js"></script> <script type="text/javascript" src="../../../lib/web/jquery/jquery-ui.js"></script> <script type="text/javascript" src="../../../lib/web/jquery/jquery-ui-timepicker-addon.js"></script> <script type="text/javascript" src="framework/qunit/qunit-1.14.0.js"></script> diff --git a/dev/tests/js/testsuite/mage/collapsible/index.html b/dev/tests/js/testsuite/mage/collapsible/index.html index 84a1c8b23deb049f686a928ee78c6067fd9b766b..f24d1a6421b77725a4d5bfe9a39fdb108ef9aa62 100644 --- a/dev/tests/js/testsuite/mage/collapsible/index.html +++ b/dev/tests/js/testsuite/mage/collapsible/index.html @@ -15,7 +15,7 @@ <base href="../../../"/> <link type="text/css" rel="stylesheet" href="framework/qunit/qunit-1.14.0.css"/> <script type="text/javascript" src="framework/qunit/qunit-1.14.0.js"></script> - <script src="../../../pub/lib/jquery/jquery.js"></script> + <script src="../../../pub/lib/jquery.js"></script> <script src="../../../pub/lib/jquery/jquery-ui.js"></script> <script type="text/javascript" src="../../../pub/lib/mage/mage.js"></script> <script type="text/javascript" src="../../../pub/lib/mage/collapsible.js"></script> diff --git a/dev/tests/js/testsuite/mage/dropdown/index.html b/dev/tests/js/testsuite/mage/dropdown/index.html index a973c94d95c923f3b2432e7e48123946c05a70b2..ef696958453e56a45fcdf9fb333a342805e51e8b 100644 --- a/dev/tests/js/testsuite/mage/dropdown/index.html +++ b/dev/tests/js/testsuite/mage/dropdown/index.html @@ -14,7 +14,7 @@ <base href="../../../"/> <link type="text/css" rel="stylesheet" href="framework/qunit/qunit-1.14.0.css"/> <script type="text/javascript" src="framework/qunit/qunit-1.14.0.js"></script> - <script src="../../../lib/web/jquery/jquery.js"></script> + <script src="../../../lib/web/jquery.js"></script> <script src="../../../lib/web/jquery/jquery-ui.js"></script> <script type="text/javascript" src="../../../lib/web/mage/mage.js"></script> <script type="text/javascript" src="../../../lib/web/mage/dropdown.js"></script> diff --git a/dev/tests/js/testsuite/mage/list/index.html b/dev/tests/js/testsuite/mage/list/index.html index ed7e4132bdd3dab2b4c820d84779411f4bd2e0e7..4080d6b6816c0fbbb825fa87fe1c6c03fe3721de 100644 --- a/dev/tests/js/testsuite/mage/list/index.html +++ b/dev/tests/js/testsuite/mage/list/index.html @@ -11,7 +11,7 @@ <base href="../../../"/> <link type="text/css" rel="stylesheet" href="framework/qunit/qunit-1.14.0.css"/> <script type="text/javascript" src="framework/qunit/qunit-1.14.0.js"></script> - <script src="../../../pub/lib/jquery/jquery.js"></script> + <script src="../../../pub/lib/jquery.js"></script> <script src="../../../pub/lib/jquery/jquery-ui.js"></script> <script type="text/javascript" src="../../../pub/lib/mage/mage.js"></script> <script type="text/javascript" src="../../../pub/lib/jquery/handlebars/handlebars-v1.3.0.js"></script> diff --git a/dev/tests/js/testsuite/mage/loader/loader.html b/dev/tests/js/testsuite/mage/loader/loader.html index 5565cc09846eecbb3b50183ba4c2b336eee22745..720538b191dc4da1616a5f35a2dc3f31cc6951c8 100644 --- a/dev/tests/js/testsuite/mage/loader/loader.html +++ b/dev/tests/js/testsuite/mage/loader/loader.html @@ -10,7 +10,7 @@ <title>Unit test</title> <base href="../../../"/> <link type="text/css" rel="stylesheet" href="framework/qunit/qunit-1.14.0.css"/> - <script src="../../../lib/web/jquery/jquery.js"></script> + <script src="../../../lib/web/jquery.js"></script> <script src="../../../lib/web/jquery/jquery-ui.js"></script> <script type="text/javascript" src="framework/qunit/qunit-1.14.0.js"></script> <script type="text/javascript" src="../../../lib/web/mage/mage.js"></script> diff --git a/dev/tests/js/testsuite/mage/menu/index.html b/dev/tests/js/testsuite/mage/menu/index.html index 9c53b679a867dab920cec3fb9ac2f833922180b7..3b012485dd3133b7ff85d9b8cc38cceb97562a01 100644 --- a/dev/tests/js/testsuite/mage/menu/index.html +++ b/dev/tests/js/testsuite/mage/menu/index.html @@ -14,7 +14,7 @@ <base href="../../../"/> <link type="text/css" rel="stylesheet" href="framework/qunit/qunit-1.14.0.css"/> <script type="text/javascript" src="framework/qunit/qunit-1.14.0.js"></script> - <script src="../../../pub/lib/jquery/jquery.js"></script> + <script src="../../../pub/lib/jquery.js"></script> <script src="../../../pub/lib/jquery/jquery-ui.js"></script> <script type="text/javascript" src="../../../pub/lib/mage/mage.js"></script> <script type="text/javascript" src="../../../pub/lib/mage/menu.js"></script> diff --git a/dev/tests/js/testsuite/mage/tabs/index.html b/dev/tests/js/testsuite/mage/tabs/index.html index 10350f0decb0f2d29998e0013d08d9548aaf4d67..26eaba784c16956776067c3cae90f39fb575be01 100644 --- a/dev/tests/js/testsuite/mage/tabs/index.html +++ b/dev/tests/js/testsuite/mage/tabs/index.html @@ -11,7 +11,7 @@ <title>Tabs Widget: QUnit Tests </title> <base href="../../../"/> <link type="text/css" rel="stylesheet" href="framework/qunit/qunit-1.14.0.css"/> - <script type="text/javascript" src="../../../pub/lib/jquery/jquery.js"></script> + <script type="text/javascript" src="../../../pub/lib/jquery.js"></script> <script type="text/javascript" src="../../../pub/lib/jquery/jquery-ui.js"></script> <script type="text/javascript" src="framework/qunit/qunit-1.14.0.js"></script> <script type="text/javascript" src="../../../pub/lib/mage/mage.js"></script> diff --git a/dev/tests/js/testsuite/mage/validation/index.html b/dev/tests/js/testsuite/mage/validation/index.html index 844402236cd82ceec69416b0284d482dcd8bc8d2..c04e5e7203f8246a04e0f4603480a180e1573d3c 100644 --- a/dev/tests/js/testsuite/mage/validation/index.html +++ b/dev/tests/js/testsuite/mage/validation/index.html @@ -14,7 +14,7 @@ <base href="../../../"/> <link type="text/css" rel="stylesheet" href="framework/qunit/qunit-1.14.0.css"/> <script type="text/javascript" src="framework/qunit/qunit-1.14.0.js"></script> - <script src="../../../lib/web/jquery/jquery.js"></script> + <script src="../../../lib/web/jquery.js"></script> <script src="../../../lib/web/jquery/jquery-ui.js"></script> <script type="text/javascript" src="../../../lib/web/mage/mage.js"></script> diff --git a/dev/tests/static/framework/Magento/TestFramework/Inspection/WordsFinder.php b/dev/tests/static/framework/Magento/TestFramework/Inspection/WordsFinder.php index c54d302515b5643cd4b0b208249595b703572466..9c13e8ef8bce9db5141f762b0697e520b719371c 100644 --- a/dev/tests/static/framework/Magento/TestFramework/Inspection/WordsFinder.php +++ b/dev/tests/static/framework/Magento/TestFramework/Inspection/WordsFinder.php @@ -47,7 +47,9 @@ class WordsFinder * * @var array */ - protected $copyrightSkipList = []; + protected $copyrightSkipList = [ + 'lib/web/legacy-build.min.js' + ]; /** * Whether copyright presence should be checked or not diff --git a/dev/tests/static/testsuite/Magento/Test/Js/_files/blacklist/core.txt b/dev/tests/static/testsuite/Magento/Test/Js/_files/blacklist/core.txt index 33b5663b5752f3eb89c6994adcf3d97e9a6e9d39..6b402dd89cf7b8ce346523b86fc8aff952d2e1fd 100644 --- a/dev/tests/static/testsuite/Magento/Test/Js/_files/blacklist/core.txt +++ b/dev/tests/static/testsuite/Magento/Test/Js/_files/blacklist/core.txt @@ -16,4 +16,4 @@ dev/tests/js/testsuite/mage/translate_inline_vde/translate-inline-vde-test.js dev/tests/js/framework/qunit lib/web/mage/adminhtml lib/web/mage/captcha.js -lib/web/mage/jquery-no-conflict.js +lib/web/legacy-build.min.js diff --git a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml index bbd9e15d86aec857d5823644aa910d62a8a11fdf..788ac1f5f0eae5a3087471f022d6b6e0ea74af17 100644 --- a/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml +++ b/dev/tests/static/testsuite/Magento/Test/Legacy/_files/words_ce.xml @@ -66,29 +66,5 @@ <path>dev/tests/api-functional/testsuite/Magento/Webapi/Routing/RequestIdOverrideTest.php</path> <word>overriden</word> </item> - <item> - <path>app/code/Magento/Bundle/view/adminhtml/templates/product/edit/bundle.phtml</path> - <word>head.js</word> - </item> - <item> - <path>app/code/Magento/Webapi/view/adminhtml/templates/integration/activate/permissions/tab/webapi.phtml</path> - <word>head.js</word> - </item> - <item> - <path>app/code/Magento/GiftCard/view/adminhtml/templates/catalog/product/composite/fieldset/giftcard.phtml</path> - <word>head.js</word> - </item> - <item> - <path>app/code/Magento/GiftRegistry/view/adminhtml/templates/edit/attributes.phtml</path> - <word>head.js</word> - </item> - <item> - <path>app/code/Magento/GiftRegistry/view/adminhtml/templates/edit/type/select.phtml</path> - <word>head.js</word> - </item> - <item> - <path>lib/web/mage/mage.js</path> - <word>head.js</word> - </item> </whitelist> </config> diff --git a/dev/tests/unit/testsuite/Magento/Framework/View/Page/Config/_files/template_head.xml b/dev/tests/unit/testsuite/Magento/Framework/View/Page/Config/_files/template_head.xml index 50eefe25da2614aece9e49b34e10c1ea7dd58b15..1e9db0ed75e382d6db14e1b44e7535307217faee 100644 --- a/dev/tests/unit/testsuite/Magento/Framework/View/Page/Config/_files/template_head.xml +++ b/dev/tests/unit/testsuite/Magento/Framework/View/Page/Config/_files/template_head.xml @@ -10,7 +10,6 @@ <title>Test title</title> <meta name="meta_name" content="meta_content"/> <css src="path/file.css" media="all" /> - <link src="mage/jquery-no-conflict.js" ie_condition="lt IE 7" /> <script src="path/file.js" defer="defer"/> <remove src="path/remove/file.css"/> <attribute name="head_attribute_name" value="head_attribute_value"/> diff --git a/dev/tools/grunt/tasks/mage-minify.js b/dev/tools/grunt/tasks/mage-minify.js new file mode 100644 index 0000000000000000000000000000000000000000..296134954887593009c566fca50bb0ea27c11bb3 --- /dev/null +++ b/dev/tools/grunt/tasks/mage-minify.js @@ -0,0 +1,48 @@ +/** + * Copyright © 2015 Magento. All rights reserved. + * See COPYING.txt for license details. + */ +module.exports = function (grunt) { + 'use strict'; + + var compressor = require('node-minify'), + _ = require('underscore'); + + /** + * Helper function used to create config object for compressor. + * + * @param {Object} options - Options object for a current task. + * @param {Object} file - File object with 'sorce' and 'destination' properties. + * @return {Object} Config object for compressor. + */ + function getConfig(options, file) { + return _.extend({ + fileIn: file.src, + fileOut: file.dest + }, options); + } + + grunt.registerMultiTask('mage-minify', 'Minify files with a various compressor engines', function () { + var done = this.async(), + files = this.files, + total = files.length, + options = this.options(); + + this.files.forEach(function (file, i) { + var config = getConfig(options, file); + + /** + * Callback function. + */ + config.callback = function (err) { + if (err) { + done(false); + } else if (i === total - 1) { + done(); + } + }; + + new compressor.minify(config); + }); + }); +}; diff --git a/lib/internal/Magento/Framework/Data/Form/Element/Editor.php b/lib/internal/Magento/Framework/Data/Form/Element/Editor.php index c8e58d064926d4e0aff3ec2aea9aba1f4c911f94..2afcaf9f3f01d9fb72c52183b92e883654feb28d 100644 --- a/lib/internal/Magento/Framework/Data/Form/Element/Editor.php +++ b/lib/internal/Magento/Framework/Data/Form/Element/Editor.php @@ -115,7 +115,7 @@ class Editor extends Textarea ' <script type="text/javascript"> //<![CDATA[ - require(["jquery", "mage/translate", "mage/adminhtml/events", "mage/adminhtml/wysiwyg/tiny_mce/setup"], function(jQuery){' . + require(["jquery", "mage/translate", "mage/adminhtml/events", "mage/adminhtml/wysiwyg/tiny_mce/setup", "mage/adminhtml/wysiwyg/widget"], function(jQuery){' . "\n" . '(function($) {$.mage.translate.add(' . \Zend_Json::encode( diff --git a/lib/web/bootstrap.js b/lib/web/bootstrap.js deleted file mode 100644 index 99d33f997292477858e0e350a1e4d555db755e12..0000000000000000000000000000000000000000 --- a/lib/web/bootstrap.js +++ /dev/null @@ -1,5 +0,0 @@ -/** - * - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ \ No newline at end of file diff --git a/lib/web/dnd.js b/lib/web/dnd.js deleted file mode 100644 index 1e1c5386cb0c8cc8d8c3bccf43d3caad95dc0401..0000000000000000000000000000000000000000 --- a/lib/web/dnd.js +++ /dev/null @@ -1,664 +0,0 @@ -// webkitdragdrop.js v1.0, Mon May 15 2010 -// -// Copyright (c) 2010 Tommaso Buvoli (http://www.tommasobuvoli.com) -// No Extra Libraries are required, simply download this file, add it to your pages! -// -// To See this library in action, grab an ipad and head over to http://www.gotproject.com -// webkitdragdrop is freely distributable under the terms of an MIT-style license. - - -//Description -// Because this library was designed to run without requiring any other libraries, several basic helper functions were implemented -// 6 helper functions in this webkit_tools class have been taked directly from Prototype 1.6.1 (http://prototypejs.org/) (c) 2005-2009 Sam Stephenson - -var webkit_tools = -{ - //$ function - simply a more robust getElementById - - $:function(e) - { - if(typeof(e) == 'string') - { - return document.getElementById(e); - } - return e; - }, - - //extend function - copies the values of b into a (Shallow copy) - - extend:function(a,b) - { - for (var key in b) - { - a[key] = b[key]; - } - return a; - }, - - //empty function - used as defaut for events - - empty:function() - { - - }, - - //remove null values from an array - - compact:function(a) - { - var b = [] - var l = a.length; - for(var i = 0; i < l; i ++) - { - if(a[i] !== null) - { - b.push(a[i]); - } - } - return b; - }, - - //DESCRIPTION - // This function was taken from the internet (http://robertnyman.com/2006/04/24/get-the-rendered-style-of-an-element/) and returns - // the computed style of an element independently from the browser - //INPUT - // oELM (DOM ELEMENT) element whose style should be extracted - // strCssRule element - - getCalculatedStyle:function(oElm, strCssRule) - { - var strValue = ""; - if(document.defaultView && document.defaultView.getComputedStyle){ - strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule); - } - else if(oElm.currentStyle){ - strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){ - return p1.toUpperCase(); - }); - strValue = oElm.currentStyle[strCssRule]; - } - return strValue; - }, - - //bindAsEventListener function - used to bind events - - bindAsEventListener:function(f,object) - { - var __method = f; - return function(event) { - __method.call(object, event || window.event); - }; - }, - - //cumulative offset - courtesy of Prototype (http://www.prototypejs.org) - - cumulativeOffset:function(element) - { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - if (element.offsetParent == document.body) - if (element.style.position == 'absolute') break; - - element = element.offsetParent; - } while (element); - - return {left : valueL, top : valueT}; - }, - - //getDimensions - courtesy of Prototype (http://www.prototypejs.org) - - getDimensions: function(element) - { - var display = element.style.display; - if (display != 'none' && display != null) // Safari bug - return {width: element.offsetWidth, height: element.offsetHeight}; - - var els = element.style; - var originalVisibility = els.visibility; - var originalPosition = els.position; - var originalDisplay = els.display; - els.visibility = 'hidden'; - if (originalPosition != 'fixed') // Switching fixed to absolute causes issues in Safari - els.position = 'absolute'; - els.display = 'block'; - var originalWidth = element.clientWidth; - var originalHeight = element.clientHeight; - els.display = originalDisplay; - els.position = originalPosition; - els.visibility = originalVisibility; - return {width: originalWidth, height: originalHeight}; - }, - - //hasClassName - courtesy of Prototype (http://www.prototypejs.org) - - hasClassName: function(element, className) - { - var elementClassName = element.className; - return (elementClassName.length > 0 && (elementClassName == className || - new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); - }, - - //addClassName - courtesy of Prototype (http://www.prototypejs.org) - - addClassName: function(element, className) - { - if (!this.hasClassName(element, className)) - element.className += (element.className ? ' ' : '') + className; - return element; - }, - - //removeClassName - courtesy of Prototype (http://www.prototypejs.org) - - removeClassName: function(element, className) - { - element.className = this.strip(element.className.replace(new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ')); - return element; - }, - - //strip - courtesy of Prototype (http://www.prototypejs.org) - - strip:function(s) - { - return s.replace(/^\s+/, '').replace(/\s+$/, ''); - } - -} - -//Description -// Droppable fire events when a draggable is dropped on them - -var webkit_droppables = function() -{ - this.initialize = function() - { - this.droppables = []; - this.droppableRegions = []; - } - - this.add = function(root, instance_props) - { - root = webkit_tools.$(root); - var default_props = {accept : [], hoverClass : null, onDrop : webkit_tools.empty, onOver : webkit_tools.empty, onOut : webkit_tools.empty}; - default_props = webkit_tools.extend(default_props, instance_props || {}); - this.droppables.push({r : root, p : default_props}); - } - - this.remove = function(root) - { - root = webkit_tools.$(root); - var d = this.droppables; - var i = d.length; - while(i--) - { - if(d[i].r == root) - { - d[i] = null; - this.droppables = webkit_tools.compact(d); - return true; - } - } - return false; - } - - //calculate position and size of all droppables - - this.prepare = function() - { - var d = this.droppables; - var i = d.length; - var dR = []; - var r = null; - - while(i--) - { - r = d[i].r; - if(r.style.display != 'none') - { - dR.push({i : i, size : webkit_tools.getDimensions(r), offset : webkit_tools.cumulativeOffset(r)}) - } - } - - this.droppableRegions = dR; - } - - this.finalize = function(x,y,r,e) - { - var indices = this.isOver(x,y); - var index = this.maxZIndex(indices); - var over = this.process(index,r); - if(over) - { - this.drop(index, r,e); - } - this.process(-1,r); - return over; - } - - this.check = function(x,y,r,e) - { - var indices = this.isOver(x,y); - var index = this.maxZIndex(indices); - return this.process(index,r, e); - } - - this.isOver = function(x, y) - { - var dR = this.droppableRegions; - var i = dR.length; - var active = []; - var r = 0; - var maxX = 0; - var minX = 0; - var maxY = 0; - var minY = 0; - - while(i--) - { - r = dR[i]; - - minY = r.offset.top; - maxY = minY + r.size.height; - - if((y > minY) && (y < maxY)) - { - minX = r.offset.left; - maxX = minX + r.size.width; - - if((x > minX) && (x < maxX)) - { - active.push(r.i); - } - } - } - - return active; - } - - this.maxZIndex = function(indices) - { - var d = this.droppables; - var l = indices.length; - var index = -1; - - var maxZ = -100000000; - var curZ = 0; - - while(l--) - { - curZ = parseInt(d[indices[l]].r.style.zIndex || 0); - if(curZ > maxZ) - { - maxZ = curZ; - index = indices[l]; - } - } - - return index; - } - - this.process = function(index, draggableRoot, e) - { - //only perform update if a change has occurred - if(this.lastIndex != index) - { - //remove previous - if(this.lastIndex != null) - { - var d = this.droppables[this.lastIndex] - var p = d.p; - var r = d.r; - - if(p.hoverClass) - { - webkit_tools.removeClassName(r,p.hoverClass); - } - p.onOut(draggableRoot, e); - this.lastIndex = null; - this.lastOutput = false; - } - - //add new - if(index != -1) - { - var d = this.droppables[index] - var p = d.p; - var r = d.r; - - if(this.hasClassNames(draggableRoot, p.accept)) - { - if(p.hoverClass) - { - webkit_tools.addClassName(r,p.hoverClass); - } - p.onOver(draggableRoot, e); - this.lastIndex = index; - this.lastOutput = true; - } - } - } - return this.lastOutput; - } - - this.drop = function(index, r, e) - { - if(index != -1) - { - this.droppables[index].p.onDrop(r,e); - } - } - - this.hasClassNames = function(r, names) - { - var l = names.length; - if(l == 0){return true} - while(l--) - { - if(webkit_tools.hasClassName(r,names[l])) - { - return true; - } - } - return false; - } - - this.initialize(); -} - -webkit_drop = new webkit_droppables(); - -//Description -//webkit draggable - allows users to drag elements with their hands - -var webkit_draggable = function(r, ip) -{ - this.ready = false; - this.timeout = undefined; - this.initialize = function(root, instance_props) - { - this.root = webkit_tools.$(root); - var default_props = {scroll : false, revert : false, handle : this.root, zIndex : 1000, onStart : webkit_tools.empty, onEnd : webkit_tools.empty}; - - this.p = webkit_tools.extend(default_props, instance_props || {}); - default_props.handle = webkit_tools.$(default_props.handle); - this.prepare(); - this.bindEvents(); - } - - this.prepare = function() - { - var rs = this.root.style; - - //set position - if(webkit_tools.getCalculatedStyle(this.root,'position') != 'absolute') - { - rs.position = 'relative'; - } - - //set top, right, bottom, left - rs.top = rs.top || '0px'; - rs.left = rs.left || '0px'; - rs.right = ""; - rs.bottom = ""; - - //set zindex; - rs.zIndex = rs.zIndex || '0'; - } - - this.bindEvents = function() - { - var handle = this.p.handle; - - this.ts = webkit_tools.bindAsEventListener(this.touchStart, this); - this.tm = webkit_tools.bindAsEventListener(this.touchMove, this); - this.te = webkit_tools.bindAsEventListener(this.touchEnd, this); - - handle.addEventListener("touchstart", this.ts, false); - handle.addEventListener("touchmove", this.tm, false); - handle.addEventListener("touchend", this.te, false); - } - - this.destroy = function() - { - var handle = this.p.handle; - - handle.removeEventListener("touchstart", this.ts); - handle.removeEventListener("touchmove", this.tm); - handle.removeEventListener("touchend", this.te); - } - - this.set = function(key, value) - { - this.p[key] = value; - } - - this.touchStart = function(event) - { - this.timeout = setTimeout(function () { - //prepare needed variables - var p = this.p; - var r = this.root; - var rs = r.style; - var t = event.targetTouches[0]; - - //get position of touch - touchX = t.pageX; - touchY = t.pageY; - - //set base values for position of root - rs.top = this.root.style.top || '0px'; - rs.left = this.root.style.left || '0px'; - rs.bottom = null; - rs.right = null; - - var rootP = webkit_tools.cumulativeOffset(r); - var cp = this.getPosition(); - - //save event properties - p.rx = cp.x; - p.ry = cp.y; - p.tx = touchX; - p.ty = touchY; - p.z = parseInt(this.root.style.zIndex); - - //boost zIndex - rs.zIndex = p.zIndex; - webkit_drop.prepare(); - p.onStart(r, event); - - this.ready = true; - - }.bind(this), 500); - } - - this.touchMove = function(event) - { - if ( this.ready ) { - event.preventDefault(); - event.stopPropagation(); - - //prepare needed variables - var p = this.p; - var r = this.root; - var rs = r.style; - var t = event.targetTouches[0]; - if(t == null){return} - - var curX = t.pageX; - var curY = t.pageY; - - var delX = curX - p.tx; - var delY = curY - p.ty; - - rs.webkitTransform = 'translate3d(' + (p.rx + delX) + 'px,' + (p.ry + delY) + 'px, 1px)'; - - //scroll window - if(p.scroll) - { - s = this.getScroll(curX, curY); - if((s[0] != 0) || (s[1] != 0)) - { - window.scrollTo(window.scrollX + s[0], window.scrollY + s[1]); - } - } - - //check droppables - webkit_drop.check(curX, curY, r, event); - - //save position for touchEnd - this.lastCurX = curX; - this.lastCurY = curY; - } - } - - this.touchEnd = function(event) - { - clearTimeout(this.timeout); - if ( this.ready ) { - event.preventSwipe = true; - var r = this.root; - var p = this.p; - var dropped = webkit_drop.finalize(this.lastCurX, this.lastCurY, r, event); - - if(((p.revert) && (!dropped)) || (p.revert === 'always')) - { - //revert root - var rs = r.style; - rs.webkitTransform = 'translate3d(' + p.rx + 'px,' + p.ry + 'px, 1px)'; - //rs.top = (p.ry + 'px'); - //rs.left = (p.rx + 'px'); - } - - r.style.zIndex = this.p.z; - this.p.onEnd(r, event); - this.ready = false; - } - } - - this.getPosition = function() - { - var rs = this.root.style; - return {x : parseInt(rs.left || 0), y : parseInt(rs.top || 0)} - } - - this.getScroll = function(pX, pY) - { - //read window variables - var sX = window.scrollX; - var sY = window.scrollY; - - var wX = window.innerWidth; - var wY = window.innerHeight; - - //set contants - var scroll_amount = 10; //how many pixels to scroll - var scroll_sensitivity = 100; //how many pixels from border to start scrolling from. - - var delX = 0; - var delY = 0; - - //process vertical y scroll - if(pY - sY < scroll_sensitivity) - { - delY = -scroll_amount; - } - else - if((sY + wY) - pY < scroll_sensitivity) - { - delY = scroll_amount; - } - - //process horizontal x scroll - if(pX - sX < scroll_sensitivity) - { - delX = -scroll_amount; - } - else - if((sX + wX) - pX < scroll_sensitivity) - { - delX = scroll_amount; - } - - return [delX, delY] - } - - //contructor - this.initialize(r, ip); -} - -//Description -//webkit_click class. manages click events for draggables - -var webkit_click = function(r, ip) -{ - this.initialize = function(root, instance_props) - { - var default_props = {onClick : webkit_tools.empty}; - - this.root = webkit_tools.$(root); - this.p = webkit_tools.extend(default_props, instance_props || {}); - this.bindEvents(); - } - - this.bindEvents = function() - { - var root = this.root; - - //bind events to local scope - this.ts = webkit_tools.bindAsEventListener(this.touchStart,this); - this.tm = webkit_tools.bindAsEventListener(this.touchMove,this); - this.te = webkit_tools.bindAsEventListener(this.touchEnd,this); - - //add Listeners - root.addEventListener("touchstart", this.ts, false); - root.addEventListener("touchmove", this.tm, false); - root.addEventListener("touchend", this.te, false); - - this.bound = true; - } - - this.touchStart = function() - { - this.moved = false; - if(this.bound == false) - { - this.root.addEventListener("touchmove", this.tm, false); - this.bound = true; - } - } - - this.touchMove = function() - { - this.moved = true; - this.root.removeEventListener("touchmove", this.tm); - this.bound = false; - } - - this.touchEnd = function() - {e.preventSwipe = true; - if(this.moved == false) - { - this.p.onClick(); - } - } - - this.setEvent = function(f) - { - if(typeof(f) == 'function') - { - this.p.onClick = f; - } - } - - this.unbind = function() - { - var root = this.root; - root.removeEventListener("touchstart", this.ts); - root.removeEventListener("touchmove", this.tm); - root.removeEventListener("touchend", this.te); - } - - //call constructor - this.initialize(r, ip); -} \ No newline at end of file diff --git a/lib/web/extjs/adapter/ext/ext-base.js b/lib/web/extjs/adapter/ext/ext-base.js deleted file mode 100644 index 6da8411446f7f117a21c5c67d777f81f4d2d58a5..0000000000000000000000000000000000000000 --- a/lib/web/extjs/adapter/ext/ext-base.js +++ /dev/null @@ -1,243 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext={};window["undefined"]=window["undefined"];Ext.apply=function(o,c,defaults){if(defaults){Ext.apply(o,defaults);} -if(o&&c&&typeof c=='object'){for(var p in c){o[p]=c[p];}} -return o;};(function(){var idSeed=0;var ua=navigator.userAgent.toLowerCase();var isStrict=document.compatMode=="CSS1Compat",isOpera=ua.indexOf("opera")>-1,isSafari=(/webkit|khtml/).test(ua),isIE=ua.indexOf("msie")>-1,isIE7=ua.indexOf("msie 7")>-1,isGecko=!isSafari&&ua.indexOf("gecko")>-1,isBorderBox=isIE&&!isStrict,isWindows=(ua.indexOf("windows")!=-1||ua.indexOf("win32")!=-1),isMac=(ua.indexOf("macintosh")!=-1||ua.indexOf("mac os x")!=-1),isSecure=window.location.href.toLowerCase().indexOf("https")===0;if(isIE&&!isIE7){try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}} -Ext.apply(Ext,{isStrict:isStrict,isSecure:isSecure,isReady:false,enableGarbageCollector:true,SSL_SECURE_URL:"javascript:false",BLANK_IMAGE_URL:"http:/"+"/extjs.com/s.gif",emptyFn:function(){},applyIf:function(o,c){if(o&&c){for(var p in c){if(typeof o[p]=="undefined"){o[p]=c[p];}}} -return o;},addBehaviors:function(o){if(!Ext.isReady){Ext.onReady(function(){Ext.addBehaviors(o);});return;} -var cache={};for(var b in o){var parts=b.split('@');if(parts[1]){var s=parts[0];if(!cache[s]){cache[s]=Ext.select(s);} -cache[s].on(parts[1],o[b]);}} -cache=null;},id:function(el,prefix){prefix=prefix||"ext-gen";el=Ext.getDom(el);var id=prefix+(++idSeed);return el?(el.id?el.id:(el.id=id)):id;},extend:function(){var io=function(o){for(var m in o){this[m]=o[m];}};return function(sb,sp,overrides){if(typeof sp=='object'){overrides=sp;sp=sb;sb=function(){sp.apply(this,arguments);};} -var F=function(){},sbp,spp=sp.prototype;F.prototype=spp;sbp=sb.prototype=new F();sbp.constructor=sb;sb.superclass=spp;if(spp.constructor==Object.prototype.constructor){spp.constructor=sp;} -sb.override=function(o){Ext.override(sb,o);};sbp.override=io;sbp.__extcls=sb;Ext.override(sb,overrides);return sb;};}(),override:function(origclass,overrides){if(overrides){var p=origclass.prototype;for(var method in overrides){p[method]=overrides[method];}}},namespace:function(){var a=arguments,o=null,i,j,d,rt;for(i=0;i<a.length;++i){d=a[i].split(".");rt=d[0];eval('if (typeof '+rt+' == "undefined"){'+rt+' = {};} o = '+rt+';');for(j=1;j<d.length;++j){o[d[j]]=o[d[j]]||{};o=o[d[j]];}}},urlEncode:function(o){if(!o){return"";} -var buf=[];for(var key in o){var ov=o[key];var type=typeof ov;if(type=='undefined'){buf.push(encodeURIComponent(key),"=&");}else if(type!="function"&&type!="object"){buf.push(encodeURIComponent(key),"=",encodeURIComponent(ov),"&");}else if(ov instanceof Array){for(var i=0,len=ov.length;i<len;i++){buf.push(encodeURIComponent(key),"=",encodeURIComponent(ov[i]===undefined?'':ov[i]),"&");}}} -buf.pop();return buf.join("");},urlDecode:function(string,overwrite){if(!string||!string.length){return{};} -var obj={};var pairs=string.split('&');var pair,name,value;for(var i=0,len=pairs.length;i<len;i++){pair=pairs[i].split('=');name=decodeURIComponent(pair[0]);value=decodeURIComponent(pair[1]);if(overwrite!==true){if(typeof obj[name]=="undefined"){obj[name]=value;}else if(typeof obj[name]=="string"){obj[name]=[obj[name]];obj[name].push(value);}else{obj[name].push(value);}}else{obj[name]=value;}} -return obj;},each:function(array,fn,scope){if(typeof array.length=="undefined"||typeof array=="string"){array=[array];} -for(var i=0,len=array.length;i<len;i++){if(fn.call(scope||array[i],array[i],i,array)===false){return i;};}},combine:function(){var as=arguments,l=as.length,r=[];for(var i=0;i<l;i++){var a=as[i];if(a instanceof Array){r=r.concat(a);}else if(a.length!==undefined&&!a.substr){r=r.concat(Array.prototype.slice.call(a,0));}else{r.push(a);}} -return r;},escapeRe:function(s){return s.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1");},callback:function(cb,scope,args,delay){if(typeof cb=="function"){if(delay){cb.defer(delay,scope,args||[]);}else{cb.apply(scope,args||[]);}}},getDom:function(el){if(!el){return null;} -return el.dom?el.dom:(typeof el=='string'?document.getElementById(el):el);},getCmp:function(id){return Ext.ComponentMgr.get(id);},num:function(v,defaultValue){if(typeof v!='number'){return defaultValue;} -return v;},destroy:function(){for(var i=0,a=arguments,len=a.length;i<len;i++){var as=a[i];if(as){if(as.dom){as.removeAllListeners();as.remove();continue;} -if(typeof as.purgeListeners=='function'){as.purgeListeners();} -if(typeof as.destroy=='function'){as.destroy();}}}},isOpera:isOpera,isSafari:isSafari,isIE:isIE,isIE7:isIE7,isGecko:isGecko,isBorderBox:isBorderBox,isWindows:isWindows,isMac:isMac,useShims:((isIE&&!isIE7)||(isGecko&&isMac))});})();Ext.namespace("Ext","Ext.util","Ext.grid","Ext.dd","Ext.tree","Ext.data","Ext.form","Ext.menu","Ext.state","Ext.lib","Ext.layout","Ext.app");Ext.apply(Function.prototype,{createCallback:function(){var args=arguments;var method=this;return function(){return method.apply(window,args);};},createDelegate:function(obj,args,appendArgs){var method=this;return function(){var callArgs=args||arguments;if(appendArgs===true){callArgs=Array.prototype.slice.call(arguments,0);callArgs=callArgs.concat(args);}else if(typeof appendArgs=="number"){callArgs=Array.prototype.slice.call(arguments,0);var applyArgs=[appendArgs,0].concat(args);Array.prototype.splice.apply(callArgs,applyArgs);} -return method.apply(obj||window,callArgs);};},defer:function(millis,obj,args,appendArgs){var fn=this.createDelegate(obj,args,appendArgs);if(millis){return setTimeout(fn,millis);} -fn();return 0;},createSequence:function(fcn,scope){if(typeof fcn!="function"){return this;} -var method=this;return function(){var retval=method.apply(this||window,arguments);fcn.apply(scope||this||window,arguments);return retval;};},createInterceptor:function(fcn,scope){if(typeof fcn!="function"){return this;} -var method=this;return function(){fcn.target=this;fcn.method=method;if(fcn.apply(scope||this||window,arguments)===false){return;} -return method.apply(this||window,arguments);};}});Ext.applyIf(String,{escape:function(string){return string.replace(/('|\\)/g,"\\$1");},leftPad:function(val,size,ch){var result=new String(val);if(ch===null||ch===undefined||ch===''){ch=" ";} -while(result.length<size){result=ch+result;} -return result;},format:function(format){var args=Array.prototype.slice.call(arguments,1);return format.replace(/\{(\d+)\}/g,function(m,i){return args[i];});}});String.prototype.toggle=function(value,other){return this==value?other:value;};Ext.applyIf(Number.prototype,{constrain:function(min,max){return Math.min(Math.max(this,min),max);}});Ext.applyIf(Array.prototype,{indexOf:function(o){for(var i=0,len=this.length;i<len;i++){if(this[i]==o)return i;} -return-1;},remove:function(o){var index=this.indexOf(o);if(index!=-1){this.splice(index,1);}}});Date.prototype.getElapsed=function(date){return Math.abs((date||new Date()).getTime()-this.getTime());}; - -(function(){var libFlyweight;Ext.lib.Dom={getViewWidth:function(full){return full?this.getDocumentWidth():this.getViewportWidth();},getViewHeight:function(full){return full?this.getDocumentHeight():this.getViewportHeight();},getDocumentHeight:function(){var scrollHeight=(document.compatMode!="CSS1Compat")?document.body.scrollHeight:document.documentElement.scrollHeight;return Math.max(scrollHeight,this.getViewportHeight());},getDocumentWidth:function(){var scrollWidth=(document.compatMode!="CSS1Compat")?document.body.scrollWidth:document.documentElement.scrollWidth;return Math.max(scrollWidth,this.getViewportWidth());},getViewportHeight:function(){var height=self.innerHeight;var mode=document.compatMode;if((mode||Ext.isIE)&&!Ext.isOpera){height=(mode=="CSS1Compat")?document.documentElement.clientHeight:document.body.clientHeight;} -return height;},getViewportWidth:function(){var width=self.innerWidth;var mode=document.compatMode;if(mode||Ext.isIE){width=(mode=="CSS1Compat")?document.documentElement.clientWidth:document.body.clientWidth;} -return width;},isAncestor:function(p,c){p=Ext.getDom(p);c=Ext.getDom(c);if(!p||!c){return false;} -if(p.contains&&!Ext.isSafari){return p.contains(c);}else if(p.compareDocumentPosition){return!!(p.compareDocumentPosition(c)&16);}else{var parent=c.parentNode;while(parent){if(parent==p){return true;} -else if(!parent.tagName||parent.tagName.toUpperCase()=="HTML"){return false;} -parent=parent.parentNode;} -return false;}},getRegion:function(el){return Ext.lib.Region.getRegion(el);},getY:function(el){return this.getXY(el)[1];},getX:function(el){return this.getXY(el)[0];},getXY:function(el){var p,pe,b,scroll,bd=document.body;el=Ext.getDom(el);if(el.getBoundingClientRect){b=el.getBoundingClientRect();scroll=fly(document).getScroll();return[b.left+scroll.left,b.top+scroll.top];}else{var x=el.offsetLeft,y=el.offsetTop;p=el.offsetParent;var hasAbsolute=false;if(p!=el){while(p){x+=p.offsetLeft;y+=p.offsetTop;if(Ext.isSafari&&!hasAbsolute&&fly(p).getStyle("position")=="absolute"){hasAbsolute=true;} -if(Ext.isGecko){pe=fly(p);var bt=parseInt(pe.getStyle("borderTopWidth"),10)||0;var bl=parseInt(pe.getStyle("borderLeftWidth"),10)||0;x+=bl;y+=bt;if(p!=el&&pe.getStyle('overflow')!='visible'){x+=bl;y+=bt;}} -p=p.offsetParent;}} -if(Ext.isSafari&&(hasAbsolute||fly(el).getStyle("position")=="absolute")){x-=bd.offsetLeft;y-=bd.offsetTop;}} -p=el.parentNode;while(p&&p!=bd){if(!Ext.isOpera||(Ext.isOpera&&p.tagName!='TR'&&fly(p).getStyle("display")!="inline")){x-=p.scrollLeft;y-=p.scrollTop;} -p=p.parentNode;} -return[x,y];},setXY:function(el,xy){el=Ext.fly(el,'_setXY');el.position();var pts=el.translatePoints(xy);if(xy[0]!==false){el.dom.style.left=pts.left+"px";} -if(xy[1]!==false){el.dom.style.top=pts.top+"px";}},setX:function(el,x){this.setXY(el,[x,false]);},setY:function(el,y){this.setXY(el,[false,y]);}};Ext.lib.Event=function(){var loadComplete=false;var listeners=[];var unloadListeners=[];var retryCount=0;var onAvailStack=[];var counter=0;var lastError=null;return{POLL_RETRYS:200,POLL_INTERVAL:20,EL:0,TYPE:1,FN:2,WFN:3,OBJ:3,ADJ_SCOPE:4,_interval:null,startInterval:function(){if(!this._interval){var self=this;var callback=function(){self._tryPreloadAttach();};this._interval=setInterval(callback,this.POLL_INTERVAL);}},onAvailable:function(p_id,p_fn,p_obj,p_override){onAvailStack.push({id:p_id,fn:p_fn,obj:p_obj,override:p_override,checkReady:false});retryCount=this.POLL_RETRYS;this.startInterval();},addListener:function(el,eventName,fn){el=Ext.getDom(el);if(!el||!fn){return false;} -if("unload"==eventName){unloadListeners[unloadListeners.length]=[el,eventName,fn];return true;} -var wrappedFn=function(e){return fn.call(scope,Ext.lib.Event.getEvent(e),obj);};var li=[el,eventName,fn,wrappedFn];var index=listeners.length;listeners[index]=li;this.doAdd(el,eventName,wrappedFn,false);return true;},removeListener:function(el,eventName,fn){var i,len;el=Ext.getDom(el);if(!fn){return this.purgeElement(el,false,eventName);} -if("unload"==eventName){for(i=0,len=unloadListeners.length;i<len;i++){var li=unloadListeners[i];if(li&&li[0]==el&&li[1]==eventName&&li[2]==fn){unloadListeners.splice(i,1);return true;}} -return false;} -var cacheItem=null;var index=arguments[3];if("undefined"==typeof index){index=this._getCacheIndex(el,eventName,fn);} -if(index>=0){cacheItem=listeners[index];} -if(!el||!cacheItem){return false;} -this.doRemove(el,eventName,cacheItem[this.WFN],false);delete listeners[index][this.WFN];delete listeners[index][this.FN];listeners.splice(index,1);return true;},getTarget:function(ev,resolveTextNode){var t=ev.target||ev.srcElement;return this.resolveTextNode(t);},resolveTextNode:function(node){if(Ext.isSafari&&node&&3==node.nodeType){return node.parentNode;}else{return node;}},getPageX:function(ev){var x=ev.pageX;if(!x&&0!==x){x=ev.clientX||0;if(Ext.isIE){x+=this.getScroll()[1];}} -return x;},getPageY:function(ev){var y=ev.pageY;if(!y&&0!==y){y=ev.clientY||0;if(Ext.isIE){y+=this.getScroll()[0];}} -return y;},getXY:function(ev){return[this.getPageX(ev),this.getPageY(ev)];},getRelatedTarget:function(ev){var t=ev.relatedTarget;if(!t){if(ev.type=="mouseout"){t=ev.toElement;}else if(ev.type=="mouseover"){t=ev.fromElement;}} -return this.resolveTextNode(t);},getTime:function(ev){if(!ev.time){var t=new Date().getTime();try{ev.time=t;}catch(ex){this.lastError=ex;return t;}} -return ev.time;},stopEvent:function(ev){this.stopPropagation(ev);this.preventDefault(ev);},stopPropagation:function(ev){if(ev.stopPropagation){ev.stopPropagation();}else{ev.cancelBubble=true;}},preventDefault:function(ev){if(ev.preventDefault){ev.preventDefault();}else{ev.returnValue=false;}},getEvent:function(e){var ev=e||window.event;if(!ev){var c=this.getEvent.caller;while(c){ev=c.arguments[0];if(ev&&Event==ev.constructor){break;} -c=c.caller;}} -return ev;},getCharCode:function(ev){return ev.charCode||ev.keyCode||0;},_getCacheIndex:function(el,eventName,fn){for(var i=0,len=listeners.length;i<len;++i){var li=listeners[i];if(li&&li[this.FN]==fn&&li[this.EL]==el&&li[this.TYPE]==eventName){return i;}} -return-1;},elCache:{},getEl:function(id){return document.getElementById(id);},clearCache:function(){},_load:function(e){loadComplete=true;var EU=Ext.lib.Event;if(Ext.isIE){EU.doRemove(window,"load",EU._load);}},_tryPreloadAttach:function(){if(this.locked){return false;} -this.locked=true;var tryAgain=!loadComplete;if(!tryAgain){tryAgain=(retryCount>0);} -var notAvail=[];for(var i=0,len=onAvailStack.length;i<len;++i){var item=onAvailStack[i];if(item){var el=this.getEl(item.id);if(el){if(!item.checkReady||loadComplete||el.nextSibling||(document&&document.body)){var scope=el;if(item.override){if(item.override===true){scope=item.obj;}else{scope=item.override;}} -item.fn.call(scope,item.obj);onAvailStack[i]=null;}}else{notAvail.push(item);}}} -retryCount=(notAvail.length===0)?0:retryCount-1;if(tryAgain){this.startInterval();}else{clearInterval(this._interval);this._interval=null;} -this.locked=false;return true;},purgeElement:function(el,recurse,eventName){var elListeners=this.getListeners(el,eventName);if(elListeners){for(var i=0,len=elListeners.length;i<len;++i){var l=elListeners[i];this.removeListener(el,l.type,l.fn);}} -if(recurse&&el&&el.childNodes){for(i=0,len=el.childNodes.length;i<len;++i){this.purgeElement(el.childNodes[i],recurse,eventName);}}},getListeners:function(el,eventName){var results=[],searchLists;if(!eventName){searchLists=[listeners,unloadListeners];}else if(eventName=="unload"){searchLists=[unloadListeners];}else{searchLists=[listeners];} -for(var j=0;j<searchLists.length;++j){var searchList=searchLists[j];if(searchList&&searchList.length>0){for(var i=0,len=searchList.length;i<len;++i){var l=searchList[i];if(l&&l[this.EL]===el&&(!eventName||eventName===l[this.TYPE])){results.push({type:l[this.TYPE],fn:l[this.FN],obj:l[this.OBJ],adjust:l[this.ADJ_SCOPE],index:i});}}}} -return(results.length)?results:null;},_unload:function(e){var EU=Ext.lib.Event,i,j,l,len,index;for(i=0,len=unloadListeners.length;i<len;++i){l=unloadListeners[i];if(l){var scope=window;if(l[EU.ADJ_SCOPE]){if(l[EU.ADJ_SCOPE]===true){scope=l[EU.OBJ];}else{scope=l[EU.ADJ_SCOPE];}} -l[EU.FN].call(scope,EU.getEvent(e),l[EU.OBJ]);unloadListeners[i]=null;l=null;scope=null;}} -unloadListeners=null;if(listeners&&listeners.length>0){j=listeners.length;while(j){index=j-1;l=listeners[index];if(l){EU.removeListener(l[EU.EL],l[EU.TYPE],l[EU.FN],index);} -j=j-1;} -l=null;EU.clearCache();} -EU.doRemove(window,"unload",EU._unload);},getScroll:function(){var dd=document.documentElement,db=document.body;if(dd&&(dd.scrollTop||dd.scrollLeft)){return[dd.scrollTop,dd.scrollLeft];}else if(db){return[db.scrollTop,db.scrollLeft];}else{return[0,0];}},doAdd:function(){if(window.addEventListener){return function(el,eventName,fn,capture){el.addEventListener(eventName,fn,(capture));};}else if(window.attachEvent){return function(el,eventName,fn,capture){el.attachEvent("on"+eventName,fn);};}else{return function(){};}}(),doRemove:function(){if(window.removeEventListener){return function(el,eventName,fn,capture){el.removeEventListener(eventName,fn,(capture));};}else if(window.detachEvent){return function(el,eventName,fn){el.detachEvent("on"+eventName,fn);};}else{return function(){};}}()};}();Ext.lib.Event.on=Ext.lib.Event.addListener;Ext.lib.Event.un=Ext.lib.Event.removeListener;Ext.lib.Ajax={request:function(method,uri,cb,data){return this.asyncRequest(method,uri,cb,data);},formRequest:function(form,uri,cb,data,isUpload,sslUri){this.setForm(form,isUpload,sslUri);return this.asyncRequest(Ext.getDom(form).method||'POST',uri,cb,data);},serializeForm:function(form){if(typeof form=='string'){form=(document.getElementById(form)||document.forms[form]);} -var el,name,val,disabled,data='',hasSubmit=false;for(var i=0;i<form.elements.length;i++){el=form.elements[i];disabled=form.elements[i].disabled;name=form.elements[i].name;val=form.elements[i].value;if(!disabled&&name){switch(el.type) -{case'select-one':case'select-multiple':for(var j=0;j<el.options.length;j++){if(el.options[j].selected){if(Ext.isIE){data+=encodeURIComponent(name)+'='+encodeURIComponent(el.options[j].attributes['value'].specified?el.options[j].value:el.options[j].text)+'&';} -else{data+=encodeURIComponent(name)+'='+encodeURIComponent(el.options[j].hasAttribute('value')?el.options[j].value:el.options[j].text)+'&';}}} -break;case'radio':case'checkbox':if(el.checked){data+=encodeURIComponent(name)+'='+encodeURIComponent(val)+'&';} -break;case'file':case undefined:case'reset':case'button':break;case'submit':if(hasSubmit==false){data+=encodeURIComponent(name)+'='+encodeURIComponent(val)+'&';hasSubmit=true;} -break;default:data+=encodeURIComponent(name)+'='+encodeURIComponent(val)+'&';break;}}} -data=data.substr(0,data.length-1);return data;},headers:{},hasHeaders:false,useDefaultHeader:true,defaultPostHeader:'application/x-www-form-urlencoded',useDefaultXhrHeader:true,defaultXhrHeader:'XMLHttpRequest',hasDefaultHeaders:true,defaultHeaders:{},isFormSubmit:false,isFileUpload:false,formNode:null,formData:null,poll:{},timeout:{},pollInterval:50,transactionId:0,setProgId:function(id) -{this.activeX.unshift(id);},setDefaultPostHeader:function(b) -{this.useDefaultHeader=b;},setDefaultXhrHeader:function(b) -{this.useDefaultXhrHeader=b;},setPollingInterval:function(i) -{if(typeof i=='number'&&isFinite(i)){this.pollInterval=i;}},createXhrObject:function(transactionId) -{var obj,http;try -{http=new XMLHttpRequest();obj={conn:http,tId:transactionId};} -catch(e) -{for(var i=0;i<this.activeX.length;++i){try -{http=new ActiveXObject(this.activeX[i]);obj={conn:http,tId:transactionId};break;} -catch(e){}}} -finally -{return obj;}},getConnectionObject:function() -{var o;var tId=this.transactionId;try -{o=this.createXhrObject(tId);if(o){this.transactionId++;}} -catch(e){} -finally -{return o;}},asyncRequest:function(method,uri,callback,postData) -{var o=this.getConnectionObject();if(!o){return null;} -else{if(this.isFormSubmit){if(this.isFileUpload){this.uploadFile(o.tId,callback,uri,postData);this.releaseObject(o);return;} -if(method.toUpperCase()=='GET'){if(this.formData.length!=0){uri+=((uri.indexOf('?')==-1)?'?':'&')+this.formData;} -else{uri+="?"+this.formData;}} -else if(method.toUpperCase()=='POST'){postData=postData?this.formData+"&"+postData:this.formData;}} -o.conn.open(method,uri,true);if(this.useDefaultXhrHeader){if(!this.defaultHeaders['X-Requested-With']){this.initHeader('X-Requested-With',this.defaultXhrHeader,true);}} -if(this.isFormSubmit||(postData&&this.useDefaultHeader)){this.initHeader('Content-Type',this.defaultPostHeader);if(this.isFormSubmit){this.resetFormState();}} -if(this.hasDefaultHeaders||this.hasHeaders){this.setHeader(o);} -this.handleReadyState(o,callback);o.conn.send(postData||null);return o;}},handleReadyState:function(o,callback) -{var oConn=this;if(callback&&callback.timeout){this.timeout[o.tId]=window.setTimeout(function(){oConn.abort(o,callback,true);},callback.timeout);} -this.poll[o.tId]=window.setInterval(function(){if(o.conn&&o.conn.readyState==4){window.clearInterval(oConn.poll[o.tId]);delete oConn.poll[o.tId];if(callback&&callback.timeout){delete oConn.timeout[o.tId];} -oConn.handleTransactionResponse(o,callback);}},this.pollInterval);},handleTransactionResponse:function(o,callback,isAbort) -{if(!callback){this.releaseObject(o);return;} -var httpStatus,responseObject;try -{if(o.conn.status!==undefined&&o.conn.status!=0){httpStatus=o.conn.status;} -else{httpStatus=13030;}} -catch(e){httpStatus=13030;} -if(httpStatus>=200&&httpStatus<300){responseObject=this.createResponseObject(o,callback.argument);if(callback.success){if(!callback.scope){callback.success(responseObject);} -else{callback.success.apply(callback.scope,[responseObject]);}}} -else{switch(httpStatus){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:responseObject=this.createExceptionObject(o.tId,callback.argument,(isAbort?isAbort:false));if(callback.failure){if(!callback.scope){callback.failure(responseObject);} -else{callback.failure.apply(callback.scope,[responseObject]);}} -break;default:responseObject=this.createResponseObject(o,callback.argument);if(callback.failure){if(!callback.scope){callback.failure(responseObject);} -else{callback.failure.apply(callback.scope,[responseObject]);}}}} -this.releaseObject(o);responseObject=null;},createResponseObject:function(o,callbackArg) -{var obj={};var headerObj={};try -{var headerStr=o.conn.getAllResponseHeaders();var header=headerStr.split('\n');for(var i=0;i<header.length;i++){var delimitPos=header[i].indexOf(':');if(delimitPos!=-1){headerObj[header[i].substring(0,delimitPos)]=header[i].substring(delimitPos+2);}}} -catch(e){} -obj.tId=o.tId;obj.status=o.conn.status;obj.statusText=o.conn.statusText;obj.getResponseHeader=headerObj;obj.getAllResponseHeaders=headerStr;obj.responseText=o.conn.responseText;obj.responseXML=o.conn.responseXML;if(typeof callbackArg!==undefined){obj.argument=callbackArg;} -return obj;},createExceptionObject:function(tId,callbackArg,isAbort) -{var COMM_CODE=0;var COMM_ERROR='communication failure';var ABORT_CODE=-1;var ABORT_ERROR='transaction aborted';var obj={};obj.tId=tId;if(isAbort){obj.status=ABORT_CODE;obj.statusText=ABORT_ERROR;} -else{obj.status=COMM_CODE;obj.statusText=COMM_ERROR;} -if(callbackArg){obj.argument=callbackArg;} -return obj;},initHeader:function(label,value,isDefault) -{var headerObj=(isDefault)?this.defaultHeaders:this.headers;if(headerObj[label]===undefined){headerObj[label]=value;} -else{headerObj[label]=value+","+headerObj[label];} -if(isDefault){this.hasDefaultHeaders=true;} -else{this.hasHeaders=true;}},setHeader:function(o) -{if(this.hasDefaultHeaders){for(var prop in this.defaultHeaders){if(this.defaultHeaders.hasOwnProperty(prop)){o.conn.setRequestHeader(prop,this.defaultHeaders[prop]);}}} -if(this.hasHeaders){for(var prop in this.headers){if(this.defaultHeaders.hasOwnProperty(prop)){o.conn.setRequestHeader(prop,this.headers[prop]);}} -delete this.headers;this.headers={};this.hasHeaders=false;}},resetDefaultHeaders:function(){delete this.defaultHeaders -this.defaultHeaders={};this.hasDefaultHeaders=false;},setForm:function(form,isUpload,secureUri){this.resetFormState();if(typeof form=='string'){form=(document.getElementById(form)||document.forms[form]);} -if(isUpload){this.createFrame(secureUri?secureUri:null);this.isFormSubmit=true;this.isFileUpload=true;this.formNode=form;return;} -this.isFormSubmit=true;this.formData=this.serializeForm(form);return this.formData;},resetFormState:function(){this.isFormSubmit=false;this.isFileUpload=false;this.formNode=null;this.formData="";},createFrame:function(secureUri){var frameId='yuiIO'+this.transactionId;if(window.ActiveXObject){var io=document.createElement('<iframe id="'+frameId+'" name="'+frameId+'" />');if(typeof secureUri=='boolean'){io.src='javascript:false';} -else if(typeof secureURI=='string'){io.src=secureUri;}} -else{var io=document.createElement('iframe');io.id=frameId;io.name=frameId;} -io.style.position='absolute';io.style.top='-1000px';io.style.left='-1000px';document.body.appendChild(io);},appendPostData:function(postData) -{var formElements=[];var postMessage=postData.split('&');for(var i=0;i<postMessage.length;i++){var delimitPos=postMessage[i].indexOf('=');if(delimitPos!=-1){formElements[i]=document.createElement('input');formElements[i].type='hidden';formElements[i].name=postMessage[i].substring(0,delimitPos);formElements[i].value=postMessage[i].substring(delimitPos+1);this.formNode.appendChild(formElements[i]);}} -return formElements;},uploadFile:function(id,callback,uri,postData){var frameId='yuiIO'+id;var uploadEncoding='multipart/form-data';var io=document.getElementById(frameId);this.formNode.action=uri;this.formNode.method='POST';this.formNode.target=frameId;if(this.formNode.encoding){this.formNode.encoding=uploadEncoding;} -else{this.formNode.enctype=uploadEncoding;} -if(postData){var oElements=this.appendPostData(postData);} -this.formNode.submit();if(oElements&&oElements.length>0){for(var i=0;i<oElements.length;i++){this.formNode.removeChild(oElements[i]);}} -this.resetFormState();var uploadCallback=function() -{var obj={};obj.tId=id;obj.argument=callback.argument;try -{obj.responseText=io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:null;obj.responseXML=io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document;} -catch(e){} -if(callback&&callback.upload){if(!callback.scope){callback.upload(obj);} -else{callback.upload.apply(callback.scope,[obj]);}} -if(Ext.lib.Event){Ext.lib.Event.removeListener(io,"load",uploadCallback);} -else if(window.detachEvent){io.detachEvent('onload',uploadCallback);} -else{io.removeEventListener('load',uploadCallback,false);} -setTimeout(function(){document.body.removeChild(io);},100);};Ext.EventManager.addListener(io,"load",uploadCallback);},abort:function(o,callback,isTimeout) -{if(this.isCallInProgress(o)){o.conn.abort();window.clearInterval(this.poll[o.tId]);delete this.poll[o.tId];if(isTimeout){delete this.timeout[o.tId];} -this.handleTransactionResponse(o,callback,true);return true;} -else{return false;}},isCallInProgress:function(o) -{if(o.conn){return o.conn.readyState!=4&&o.conn.readyState!=0;} -else{return false;}},releaseObject:function(o) -{o.conn=null;o=null;},activeX:['MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP']};Ext.lib.Region=function(t,r,b,l){this.top=t;this[1]=t;this.right=r;this.bottom=b;this.left=l;this[0]=l;};Ext.lib.Region.prototype={contains:function(region){return(region.left>=this.left&®ion.right<=this.right&®ion.top>=this.top&®ion.bottom<=this.bottom);},getArea:function(){return((this.bottom-this.top)*(this.right-this.left));},intersect:function(region){var t=Math.max(this.top,region.top);var r=Math.min(this.right,region.right);var b=Math.min(this.bottom,region.bottom);var l=Math.max(this.left,region.left);if(b>=t&&r>=l){return new Ext.lib.Region(t,r,b,l);}else{return null;}},union:function(region){var t=Math.min(this.top,region.top);var r=Math.max(this.right,region.right);var b=Math.max(this.bottom,region.bottom);var l=Math.min(this.left,region.left);return new Ext.lib.Region(t,r,b,l);},adjust:function(t,l,b,r){this.top+=t;this.left+=l;this.right+=r;this.bottom+=b;return this;}};Ext.lib.Region.getRegion=function(el){var p=Ext.lib.Dom.getXY(el);var t=p[1];var r=p[0]+el.offsetWidth;var b=p[1]+el.offsetHeight;var l=p[0];return new Ext.lib.Region(t,r,b,l);};Ext.lib.Point=function(x,y){if(x instanceof Array){y=x[1];x=x[0];} -this.x=this.right=this.left=this[0]=x;this.y=this.top=this.bottom=this[1]=y;};Ext.lib.Point.prototype=new Ext.lib.Region();Ext.lib.Anim={scroll:function(el,args,duration,easing,cb,scope){this.run(el,args,duration,easing,cb,scope,Ext.lib.Scroll);},motion:function(el,args,duration,easing,cb,scope){this.run(el,args,duration,easing,cb,scope,Ext.lib.Motion);},color:function(el,args,duration,easing,cb,scope){this.run(el,args,duration,easing,cb,scope,Ext.lib.ColorAnim);},run:function(el,args,duration,easing,cb,scope,type){type=type||Ext.lib.AnimBase;if(typeof easing=="string"){easing=Ext.lib.Easing[easing];} -var anim=new type(el,args,duration,easing);anim.animateX(function(){Ext.callback(cb,scope);});return anim;}};function fly(el){if(!libFlyweight){libFlyweight=new Ext.Element.Flyweight();} -libFlyweight.dom=el;return libFlyweight;} -if(Ext.isIE){function fnCleaup(){var p=Function.prototype;delete p.createSequence;delete p.defer;delete p.createDelegate;delete p.createCallback;delete p.createInterceptor;window.detachEvent("unload",fnCleaup);} -window.attachEvent("unload",fnCleaup);} -Ext.lib.AnimBase=function(el,attributes,duration,method){if(el){this.init(el,attributes,duration,method);}};Ext.lib.AnimBase.prototype={toString:function(){var el=this.getEl();var id=el.id||el.tagName;return("Anim "+id);},patterns:{noNegatives:/width|height|opacity|padding/i,offsetAttribute:/^((width|height)|(top|left))$/,defaultUnit:/width|height|top$|bottom$|left$|right$/i,offsetUnit:/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i},doMethod:function(attr,start,end){return this.method(this.currentFrame,start,end-start,this.totalFrames);},setAttribute:function(attr,val,unit){if(this.patterns.noNegatives.test(attr)){val=(val>0)?val:0;} -Ext.fly(this.getEl(),'_anim').setStyle(attr,val+unit);},getAttribute:function(attr){var el=this.getEl();var val=fly(el).getStyle(attr);if(val!=='auto'&&!this.patterns.offsetUnit.test(val)){return parseFloat(val);} -var a=this.patterns.offsetAttribute.exec(attr)||[];var pos=!!(a[3]);var box=!!(a[2]);if(box||(fly(el).getStyle('position')=='absolute'&&pos)){val=el['offset'+a[0].charAt(0).toUpperCase()+a[0].substr(1)];}else{val=0;} -return val;},getDefaultUnit:function(attr){if(this.patterns.defaultUnit.test(attr)){return'px';} -return'';},animateX:function(callback,scope){var f=function(){this.onComplete.unsubscribe(f);if(typeof callback=="function"){callback.call(scope||this,this);}};this.onComplete.subscribe(f,this,true);this.animate();},setRuntimeAttribute:function(attr){var start;var end;var attributes=this.attributes;this.runtimeAttributes[attr]={};var isset=function(prop){return(typeof prop!=='undefined');};if(!isset(attributes[attr]['to'])&&!isset(attributes[attr]['by'])){return false;} -start=(isset(attributes[attr]['from']))?attributes[attr]['from']:this.getAttribute(attr);if(isset(attributes[attr]['to'])){end=attributes[attr]['to'];}else if(isset(attributes[attr]['by'])){if(start.constructor==Array){end=[];for(var i=0,len=start.length;i<len;++i){end[i]=start[i]+attributes[attr]['by'][i];}}else{end=start+attributes[attr]['by'];}} -this.runtimeAttributes[attr].start=start;this.runtimeAttributes[attr].end=end;this.runtimeAttributes[attr].unit=(isset(attributes[attr].unit))?attributes[attr]['unit']:this.getDefaultUnit(attr);},init:function(el,attributes,duration,method){var isAnimated=false;var startTime=null;var actualFrames=0;el=Ext.lib.Dom.get(el);this.attributes=attributes||{};this.duration=duration||1;this.method=method||Ext.lib.Easing.easeNone;this.useSeconds=true;this.currentFrame=0;this.totalFrames=Ext.lib.AnimMgr.fps;this.getEl=function(){return el;};this.isAnimated=function(){return isAnimated;};this.getStartTime=function(){return startTime;};this.runtimeAttributes={};this.animate=function(){if(this.isAnimated()){return false;} -this.currentFrame=0;this.totalFrames=(this.useSeconds)?Math.ceil(Ext.lib.AnimMgr.fps*this.duration):this.duration;Ext.lib.AnimMgr.registerElement(this);};this.stop=function(finish){if(finish){this.currentFrame=this.totalFrames;this._onTween.fire();} -Ext.lib.AnimMgr.stop(this);};var onStart=function(){this.onStart.fire();this.runtimeAttributes={};for(var attr in this.attributes){this.setRuntimeAttribute(attr);} -isAnimated=true;actualFrames=0;startTime=new Date();};var onTween=function(){var data={duration:new Date()-this.getStartTime(),currentFrame:this.currentFrame};data.toString=function(){return('duration: '+data.duration+', currentFrame: '+data.currentFrame);};this.onTween.fire(data);var runtimeAttributes=this.runtimeAttributes;for(var attr in runtimeAttributes){this.setAttribute(attr,this.doMethod(attr,runtimeAttributes[attr].start,runtimeAttributes[attr].end),runtimeAttributes[attr].unit);} -actualFrames+=1;};var onComplete=function(){var actual_duration=(new Date()-startTime)/1000;var data={duration:actual_duration,frames:actualFrames,fps:actualFrames/actual_duration};data.toString=function(){return('duration: '+data.duration+', frames: '+data.frames+', fps: '+data.fps);};isAnimated=false;actualFrames=0;this.onComplete.fire(data);};this._onStart=new Ext.lib.CustomEvent('_start',this,true);this.onStart=new Ext.lib.CustomEvent('start',this);this.onTween=new Ext.lib.CustomEvent('tween',this);this._onTween=new Ext.lib.CustomEvent('_tween',this,true);this.onComplete=new Ext.lib.CustomEvent('complete',this);this._onComplete=new Ext.lib.CustomEvent('_complete',this,true);this._onStart.subscribe(onStart);this._onTween.subscribe(onTween);this._onComplete.subscribe(onComplete);}};Ext.lib.AnimMgr=new function(){var thread=null;var queue=[];var tweenCount=0;this.fps=1000;this.delay=1;this.registerElement=function(tween){queue[queue.length]=tween;tweenCount+=1;tween._onStart.fire();this.start();};this.unRegister=function(tween,index){tween._onComplete.fire();index=index||getIndex(tween);if(index!=-1){queue.splice(index,1);} -tweenCount-=1;if(tweenCount<=0){this.stop();}};this.start=function(){if(thread===null){thread=setInterval(this.run,this.delay);}};this.stop=function(tween){if(!tween){clearInterval(thread);for(var i=0,len=queue.length;i<len;++i){if(queue[0].isAnimated()){this.unRegister(queue[0],0);}} -queue=[];thread=null;tweenCount=0;} -else{this.unRegister(tween);}};this.run=function(){for(var i=0,len=queue.length;i<len;++i){var tween=queue[i];if(!tween||!tween.isAnimated()){continue;} -if(tween.currentFrame<tween.totalFrames||tween.totalFrames===null) -{tween.currentFrame+=1;if(tween.useSeconds){correctFrame(tween);} -tween._onTween.fire();} -else{Ext.lib.AnimMgr.stop(tween,i);}}};var getIndex=function(anim){for(var i=0,len=queue.length;i<len;++i){if(queue[i]==anim){return i;}} -return-1;};var correctFrame=function(tween){var frames=tween.totalFrames;var frame=tween.currentFrame;var expected=(tween.currentFrame*tween.duration*1000/tween.totalFrames);var elapsed=(new Date()-tween.getStartTime());var tweak=0;if(elapsed<tween.duration*1000){tweak=Math.round((elapsed/expected-1)*tween.currentFrame);}else{tweak=frames-(frame+1);} -if(tweak>0&&isFinite(tweak)){if(tween.currentFrame+tweak>=frames){tweak=frames-(frame+1);} -tween.currentFrame+=tweak;}};};Ext.lib.Bezier=new function(){this.getPosition=function(points,t){var n=points.length;var tmp=[];for(var i=0;i<n;++i){tmp[i]=[points[i][0],points[i][1]];} -for(var j=1;j<n;++j){for(i=0;i<n-j;++i){tmp[i][0]=(1-t)*tmp[i][0]+t*tmp[parseInt(i+1,10)][0];tmp[i][1]=(1-t)*tmp[i][1]+t*tmp[parseInt(i+1,10)][1];}} -return[tmp[0][0],tmp[0][1]];};};(function(){Ext.lib.ColorAnim=function(el,attributes,duration,method){Ext.lib.ColorAnim.superclass.constructor.call(this,el,attributes,duration,method);};Ext.extend(Ext.lib.ColorAnim,Ext.lib.AnimBase);var Y=Ext.lib;var superclass=Y.ColorAnim.superclass;var proto=Y.ColorAnim.prototype;proto.toString=function(){var el=this.getEl();var id=el.id||el.tagName;return("ColorAnim "+id);};proto.patterns.color=/color$/i;proto.patterns.rgb=/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;proto.patterns.hex=/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;proto.patterns.hex3=/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i;proto.patterns.transparent=/^transparent|rgba\(0, 0, 0, 0\)$/;proto.parseColor=function(s){if(s.length==3){return s;} -var c=this.patterns.hex.exec(s);if(c&&c.length==4){return[parseInt(c[1],16),parseInt(c[2],16),parseInt(c[3],16)];} -c=this.patterns.rgb.exec(s);if(c&&c.length==4){return[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)];} -c=this.patterns.hex3.exec(s);if(c&&c.length==4){return[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)];} -return null;};proto.getAttribute=function(attr){var el=this.getEl();if(this.patterns.color.test(attr)){var val=fly(el).getStyle(attr);if(this.patterns.transparent.test(val)){var parent=el.parentNode;val=fly(parent).getStyle(attr);while(parent&&this.patterns.transparent.test(val)){parent=parent.parentNode;val=fly(parent).getStyle(attr);if(parent.tagName.toUpperCase()=='HTML'){val='#fff';}}}}else{val=superclass.getAttribute.call(this,attr);} -return val;};proto.doMethod=function(attr,start,end){var val;if(this.patterns.color.test(attr)){val=[];for(var i=0,len=start.length;i<len;++i){val[i]=superclass.doMethod.call(this,attr,start[i],end[i]);} -val='rgb('+Math.floor(val[0])+','+Math.floor(val[1])+','+Math.floor(val[2])+')';} -else{val=superclass.doMethod.call(this,attr,start,end);} -return val;};proto.setRuntimeAttribute=function(attr){superclass.setRuntimeAttribute.call(this,attr);if(this.patterns.color.test(attr)){var attributes=this.attributes;var start=this.parseColor(this.runtimeAttributes[attr].start);var end=this.parseColor(this.runtimeAttributes[attr].end);if(typeof attributes[attr]['to']==='undefined'&&typeof attributes[attr]['by']!=='undefined'){end=this.parseColor(attributes[attr].by);for(var i=0,len=start.length;i<len;++i){end[i]=start[i]+end[i];}} -this.runtimeAttributes[attr].start=start;this.runtimeAttributes[attr].end=end;}};})();Ext.lib.Easing={easeNone:function(t,b,c,d){return c*t/d+b;},easeIn:function(t,b,c,d){return c*(t/=d)*t+b;},easeOut:function(t,b,c,d){return-c*(t/=d)*(t-2)+b;},easeBoth:function(t,b,c,d){if((t/=d/2)<1){return c/2*t*t+b;} -return-c/2*((--t)*(t-2)-1)+b;},easeInStrong:function(t,b,c,d){return c*(t/=d)*t*t*t+b;},easeOutStrong:function(t,b,c,d){return-c*((t=t/d-1)*t*t*t-1)+b;},easeBothStrong:function(t,b,c,d){if((t/=d/2)<1){return c/2*t*t*t*t+b;} -return-c/2*((t-=2)*t*t*t-2)+b;},elasticIn:function(t,b,c,d,a,p){if(t==0){return b;} -if((t/=d)==1){return b+c;} -if(!p){p=d*.3;} -if(!a||a<Math.abs(c)){a=c;var s=p/4;} -else{var s=p/(2*Math.PI)*Math.asin(c/a);} -return-(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;},elasticOut:function(t,b,c,d,a,p){if(t==0){return b;} -if((t/=d)==1){return b+c;} -if(!p){p=d*.3;} -if(!a||a<Math.abs(c)){a=c;var s=p/4;} -else{var s=p/(2*Math.PI)*Math.asin(c/a);} -return a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b;},elasticBoth:function(t,b,c,d,a,p){if(t==0){return b;} -if((t/=d/2)==2){return b+c;} -if(!p){p=d*(.3*1.5);} -if(!a||a<Math.abs(c)){a=c;var s=p/4;} -else{var s=p/(2*Math.PI)*Math.asin(c/a);} -if(t<1){return-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;} -return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b;},backIn:function(t,b,c,d,s){if(typeof s=='undefined'){s=1.70158;} -return c*(t/=d)*t*((s+1)*t-s)+b;},backOut:function(t,b,c,d,s){if(typeof s=='undefined'){s=1.70158;} -return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b;},backBoth:function(t,b,c,d,s){if(typeof s=='undefined'){s=1.70158;} -if((t/=d/2)<1){return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;} -return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b;},bounceIn:function(t,b,c,d){return c-Ext.lib.Easing.bounceOut(d-t,0,c,d)+b;},bounceOut:function(t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b;}else if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+.75)+b;}else if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+.9375)+b;} -return c*(7.5625*(t-=(2.625/2.75))*t+.984375)+b;},bounceBoth:function(t,b,c,d){if(t<d/2){return Ext.lib.Easing.bounceIn(t*2,0,c,d)*.5+b;} -return Ext.lib.Easing.bounceOut(t*2-d,0,c,d)*.5+c*.5+b;}};(function(){Ext.lib.Motion=function(el,attributes,duration,method){if(el){Ext.lib.Motion.superclass.constructor.call(this,el,attributes,duration,method);}};Ext.extend(Ext.lib.Motion,Ext.lib.ColorAnim);var Y=Ext.lib;var superclass=Y.Motion.superclass;var proto=Y.Motion.prototype;proto.toString=function(){var el=this.getEl();var id=el.id||el.tagName;return("Motion "+id);};proto.patterns.points=/^points$/i;proto.setAttribute=function(attr,val,unit){if(this.patterns.points.test(attr)){unit=unit||'px';superclass.setAttribute.call(this,'left',val[0],unit);superclass.setAttribute.call(this,'top',val[1],unit);}else{superclass.setAttribute.call(this,attr,val,unit);}};proto.getAttribute=function(attr){if(this.patterns.points.test(attr)){var val=[superclass.getAttribute.call(this,'left'),superclass.getAttribute.call(this,'top')];}else{val=superclass.getAttribute.call(this,attr);} -return val;};proto.doMethod=function(attr,start,end){var val=null;if(this.patterns.points.test(attr)){var t=this.method(this.currentFrame,0,100,this.totalFrames)/100;val=Y.Bezier.getPosition(this.runtimeAttributes[attr],t);}else{val=superclass.doMethod.call(this,attr,start,end);} -return val;};proto.setRuntimeAttribute=function(attr){if(this.patterns.points.test(attr)){var el=this.getEl();var attributes=this.attributes;var start;var control=attributes['points']['control']||[];var end;var i,len;if(control.length>0&&!(control[0]instanceof Array)){control=[control];}else{var tmp=[];for(i=0,len=control.length;i<len;++i){tmp[i]=control[i];} -control=tmp;} -Ext.fly(el).position();if(isset(attributes['points']['from'])){Ext.lib.Dom.setXY(el,attributes['points']['from']);} -else{Ext.lib.Dom.setXY(el,Ext.lib.Dom.getXY(el));} -start=this.getAttribute('points');if(isset(attributes['points']['to'])){end=translateValues.call(this,attributes['points']['to'],start);var pageXY=Ext.lib.Dom.getXY(this.getEl());for(i=0,len=control.length;i<len;++i){control[i]=translateValues.call(this,control[i],start);}}else if(isset(attributes['points']['by'])){end=[start[0]+attributes['points']['by'][0],start[1]+attributes['points']['by'][1]];for(i=0,len=control.length;i<len;++i){control[i]=[start[0]+control[i][0],start[1]+control[i][1]];}} -this.runtimeAttributes[attr]=[start];if(control.length>0){this.runtimeAttributes[attr]=this.runtimeAttributes[attr].concat(control);} -this.runtimeAttributes[attr][this.runtimeAttributes[attr].length]=end;} -else{superclass.setRuntimeAttribute.call(this,attr);}};var translateValues=function(val,start){var pageXY=Ext.lib.Dom.getXY(this.getEl());val=[val[0]-pageXY[0]+start[0],val[1]-pageXY[1]+start[1]];return val;};var isset=function(prop){return(typeof prop!=='undefined');};})();(function(){Ext.lib.Scroll=function(el,attributes,duration,method){if(el){Ext.lib.Scroll.superclass.constructor.call(this,el,attributes,duration,method);}};Ext.extend(Ext.lib.Scroll,Ext.lib.ColorAnim);var Y=Ext.lib;var superclass=Y.Scroll.superclass;var proto=Y.Scroll.prototype;proto.toString=function(){var el=this.getEl();var id=el.id||el.tagName;return("Scroll "+id);};proto.doMethod=function(attr,start,end){var val=null;if(attr=='scroll'){val=[this.method(this.currentFrame,start[0],end[0]-start[0],this.totalFrames),this.method(this.currentFrame,start[1],end[1]-start[1],this.totalFrames)];}else{val=superclass.doMethod.call(this,attr,start,end);} -return val;};proto.getAttribute=function(attr){var val=null;var el=this.getEl();if(attr=='scroll'){val=[el.scrollLeft,el.scrollTop];}else{val=superclass.getAttribute.call(this,attr);} -return val;};proto.setAttribute=function(attr,val,unit){var el=this.getEl();if(attr=='scroll'){el.scrollLeft=val[0];el.scrollTop=val[1];}else{superclass.setAttribute.call(this,attr,val,unit);}};})();})(); diff --git a/lib/web/extjs/adapter/jquery/ext-jquery-adapter.js b/lib/web/extjs/adapter/jquery/ext-jquery-adapter.js deleted file mode 100644 index b3505aa731f8e89d86e12b3bdd915caadd017eaa..0000000000000000000000000000000000000000 --- a/lib/web/extjs/adapter/jquery/ext-jquery-adapter.js +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext={};window["undefined"]=window["undefined"];Ext.apply=function(o,c,defaults){if(defaults){Ext.apply(o,defaults);} -if(o&&c&&typeof c=='object'){for(var p in c){o[p]=c[p];}} -return o;};(function(){var idSeed=0;var ua=navigator.userAgent.toLowerCase();var isStrict=document.compatMode=="CSS1Compat",isOpera=ua.indexOf("opera")>-1,isSafari=(/webkit|khtml/).test(ua),isIE=ua.indexOf("msie")>-1,isIE7=ua.indexOf("msie 7")>-1,isGecko=!isSafari&&ua.indexOf("gecko")>-1,isBorderBox=isIE&&!isStrict,isWindows=(ua.indexOf("windows")!=-1||ua.indexOf("win32")!=-1),isMac=(ua.indexOf("macintosh")!=-1||ua.indexOf("mac os x")!=-1),isSecure=window.location.href.toLowerCase().indexOf("https")===0;if(isIE&&!isIE7){try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}} -Ext.apply(Ext,{isStrict:isStrict,isSecure:isSecure,isReady:false,enableGarbageCollector:true,SSL_SECURE_URL:"javascript:false",BLANK_IMAGE_URL:"http:/"+"/extjs.com/s.gif",emptyFn:function(){},applyIf:function(o,c){if(o&&c){for(var p in c){if(typeof o[p]=="undefined"){o[p]=c[p];}}} -return o;},addBehaviors:function(o){if(!Ext.isReady){Ext.onReady(function(){Ext.addBehaviors(o);});return;} -var cache={};for(var b in o){var parts=b.split('@');if(parts[1]){var s=parts[0];if(!cache[s]){cache[s]=Ext.select(s);} -cache[s].on(parts[1],o[b]);}} -cache=null;},id:function(el,prefix){prefix=prefix||"ext-gen";el=Ext.getDom(el);var id=prefix+(++idSeed);return el?(el.id?el.id:(el.id=id)):id;},extend:function(){var io=function(o){for(var m in o){this[m]=o[m];}};return function(sb,sp,overrides){if(typeof sp=='object'){overrides=sp;sp=sb;sb=function(){sp.apply(this,arguments);};} -var F=function(){},sbp,spp=sp.prototype;F.prototype=spp;sbp=sb.prototype=new F();sbp.constructor=sb;sb.superclass=spp;if(spp.constructor==Object.prototype.constructor){spp.constructor=sp;} -sb.override=function(o){Ext.override(sb,o);};sbp.override=io;sbp.__extcls=sb;Ext.override(sb,overrides);return sb;};}(),override:function(origclass,overrides){if(overrides){var p=origclass.prototype;for(var method in overrides){p[method]=overrides[method];}}},namespace:function(){var a=arguments,o=null,i,j,d,rt;for(i=0;i<a.length;++i){d=a[i].split(".");rt=d[0];eval('if (typeof '+rt+' == "undefined"){'+rt+' = {};} o = '+rt+';');for(j=1;j<d.length;++j){o[d[j]]=o[d[j]]||{};o=o[d[j]];}}},urlEncode:function(o){if(!o){return"";} -var buf=[];for(var key in o){var ov=o[key];var type=typeof ov;if(type=='undefined'){buf.push(encodeURIComponent(key),"=&");}else if(type!="function"&&type!="object"){buf.push(encodeURIComponent(key),"=",encodeURIComponent(ov),"&");}else if(ov instanceof Array){for(var i=0,len=ov.length;i<len;i++){buf.push(encodeURIComponent(key),"=",encodeURIComponent(ov[i]===undefined?'':ov[i]),"&");}}} -buf.pop();return buf.join("");},urlDecode:function(string,overwrite){if(!string||!string.length){return{};} -var obj={};var pairs=string.split('&');var pair,name,value;for(var i=0,len=pairs.length;i<len;i++){pair=pairs[i].split('=');name=decodeURIComponent(pair[0]);value=decodeURIComponent(pair[1]);if(overwrite!==true){if(typeof obj[name]=="undefined"){obj[name]=value;}else if(typeof obj[name]=="string"){obj[name]=[obj[name]];obj[name].push(value);}else{obj[name].push(value);}}else{obj[name]=value;}} -return obj;},each:function(array,fn,scope){if(typeof array.length=="undefined"||typeof array=="string"){array=[array];} -for(var i=0,len=array.length;i<len;i++){if(fn.call(scope||array[i],array[i],i,array)===false){return i;};}},combine:function(){var as=arguments,l=as.length,r=[];for(var i=0;i<l;i++){var a=as[i];if(a instanceof Array){r=r.concat(a);}else if(a.length!==undefined&&!a.substr){r=r.concat(Array.prototype.slice.call(a,0));}else{r.push(a);}} -return r;},escapeRe:function(s){return s.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1");},callback:function(cb,scope,args,delay){if(typeof cb=="function"){if(delay){cb.defer(delay,scope,args||[]);}else{cb.apply(scope,args||[]);}}},getDom:function(el){if(!el){return null;} -return el.dom?el.dom:(typeof el=='string'?document.getElementById(el):el);},getCmp:function(id){return Ext.ComponentMgr.get(id);},num:function(v,defaultValue){if(typeof v!='number'){return defaultValue;} -return v;},destroy:function(){for(var i=0,a=arguments,len=a.length;i<len;i++){var as=a[i];if(as){if(as.dom){as.removeAllListeners();as.remove();continue;} -if(typeof as.purgeListeners=='function'){as.purgeListeners();} -if(typeof as.destroy=='function'){as.destroy();}}}},isOpera:isOpera,isSafari:isSafari,isIE:isIE,isIE7:isIE7,isGecko:isGecko,isBorderBox:isBorderBox,isWindows:isWindows,isMac:isMac,useShims:((isIE&&!isIE7)||(isGecko&&isMac))});})();Ext.namespace("Ext","Ext.util","Ext.grid","Ext.dd","Ext.tree","Ext.data","Ext.form","Ext.menu","Ext.state","Ext.lib","Ext.layout","Ext.app");Ext.apply(Function.prototype,{createCallback:function(){var args=arguments;var method=this;return function(){return method.apply(window,args);};},createDelegate:function(obj,args,appendArgs){var method=this;return function(){var callArgs=args||arguments;if(appendArgs===true){callArgs=Array.prototype.slice.call(arguments,0);callArgs=callArgs.concat(args);}else if(typeof appendArgs=="number"){callArgs=Array.prototype.slice.call(arguments,0);var applyArgs=[appendArgs,0].concat(args);Array.prototype.splice.apply(callArgs,applyArgs);} -return method.apply(obj||window,callArgs);};},defer:function(millis,obj,args,appendArgs){var fn=this.createDelegate(obj,args,appendArgs);if(millis){return setTimeout(fn,millis);} -fn();return 0;},createSequence:function(fcn,scope){if(typeof fcn!="function"){return this;} -var method=this;return function(){var retval=method.apply(this||window,arguments);fcn.apply(scope||this||window,arguments);return retval;};},createInterceptor:function(fcn,scope){if(typeof fcn!="function"){return this;} -var method=this;return function(){fcn.target=this;fcn.method=method;if(fcn.apply(scope||this||window,arguments)===false){return;} -return method.apply(this||window,arguments);};}});Ext.applyIf(String,{escape:function(string){return string.replace(/('|\\)/g,"\\$1");},leftPad:function(val,size,ch){var result=new String(val);if(ch===null||ch===undefined||ch===''){ch=" ";} -while(result.length<size){result=ch+result;} -return result;},format:function(format){var args=Array.prototype.slice.call(arguments,1);return format.replace(/\{(\d+)\}/g,function(m,i){return args[i];});}});String.prototype.toggle=function(value,other){return this==value?other:value;};Ext.applyIf(Number.prototype,{constrain:function(min,max){return Math.min(Math.max(this,min),max);}});Ext.applyIf(Array.prototype,{indexOf:function(o){for(var i=0,len=this.length;i<len;i++){if(this[i]==o)return i;} -return-1;},remove:function(o){var index=this.indexOf(o);if(index!=-1){this.splice(index,1);}}});Date.prototype.getElapsed=function(date){return Math.abs((date||new Date()).getTime()-this.getTime());}; - -if(typeof jQuery=="undefined"){throw"Unable to load Ext, jQuery not found.";} -(function(){Ext.lib.Dom={getViewWidth:function(full){return full?Math.max(jQuery(document).width(),jQuery(window).width()):jQuery(window).width();},getViewHeight:function(full){return full?Math.max(jQuery(document).height(),jQuery(window).height()):jQuery(window).height();},isAncestor:function(p,c){p=Ext.getDom(p);c=Ext.getDom(c);if(!p||!c){return false;} -if(p.contains&&!Ext.isSafari){return p.contains(c);}else if(p.compareDocumentPosition){return!!(p.compareDocumentPosition(c)&16);}else{var parent=c.parentNode;while(parent){if(parent==p){return true;} -else if(!parent.tagName||parent.tagName.toUpperCase()=="HTML"){return false;} -parent=parent.parentNode;} -return false;}},getRegion:function(el){return Ext.lib.Region.getRegion(el);},getY:function(el){return this.getXY(el)[1];},getX:function(el){return this.getXY(el)[0];},getXY:function(el){var p,pe,b,scroll,bd=document.body;el=Ext.getDom(el);if(el.getBoundingClientRect){b=el.getBoundingClientRect();scroll=fly(document).getScroll();return[b.left+scroll.left,b.top+scroll.top];}else{var x=el.offsetLeft,y=el.offsetTop;p=el.offsetParent;var hasAbsolute=false;if(p!=el){while(p){x+=p.offsetLeft;y+=p.offsetTop;if(Ext.isSafari&&!hasAbsolute&&fly(p).getStyle("position")=="absolute"){hasAbsolute=true;} -if(Ext.isGecko){pe=fly(p);var bt=parseInt(pe.getStyle("borderTopWidth"),10)||0;var bl=parseInt(pe.getStyle("borderLeftWidth"),10)||0;x+=bl;y+=bt;if(p!=el&&pe.getStyle('overflow')!='visible'){x+=bl;y+=bt;}} -p=p.offsetParent;}} -if(Ext.isSafari&&(hasAbsolute||fly(el).getStyle("position")=="absolute")){x-=bd.offsetLeft;y-=bd.offsetTop;}} -p=el.parentNode;while(p&&p!=bd){if(!Ext.isOpera||(Ext.isOpera&&p.tagName!='TR'&&fly(p).getStyle("display")!="inline")){x-=p.scrollLeft;y-=p.scrollTop;} -p=p.parentNode;} -return[x,y];},setXY:function(el,xy){el=Ext.fly(el,'_setXY');el.position();var pts=el.translatePoints(xy);if(xy[0]!==false){el.dom.style.left=pts.left+"px";} -if(xy[1]!==false){el.dom.style.top=pts.top+"px";}},setX:function(el,x){this.setXY(el,[x,false]);},setY:function(el,y){this.setXY(el,[false,y]);}};Ext.lib.Event={getPageX:function(e){e=e.browserEvent||e;return e.pageX;},getPageY:function(e){e=e.browserEvent||e;return e.pageY;},getXY:function(e){e=e.browserEvent||e;return[e.pageX,e.pageY];},getTarget:function(e){return e.target;},on:function(el,eventName,fn,scope,override){jQuery(el).bind(eventName,fn);},un:function(el,eventName,fn){jQuery(el).unbind(eventName,fn);},purgeElement:function(el){jQuery(el).unbind();},preventDefault:function(e){e=e.browserEvent||e;if(e.preventDefault){e.preventDefault();}else{e.returnValue=false;}},stopPropagation:function(e){e=e.browserEvent||e;if(e.stopPropagation){e.stopPropagation();}else{e.cancelBubble=true;}},stopEvent:function(e){this.preventDefault(e);this.stopPropagation(e);},onAvailable:function(id,fn,scope){var start=new Date();var f=function(){if(start.getElapsed()>10000){clearInterval(iid);} -var el=document.getElementById(id);if(el){clearInterval(iid);fn.call(scope||window,el);}};var iid=setInterval(f,50);},resolveTextNode:function(node){if(node&&3==node.nodeType){return node.parentNode;}else{return node;}},getRelatedTarget:function(ev){ev=ev.browserEvent||ev;var t=ev.relatedTarget;if(!t){if(ev.type=="mouseout"){t=ev.toElement;}else if(ev.type=="mouseover"){t=ev.fromElement;}} -return this.resolveTextNode(t);}};Ext.lib.Ajax=function(){var createComplete=function(cb){return function(xhr,status){if((status=='error'||status=='timeout')&&cb.failure){cb.failure.call(cb.scope||window,{responseText:xhr.responseText,responseXML:xhr.responseXML,argument:cb.argument});}else if(cb.success){cb.success.call(cb.scope||window,{responseText:xhr.responseText,responseXML:xhr.responseXML,argument:cb.argument});}};};return{request:function(method,uri,cb,data){jQuery.ajax({type:method,url:uri,data:data,timeout:cb.timeout,complete:createComplete(cb)});},formRequest:function(form,uri,cb,data,isUpload,sslUri){jQuery.ajax({type:Ext.getDom(form).method||'POST',url:uri,data:jQuery(form).formSerialize()+(data?'&'+data:''),timeout:cb.timeout,complete:createComplete(cb)});},isCallInProgress:function(trans){return false;},abort:function(trans){return false;},serializeForm:function(form){return jQuery(form.dom||form).formSerialize();}};}();Ext.lib.Anim=function(){var createAnim=function(cb,scope){var animated=true;return{stop:function(skipToLast){},isAnimated:function(){return animated;},proxyCallback:function(){animated=false;Ext.callback(cb,scope);}};};return{scroll:function(el,args,duration,easing,cb,scope){var anim=createAnim(cb,scope);el=Ext.getDom(el);el.scrollLeft=args.scroll.to[0];el.scrollTop=args.scroll.to[1];anim.proxyCallback();return anim;},motion:function(el,args,duration,easing,cb,scope){return this.run(el,args,duration,easing,cb,scope);},color:function(el,args,duration,easing,cb,scope){var anim=createAnim(cb,scope);anim.proxyCallback();return anim;},run:function(el,args,duration,easing,cb,scope,type){var anim=createAnim(cb,scope);var o={};for(var k in args){switch(k){case'points':var by,pts,e=Ext.fly(el,'_animrun');e.position();if(by=args.points.by){var xy=e.getXY();pts=e.translatePoints([xy[0]+by[0],xy[1]+by[1]]);}else{pts=e.translatePoints(args.points.to);} -o.left=pts.left;o.top=pts.top;if(!parseInt(e.getStyle('left'),10)){e.setLeft(0);} -if(!parseInt(e.getStyle('top'),10)){e.setTop(0);} -break;case'width':o.width=args.width.to;break;case'height':o.height=args.height.to;break;case'opacity':o.opacity=args.opacity.to;break;default:o[k]=args[k].to;break;}} -jQuery(el).animate(o,duration*1000,undefined,anim.proxyCallback);return anim;}};}();Ext.lib.Region=function(t,r,b,l){this.top=t;this[1]=t;this.right=r;this.bottom=b;this.left=l;this[0]=l;};Ext.lib.Region.prototype={contains:function(region){return(region.left>=this.left&®ion.right<=this.right&®ion.top>=this.top&®ion.bottom<=this.bottom);},getArea:function(){return((this.bottom-this.top)*(this.right-this.left));},intersect:function(region){var t=Math.max(this.top,region.top);var r=Math.min(this.right,region.right);var b=Math.min(this.bottom,region.bottom);var l=Math.max(this.left,region.left);if(b>=t&&r>=l){return new Ext.lib.Region(t,r,b,l);}else{return null;}},union:function(region){var t=Math.min(this.top,region.top);var r=Math.max(this.right,region.right);var b=Math.max(this.bottom,region.bottom);var l=Math.min(this.left,region.left);return new Ext.lib.Region(t,r,b,l);},adjust:function(t,l,b,r){this.top+=t;this.left+=l;this.right+=r;this.bottom+=b;return this;}};Ext.lib.Region.getRegion=function(el){var p=Ext.lib.Dom.getXY(el);var t=p[1];var r=p[0]+el.offsetWidth;var b=p[1]+el.offsetHeight;var l=p[0];return new Ext.lib.Region(t,r,b,l);};Ext.lib.Point=function(x,y){if(x instanceof Array){y=x[1];x=x[0];} -this.x=this.right=this.left=this[0]=x;this.y=this.top=this.bottom=this[1]=y;};Ext.lib.Point.prototype=new Ext.lib.Region();if(Ext.isIE){jQuery(window).unload(function(){var p=Function.prototype;delete p.createSequence;delete p.defer;delete p.createDelegate;delete p.createCallback;delete p.createInterceptor;});}})(); diff --git a/lib/web/extjs/adapter/jquery/jquery-plugins.js b/lib/web/extjs/adapter/jquery/jquery-plugins.js deleted file mode 100644 index 25e950553451e8c2825e033a474a33069e61c9a0..0000000000000000000000000000000000000000 --- a/lib/web/extjs/adapter/jquery/jquery-plugins.js +++ /dev/null @@ -1,965 +0,0 @@ -/* - * Ext - JS Library 1.0 Alpha 2 - * Copyright(c) 2006-2007, Jack Slocum. - */ - -/* - * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) - * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. - * - * $LastChangedDate$ - * $Rev$ - */ - -jQuery.fn._height = jQuery.fn.height; -jQuery.fn._width = jQuery.fn.width; - -/** - * If used on document, returns the document's height (innerHeight) - * If used on window, returns the viewport's (window) height - * See core docs on height() to see what happens when used on an element. - * - * @example $("#testdiv").height() - * @result 200 - * - * @example $(document).height() - * @result 800 - * - * @example $(window).height() - * @result 400 - * - * @name height - * @type Object - * @cat Plugins/Dimensions - */ -jQuery.fn.height = function() { - if ( this[0] == window ) - return self.innerHeight || - jQuery.boxModel && document.documentElement.clientHeight || - document.body.clientHeight; - - if ( this[0] == document ) - return Math.max( document.body.scrollHeight, document.body.offsetHeight ); - - return this._height(arguments[0]); -}; - -/** - * If used on document, returns the document's width (innerWidth) - * If used on window, returns the viewport's (window) width - * See core docs on height() to see what happens when used on an element. - * - * @example $("#testdiv").width() - * @result 200 - * - * @example $(document).width() - * @result 800 - * - * @example $(window).width() - * @result 400 - * - * @name width - * @type Object - * @cat Plugins/Dimensions - */ -jQuery.fn.width = function() { - if ( this[0] == window ) - return self.innerWidth || - jQuery.boxModel && document.documentElement.clientWidth || - document.body.clientWidth; - - if ( this[0] == document ) - return Math.max( document.body.scrollWidth, document.body.offsetWidth ); - - return this._width(arguments[0]); -}; - -/** - * Returns the inner height value (without border) for the first matched element. - * If used on document, returns the document's height (innerHeight) - * If used on window, returns the viewport's (window) height - * - * @example $("#testdiv").innerHeight() - * @result 800 - * - * @name innerHeight - * @type Number - * @cat Plugins/Dimensions - */ -jQuery.fn.innerHeight = function() { - return this[0] == window || this[0] == document ? - this.height() : - this.css('display') != 'none' ? - this[0].offsetHeight - (parseInt(this.css("borderTopWidth")) || 0) - (parseInt(this.css("borderBottomWidth")) || 0) : - this.height() + (parseInt(this.css("paddingTop")) || 0) + (parseInt(this.css("paddingBottom")) || 0); -}; - -/** - * Returns the inner width value (without border) for the first matched element. - * If used on document, returns the document's Width (innerWidth) - * If used on window, returns the viewport's (window) width - * - * @example $("#testdiv").innerWidth() - * @result 1000 - * - * @name innerWidth - * @type Number - * @cat Plugins/Dimensions - */ -jQuery.fn.innerWidth = function() { - return this[0] == window || this[0] == document ? - this.width() : - this.css('display') != 'none' ? - this[0].offsetWidth - (parseInt(this.css("borderLeftWidth")) || 0) - (parseInt(this.css("borderRightWidth")) || 0) : - this.height() + (parseInt(this.css("paddingLeft")) || 0) + (parseInt(this.css("paddingRight")) || 0); -}; - -/** - * Returns the outer height value (including border) for the first matched element. - * Cannot be used on document or window. - * - * @example $("#testdiv").outerHeight() - * @result 1000 - * - * @name outerHeight - * @type Number - * @cat Plugins/Dimensions - */ -jQuery.fn.outerHeight = function() { - return this[0] == window || this[0] == document ? - this.height() : - this.css('display') != 'none' ? - this[0].offsetHeight : - this.height() + (parseInt(this.css("borderTopWidth")) || 0) + (parseInt(this.css("borderBottomWidth")) || 0) - + (parseInt(this.css("paddingTop")) || 0) + (parseInt(this.css("paddingBottom")) || 0); -}; - -/** - * Returns the outer width value (including border) for the first matched element. - * Cannot be used on document or window. - * - * @example $("#testdiv").outerWidth() - * @result 1000 - * - * @name outerWidth - * @type Number - * @cat Plugins/Dimensions - */ -jQuery.fn.outerWidth = function() { - return this[0] == window || this[0] == document ? - this.width() : - this.css('display') != 'none' ? - this[0].offsetWidth : - this.height() + (parseInt(this.css("borderLeftWidth")) || 0) + (parseInt(this.css("borderRightWidth")) || 0) - + (parseInt(this.css("paddingLeft")) || 0) + (parseInt(this.css("paddingRight")) || 0); -}; - -/** - * Returns how many pixels the user has scrolled to the right (scrollLeft). - * Works on containers with overflow: auto and window/document. - * - * @example $("#testdiv").scrollLeft() - * @result 100 - * - * @name scrollLeft - * @type Number - * @cat Plugins/Dimensions - */ -jQuery.fn.scrollLeft = function() { - if ( this[0] == window || this[0] == document ) - return self.pageXOffset || - jQuery.boxModel && document.documentElement.scrollLeft || - document.body.scrollLeft; - - return this[0].scrollLeft; -}; - -/** - * Returns how many pixels the user has scrolled to the bottom (scrollTop). - * Works on containers with overflow: auto and window/document. - * - * @example $("#testdiv").scrollTop() - * @result 100 - * - * @name scrollTop - * @type Number - * @cat Plugins/Dimensions - */ -jQuery.fn.scrollTop = function() { - if ( this[0] == window || this[0] == document ) - return self.pageYOffset || - jQuery.boxModel && document.documentElement.scrollTop || - document.body.scrollTop; - - return this[0].scrollTop; -}; - -/** - * Returns the location of the element in pixels from the top left corner of the viewport. - * - * For accurate readings make sure to use pixel values for margins, borders and padding. - * - * @example $("#testdiv").offset() - * @result { top: 100, left: 100, scrollTop: 10, scrollLeft: 10 } - * - * @example $("#testdiv").offset({ scroll: false }) - * @result { top: 90, left: 90 } - * - * @example var offset = {} - * $("#testdiv").offset({ scroll: false }, offset) - * @result offset = { top: 90, left: 90 } - * - * @name offset - * @param Object options A hash of options describing what should be included in the final calculations of the offset. - * The options include: - * margin: Should the margin of the element be included in the calculations? True by default. - * If set to false the margin of the element is subtracted from the total offset. - * border: Should the border of the element be included in the calculations? True by default. - * If set to false the border of the element is subtracted from the total offset. - * padding: Should the padding of the element be included in the calculations? False by default. - * If set to true the padding of the element is added to the total offset. - * scroll: Should the scroll offsets of the parent elements be included in the calculations? - * True by default. When true, it adds the total scroll offsets of all parents to the - * total offset and also adds two properties to the returned object, scrollTop and - * scrollLeft. If set to false the scroll offsets of parent elements are ignored. - * If scroll offsets are not needed, set to false to get a performance boost. - * @param Object returnObject An object to store the return value in, so as not to break the chain. If passed in the - * chain will not be broken and the result will be assigned to this object. - * @type Object - * @cat Plugins/Dimensions - * @author Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net) - */ -jQuery.fn.offset = function(options, returnObject) { - var x = 0, y = 0, elem = this[0], parent = this[0], sl = 0, st = 0, options = jQuery.extend({ margin: true, border: true, padding: false, scroll: true }, options || {}); - do { - x += parent.offsetLeft || 0; - y += parent.offsetTop || 0; - - // Mozilla and IE do not add the border - if (jQuery.browser.mozilla || jQuery.browser.msie) { - // get borders - var bt = parseInt(jQuery.css(parent, 'borderTopWidth')) || 0; - var bl = parseInt(jQuery.css(parent, 'borderLeftWidth')) || 0; - - // add borders to offset - x += bl; - y += bt; - - // Mozilla removes the border if the parent has overflow property other than visible - if (jQuery.browser.mozilla && parent != elem && jQuery.css(parent, 'overflow') != 'visible') { - x += bl; - y += bt; - } - } - - var op = parent.offsetParent; - if (op && (op.tagName == 'BODY' || op.tagName == 'HTML')) { - // Safari doesn't add the body margin for elments positioned with static or relative - if (jQuery.browser.safari && jQuery.css(parent, 'position') != 'absolute') { - x += parseInt(jQuery.css(op, 'marginLeft')) || 0; - y += parseInt(jQuery.css(op, 'marginTop')) || 0; - } - - // Exit the loop - break; - } - - if (options.scroll) { - // Need to get scroll offsets in-between offsetParents - do { - sl += parent.scrollLeft || 0; - st += parent.scrollTop || 0; - - parent = parent.parentNode; - - // Mozilla removes the border if the parent has overflow property other than visible - if (jQuery.browser.mozilla && parent != elem && parent != op && parent.style && jQuery.css(parent, 'overflow') != 'visible') { - y += parseInt(jQuery.css(parent, 'borderTopWidth')) || 0; - x += parseInt(jQuery.css(parent, 'borderLeftWidth')) || 0; - } - } while (parent != op); - } else { - parent = parent.offsetParent; - } - } while (parent); - - if ( !options.margin) { - x -= parseInt(jQuery.css(elem, 'marginLeft')) || 0; - y -= parseInt(jQuery.css(elem, 'marginTop')) || 0; - } - - // Safari and Opera do not add the border for the element - if ( options.border && (jQuery.browser.safari || jQuery.browser.opera) ) { - x += parseInt(jQuery.css(elem, 'borderLeftWidth')) || 0; - y += parseInt(jQuery.css(elem, 'borderTopWidth')) || 0; - } else if ( !options.border && !(jQuery.browser.safari || jQuery.browser.opera) ) { - x -= parseInt(jQuery.css(elem, 'borderLeftWidth')) || 0; - y -= parseInt(jQuery.css(elem, 'borderTopWidth')) || 0; - } - - if ( options.padding ) { - x += parseInt(jQuery.css(elem, 'paddingLeft')) || 0; - y += parseInt(jQuery.css(elem, 'paddingTop')) || 0; - } - - // Opera thinks offset is scroll offset for display: inline elements - if (options.scroll && jQuery.browser.opera && jQuery.css(elem, 'display') == 'inline') { - sl -= elem.scrollLeft || 0; - st -= elem.scrollTop || 0; - } - - var returnValue = options.scroll ? { top: y - st, left: x - sl, scrollTop: st, scrollLeft: sl } - : { top: y, left: x }; - - if (returnObject) { jQuery.extend(returnObject, returnValue); return this; } - else { return returnValue; } -}; - - - -// FORM PLUGIN - -/* - * jQuery form plugin - * @requires jQuery v1.0.3 - * - * Dual licensed under the MIT and GPL licenses: - * http://www.opensource.org/licenses/mit-license.php - * http://www.gnu.org/licenses/gpl.html - * - * Revision: $Id$ - * Version: 0.9 - */ - -/** - * ajaxSubmit() provides a mechanism for submitting an HTML form using AJAX. - * - * ajaxSubmit accepts a single argument which can be either a success callback function - * or an options Object. If a function is provided it will be invoked upon successful - * completion of the submit and will be passed the response from the server. - * If an options Object is provided, the following attributes are supported: - * - * target: Identifies the element(s) in the page to be updated with the server response. - * This value may be specified as a jQuery selection string, a jQuery object, - * or a DOM element. - * default value: null - * - * url: URL to which the form data will be submitted. - * default value: value of form's 'action' attribute - * - * method: @deprecated use 'type' - * type: The method in which the form data should be submitted, 'GET' or 'POST'. - * default value: value of form's 'method' attribute (or 'GET' if none found) - * - * before: @deprecated use 'beforeSubmit' - * beforeSubmit: Callback method to be invoked before the form is submitted. - * default value: null - * - * after: @deprecated use 'success' - * success: Callback method to be invoked after the form has been successfully submitted - * and the response has been returned from the server - * default value: null - * - * dataType: Expected dataType of the response. One of: null, 'xml', 'script', or 'json' - * default value: null - * - * semantic: Boolean flag indicating whether data must be submitted in semantic order (slower). - * default value: false - * - * resetForm: Boolean flag indicating whether the form should be reset if the submit is successful - * - * clearForm: Boolean flag indicating whether the form should be cleared if the submit is successful - * - * - * The 'beforeSubmit' callback can be provided as a hook for running pre-submit logic or for - * validating the form data. If the 'beforeSubmit' callback returns false then the form will - * not be submitted. The 'beforeSubmit' callback is invoked with three arguments: the form data - * in array format, the jQuery object, and the options object passed into ajaxSubmit. - * The form data array takes the following form: - * - * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ] - * - * If a 'success' callback method is provided it is invoked after the response has been returned - * from the server. It is passed the responseText or responseXML value (depending on dataType). - * See jQuery.ajax for further details. - * - * - * The dataType option provides a means for specifying how the server response should be handled. - * This maps directly to the jQuery.httpData method. The following values are supported: - * - * 'xml': if dataType == 'xml' the server response is treated as XML and the 'after' - * callback method, if specified, will be passed the responseXML value - * 'json': if dataType == 'json' the server response will be evaluted and passed to - * the 'after' callback, if specified - * 'script': if dataType == 'script' the server response is evaluated in the global context - * - * - * Note that it does not make sense to use both the 'target' and 'dataType' options. If both - * are provided the target will be ignored. - * - * The semantic argument can be used to force form serialization in semantic order. - * This is normally true anyway, unless the form contains input elements of type='image'. - * If your form must be submitted with name/value pairs in semantic order and your form - * contains an input of type='image" then pass true for this arg, otherwise pass false - * (or nothing) to avoid the overhead for this logic. - * - * - * When used on its own, ajaxSubmit() is typically bound to a form's submit event like this: - * - * $("#form-id").submit(function() { - * $(this).ajaxSubmit(options); - * return false; // cancel conventional submit - * }); - * - * When using ajaxForm(), however, this is done for you. - * - * @example - * $('#myForm').ajaxSubmit(function(data) { - * alert('Form submit succeeded! Server returned: ' + data); - * }); - * @desc Submit form and alert server response - * - * - * @example - * var options = { - * target: '#myTargetDiv' - * }; - * $('#myForm').ajaxSubmit(options); - * @desc Submit form and update page element with server response - * - * - * @example - * var options = { - * success: function(responseText) { - * alert(responseText); - * } - * }; - * $('#myForm').ajaxSubmit(options); - * @desc Submit form and alert the server response - * - * - * @example - * var options = { - * beforeSubmit: function(formArray, jqForm) { - * if (formArray.length == 0) { - * alert('Please enter data.'); - * return false; - * } - * } - * }; - * $('#myForm').ajaxSubmit(options); - * @desc Pre-submit validation which aborts the submit operation if form data is empty - * - * - * @example - * var options = { - * url: myJsonUrl.php, - * dataType: 'json', - * success: function(data) { - * // 'data' is an object representing the the evaluated json data - * } - * }; - * $('#myForm').ajaxSubmit(options); - * @desc json data returned and evaluated - * - * - * @example - * var options = { - * url: myXmlUrl.php, - * dataType: 'xml', - * success: function(responseXML) { - * // responseXML is XML document object - * var data = $('myElement', responseXML).text(); - * } - * }; - * $('#myForm').ajaxSubmit(options); - * @desc XML data returned from server - * - * - * @example - * var options = { - * resetForm: true - * }; - * $('#myForm').ajaxSubmit(options); - * @desc submit form and reset it if successful - * - * @example - * $('#myForm).submit(function() { - * $(this).ajaxSubmit(); - * return false; - * }); - * @desc Bind form's submit event to use ajaxSubmit - * - * - * @name ajaxSubmit - * @type jQuery - * @param options object literal containing options which control the form submission process - * @cat Plugins/Form - * @return jQuery - * @see formToArray - * @see ajaxForm - * @see $.ajax - * @author jQuery Community - */ -jQuery.fn.ajaxSubmit = function(options) { - if (typeof options == 'function') - options = { success: options }; - - options = jQuery.extend({ - url: this.attr('action') || '', - method: this.attr('method') || 'GET' - }, options || {}); - - // remap deprecated options (temporarily) - options.success = options.success || options.after; - options.beforeSubmit = options.beforeSubmit || options.before; - options.type = options.type || options.method; - - var a = this.formToArray(options.semantic); - - // give pre-submit callback an opportunity to abort the submit - if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) return this; - - var q = jQuery.param(a); - - if (options.type.toUpperCase() == 'GET') { - // if url already has a '?' then append args after '&' - options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q; - options.data = null; // data is null for 'get' - } - else - options.data = q; // data is the query string for 'post' - - var $form = this, callbacks = []; - if (options.resetForm) callbacks.push(function() { $form.resetForm(); }); - if (options.clearForm) callbacks.push(function() { $form.clearForm(); }); - - // perform a load on the target only if dataType is not provided - if (!options.dataType && options.target) { - var oldSuccess = options.success || function(){}; - callbacks.push(function(data, status) { - jQuery(options.target).attr("innerHTML", data).evalScripts().each(oldSuccess, [data, status]); - }); - } - else if (options.success) - callbacks.push(options.success); - - options.success = function(data, status) { - for (var i=0, max=callbacks.length; i < max; i++) - callbacks[i](data, status); - }; - - jQuery.ajax(options); - return this; -}; - -/** - * ajaxForm() provides a mechanism for fully automating form submission. - * - * The advantages of using this method instead of ajaxSubmit() are: - * - * 1: This method will include coordinates for <input type="image" /> elements (if the element - * is used to submit the form). - * 2. This method will include the submit element's name/value data (for the element that was - * used to submit the form). - * 3. This method binds the submit() method to the form for you. - * - * Note that for accurate x/y coordinates of image submit elements in all browsers - * you need to also use the "dimensions" plugin (this method will auto-detect its presence). - * - * The options argument for ajaxForm works exactly as it does for ajaxSubmit. ajaxForm merely - * passes the options argument along after properly binding events for submit elements and - * the form itself. See ajaxSubmit for a full description of the options argument. - * - * - * @example - * var options = { - * target: '#myTargetDiv' - * }; - * $('#myForm').ajaxSForm(options); - * @desc Bind form's submit event so that 'myTargetDiv' is updated with the server response - * when the form is submitted. - * - * - * @example - * var options = { - * success: function(responseText) { - * alert(responseText); - * } - * }; - * $('#myForm').ajaxSubmit(options); - * @desc Bind form's submit event so that server response is alerted after the form is submitted. - * - * - * @example - * var options = { - * beforeSubmit: function(formArray, jqForm) { - * if (formArray.length == 0) { - * alert('Please enter data.'); - * return false; - * } - * } - * }; - * $('#myForm').ajaxSubmit(options); - * @desc Bind form's submit event so that pre-submit callback is invoked before the form - * is submitted. - * - * - * @name ajaxForm - * @param options object literal containing options which control the form submission process - * @return jQuery - * @cat Plugins/Form - * @type jQuery - * @see ajaxSubmit - * @author jQuery Community - */ -jQuery.fn.ajaxForm = function(options) { - return this.each(function() { - jQuery("input:submit,input:image,button:submit", this).click(function(ev) { - var $form = this.form; - $form.clk = this; - if (this.type == 'image') { - if (ev.offsetX != undefined) { - $form.clk_x = ev.offsetX; - $form.clk_y = ev.offsetY; - } else if (typeof jQuery.fn.offset == 'function') { // try to use dimensions plugin - var offset = jQuery(this).offset(); - $form.clk_x = ev.pageX - offset.left; - $form.clk_y = ev.pageY - offset.top; - } else { - $form.clk_x = ev.pageX - this.offsetLeft; - $form.clk_y = ev.pageY - this.offsetTop; - } - } - // clear form vars - setTimeout(function() { - $form.clk = $form.clk_x = $form.clk_y = null; - }, 10); - }) - }).submit(function(e) { - jQuery(this).ajaxSubmit(options); - return false; - }); -}; - - -/** - * formToArray() gathers form element data into an array of objects that can - * be passed to any of the following ajax functions: $.get, $.post, or load. - * Each object in the array has both a 'name' and 'value' property. An example of - * an array for a simple login form might be: - * - * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ] - * - * It is this array that is passed to pre-submit callback functions provided to the - * ajaxSubmit() and ajaxForm() methods. - * - * The semantic argument can be used to force form serialization in semantic order. - * This is normally true anyway, unless the form contains input elements of type='image'. - * If your form must be submitted with name/value pairs in semantic order and your form - * contains an input of type='image" then pass true for this arg, otherwise pass false - * (or nothing) to avoid the overhead for this logic. - * - * @example var data = $("#myForm").formToArray(); - * $.post( "myscript.cgi", data ); - * @desc Collect all the data from a form and submit it to the server. - * - * @name formToArray - * @param semantic true if serialization must maintain strict semantic ordering of elements (slower) - * @type Array<Object> - * @cat Plugins/Form - * @see ajaxForm - * @see ajaxSubmit - * @author jQuery Community - */ -jQuery.fn.formToArray = function(semantic) { - var a = []; - if (this.length == 0) return a; - - var form = this[0]; - var els = semantic ? form.getElementsByTagName('*') : form.elements; - if (!els) return a; - for(var i=0, max=els.length; i < max; i++) { - var el = els[i]; - var n = el.name; - if (!n) continue; - - if (semantic && form.clk && el.type == "image") { - // handle image inputs on the fly when semantic == true - if(!el.disabled && form.clk == el) - a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y}); - continue; - } - var v = jQuery.fieldValue(el, true); - if (v === null) continue; - if (v.constructor == Array) { - for(var j=0, jmax=v.length; j < jmax; j++) - a.push({name: n, value: v[j]}); - } - else - a.push({name: n, value: v}); - } - - if (!semantic && form.clk) { - // input type=='image' are not found in elements array! handle them here - var inputs = form.getElementsByTagName("input"); - for(var i=0, max=inputs.length; i < max; i++) { - var input = inputs[i]; - var n = input.name; - if(n && !input.disabled && input.type == "image" && form.clk == input) - a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y}); - } - } - return a; -}; - - -/** - * Serializes form data into a 'submittable' string. This method will return a string - * in the format: name1=value1&name2=value2 - * - * The semantic argument can be used to force form serialization in semantic order. - * If your form must be submitted with name/value pairs in semantic order then pass - * true for this arg, otherwise pass false (or nothing) to avoid the overhead for - * this logic (which can be significant for very large forms). - * - * @example var data = $("#myForm").formSerialize(); - * $.ajax('POST', "myscript.cgi", data); - * @desc Collect all the data from a form into a single string - * - * @name formSerialize - * @param semantic true if serialization must maintain strict semantic ordering of elements (slower) - * @type String - * @cat Plugins/Form - * @see formToArray - * @author jQuery Community - */ -jQuery.fn.formSerialize = function(semantic) { - //hand off to jQuery.param for proper encoding - return jQuery.param(this.formToArray(semantic)); -}; - - -/** - * Serializes all field elements in the jQuery object into a query string. - * This method will return a string in the format: name1=value1&name2=value2 - * - * The successful argument controls whether or not serialization is limited to - * 'successful' controls (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls). - * The default value of the successful argument is true. - * - * @example var data = $("input").formSerialize(); - * @desc Collect the data from all successful input elements into a query string - * - * @example var data = $(":radio").formSerialize(); - * @desc Collect the data from all successful radio input elements into a query string - * - * @example var data = $("#myForm :checkbox").formSerialize(); - * @desc Collect the data from all successful checkbox input elements in myForm into a query string - * - * @example var data = $("#myForm :checkbox").formSerialize(false); - * @desc Collect the data from all checkbox elements in myForm (even the unchecked ones) into a query string - * - * @example var data = $(":input").formSerialize(); - * @desc Collect the data from all successful input, select, textarea and button elements into a query string - * - * @name fieldSerialize - * @param successful true if only successful controls should be serialized (default is true) - * @type String - * @cat Plugins/Form - */ -jQuery.fn.fieldSerialize = function(successful) { - var a = []; - this.each(function() { - var n = this.name; - if (!n) return; - var v = jQuery.fieldValue(this, successful); - if (v && v.constructor == Array) { - for (var i=0,max=v.length; i < max; i++) - a.push({name: n, value: v[i]}); - } - else if (v !== null && typeof v != 'undefined') - a.push({name: this.name, value: v}); - }); - //hand off to jQuery.param for proper encoding - return jQuery.param(a); -}; - - -/** - * Returns the value of the field element in the jQuery object. If there is more than one field element - * in the jQuery object the value of the first successful one is returned. - * - * The successful argument controls whether or not the field element must be 'successful' - * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls). - * The default value of the successful argument is true. If this value is false then - * the value of the first field element in the jQuery object is returned. - * - * Note: If no valid value can be determined the return value will be undifined. - * - * Note: The fieldValue returned for a select-multiple element or for a checkbox input will - * always be an array if it is not undefined. - * - * - * @example var data = $("#myPasswordElement").formValue(); - * @desc Gets the current value of the myPasswordElement element - * - * @example var data = $("#myForm :input").formValue(); - * @desc Get the value of the first successful control in the jQuery object. - * - * @example var data = $("#myForm :checkbox").formValue(); - * @desc Get the array of values for the first set of successful checkbox controls in the jQuery object. - * - * @example var data = $("#mySingleSelect").formValue(); - * @desc Get the value of the select control - * - * @example var data = $("#myMultiSelect").formValue(); - * @desc Get the array of selected values for the select-multiple control - * - * @name fieldValue - * @param Boolean successful true if value returned must be for a successful controls (default is true) - * @type String or Array<String> - * @cat Plugins/Form - */ -jQuery.fn.fieldValue = function(successful) { - var cbVal, cbName; - - // loop until we find a value - for (var i=0, max=this.length; i < max; i++) { - var el = this[i]; - var v = jQuery.fieldValue(el, successful); - if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length)) - continue; - - // for checkboxes, consider multiple elements, for everything else just return first valid value - if (el.type != 'checkbox') return v; - - cbName = cbName || el.name; - if (cbName != el.name) // return if we hit a checkbox with a different name - return cbVal; - cbVal = cbVal || []; - cbVal.push(v); - } - return cbVal; -}; - -/** - * Returns the value of the field element. - * - * The successful argument controls whether or not the field element must be 'successful' - * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls). - * The default value of the successful argument is true. If the given element is not - * successful and the successful arg is not false then the returned value will be null. - * - * Note: The fieldValue returned for a select-multiple element will always be an array. - * - * @example var data = jQuery.fieldValue($("#myPasswordElement")[0]); - * @desc Gets the current value of the myPasswordElement element - * - * @name fieldValue - * @param Element el The DOM element for which the value will be returned - * @param Boolean successful true if value returned must be for a successful controls (default is true) - * @type String or Array<String> - * @cat Plugins/Form - */ -jQuery.fieldValue = function(el, successful) { - var n = el.name, t = el.type, tag = el.tagName.toLowerCase(); - if (typeof successful == 'undefined') successful = true; - - if (successful && ( !n || el.disabled || t == 'reset' || - (t == 'checkbox' || t == 'radio') && !el.checked || - (t == 'submit' || t == 'image') && el.form && el.form.clk != el || - tag == 'select' && el.selectedIndex == -1)) - return null; - - if (tag == 'select') { - var index = el.selectedIndex; - if (index < 0) return null; - var a = [], ops = el.options; - var one = (t == 'select-one'); - var max = (one ? index+1 : ops.length); - for(var i=(one ? index : 0); i < max; i++) { - var op = ops[i]; - if (op.selected) { - // extra pain for IE... - var v = jQuery.browser.msie && !(op.attributes['value'].specified) ? op.text : op.value; - if (one) return v; - a.push(v); - } - } - return a; - } - return el.value; -}; - - -/** - * Clears the form data. Takes the following actions on the form's input fields: - * - input text fields will have their 'value' property set to the empty string - * - select elements will have their 'selectedIndex' property set to -1 - * - checkbox and radio inputs will have their 'checked' property set to false - * - inputs of type submit, button, reset, and hidden will *not* be effected - * - button elements will *not* be effected - * - * @example $('form').clearForm(); - * @desc Clears all forms on the page. - * - * @name clearForm - * @type jQuery - * @cat Plugins/Form - * @see resetForm - */ -jQuery.fn.clearForm = function() { - return this.each(function() { - jQuery('input,select,textarea', this).clearFields(); - }); -}; - -/** - * Clears the selected form elements. Takes the following actions on the matched elements: - * - input text fields will have their 'value' property set to the empty string - * - select elements will have their 'selectedIndex' property set to -1 - * - checkbox and radio inputs will have their 'checked' property set to false - * - inputs of type submit, button, reset, and hidden will *not* be effected - * - button elements will *not* be effected - * - * @example $('.myInputs').clearFields(); - * @desc Clears all inputs with class myInputs - * - * @name clearFields - * @type jQuery - * @cat Plugins/Form - * @see clearForm - */ -jQuery.fn.clearFields = jQuery.fn.clearInputs = function() { - return this.each(function() { - var t = this.type, tag = this.tagName.toLowerCase(); - if (t == 'text' || t == 'password' || tag == 'textarea') - this.value = ''; - else if (t == 'checkbox' || t == 'radio') - this.checked = false; - else if (tag == 'select') - this.selectedIndex = -1; - }); -}; - - -/** - * Resets the form data. Causes all form elements to be reset to their original value. - * - * @example $('form').resetForm(); - * @desc Resets all forms on the page. - * - * @name resetForm - * @type jQuery - * @cat Plugins/Form - * @see clearForm - */ -jQuery.fn.resetForm = function() { - return this.each(function() { - // guard against an input with the name of 'reset' - // note that IE reports the reset function as an 'object' - if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType)) - this.reset(); - }); -}; diff --git a/lib/web/extjs/adapter/jquery/jquery.js b/lib/web/extjs/adapter/jquery/jquery.js deleted file mode 100644 index 709be4ac2ef3f811e934f37d219a0866bf2e4a7f..0000000000000000000000000000000000000000 --- a/lib/web/extjs/adapter/jquery/jquery.js +++ /dev/null @@ -1,2201 +0,0 @@ -/* prevent execution of jQuery if included more than once */ -if(typeof window.jQuery == "undefined") { -/* - * jQuery 1.1.1 - New Wave Javascript - * - * Copyright (c) 2007 John Resig (jquery.com) - * Dual licensed under the MIT (MIT-LICENSE.txt) - * and GPL (GPL-LICENSE.txt) licenses. - * - * $Date: 2007-01-22 00:27:54 -0500 (Mon, 22 Jan 2007) $ - * $Rev: 1153 $ - */ - -// Global undefined variable -window.undefined = window.undefined; -var jQuery = function(a,c) { - // If the context is global, return a new object - if ( window == this ) - return new jQuery(a,c); - - // Make sure that a selection was provided - a = a || document; - - // HANDLE: $(function) - // Shortcut for document ready - if ( jQuery.isFunction(a) ) - return new jQuery(document)[ jQuery.fn.ready ? "ready" : "load" ]( a ); - - // Handle HTML strings - if ( typeof a == "string" ) { - // HANDLE: $(html) -> $(array) - var m = /^[^<]*(<(.|\n)+>)[^>]*$/.exec(a); - if ( m ) - a = jQuery.clean( [ m[1] ] ); - - // HANDLE: $(expr) - else - return new jQuery( c ).find( a ); - } - - return this.setArray( - // HANDLE: $(array) - a.constructor == Array && a || - - // HANDLE: $(arraylike) - // Watch for when an array-like object is passed as the selector - (a.jquery || a.length && a != window && !a.nodeType && a[0] != undefined && a[0].nodeType) && jQuery.makeArray( a ) || - - // HANDLE: $(*) - [ a ] ); -}; - -// Map over the $ in case of overwrite -if ( typeof $ != "undefined" ) - jQuery._$ = $; - -// Map the jQuery namespace to the '$' one -var $ = jQuery; - -jQuery.fn = jQuery.prototype = { - jquery: "1.1.1", - - size: function() { - return this.length; - }, - - length: 0, - - get: function( num ) { - return num == undefined ? - - // Return a 'clean' array - jQuery.makeArray( this ) : - - // Return just the object - this[num]; - }, - pushStack: function( a ) { - var ret = jQuery(this); - ret.prevObject = this; - return ret.setArray( a ); - }, - setArray: function( a ) { - this.length = 0; - [].push.apply( this, a ); - return this; - }, - each: function( fn, args ) { - return jQuery.each( this, fn, args ); - }, - index: function( obj ) { - var pos = -1; - this.each(function(i){ - if ( this == obj ) pos = i; - }); - return pos; - }, - - attr: function( key, value, type ) { - var obj = key; - - // Look for the case where we're accessing a style value - if ( key.constructor == String ) - if ( value == undefined ) - return this.length && jQuery[ type || "attr" ]( this[0], key ) || undefined; - else { - obj = {}; - obj[ key ] = value; - } - - // Check to see if we're setting style values - return this.each(function(index){ - // Set all the styles - for ( var prop in obj ) - jQuery.attr( - type ? this.style : this, - prop, jQuery.prop(this, obj[prop], type, index, prop) - ); - }); - }, - - css: function( key, value ) { - return this.attr( key, value, "curCSS" ); - }, - - text: function(e) { - if ( typeof e == "string" ) - return this.empty().append( document.createTextNode( e ) ); - - var t = ""; - jQuery.each( e || this, function(){ - jQuery.each( this.childNodes, function(){ - if ( this.nodeType != 8 ) - t += this.nodeType != 1 ? - this.nodeValue : jQuery.fn.text([ this ]); - }); - }); - return t; - }, - - wrap: function() { - // The elements to wrap the target around - var a = jQuery.clean(arguments); - - // Wrap each of the matched elements individually - return this.each(function(){ - // Clone the structure that we're using to wrap - var b = a[0].cloneNode(true); - - // Insert it before the element to be wrapped - this.parentNode.insertBefore( b, this ); - - // Find the deepest point in the wrap structure - while ( b.firstChild ) - b = b.firstChild; - - // Move the matched element to within the wrap structure - b.appendChild( this ); - }); - }, - append: function() { - return this.domManip(arguments, true, 1, function(a){ - this.appendChild( a ); - }); - }, - prepend: function() { - return this.domManip(arguments, true, -1, function(a){ - this.insertBefore( a, this.firstChild ); - }); - }, - before: function() { - return this.domManip(arguments, false, 1, function(a){ - this.parentNode.insertBefore( a, this ); - }); - }, - after: function() { - return this.domManip(arguments, false, -1, function(a){ - this.parentNode.insertBefore( a, this.nextSibling ); - }); - }, - end: function() { - return this.prevObject || jQuery([]); - }, - find: function(t) { - return this.pushStack( jQuery.map( this, function(a){ - return jQuery.find(t,a); - }) ); - }, - clone: function(deep) { - return this.pushStack( jQuery.map( this, function(a){ - return a.cloneNode( deep != undefined ? deep : true ); - }) ); - }, - - filter: function(t) { - return this.pushStack( - jQuery.isFunction( t ) && - jQuery.grep(this, function(el, index){ - return t.apply(el, [index]) - }) || - - jQuery.multiFilter(t,this) ); - }, - - not: function(t) { - return this.pushStack( - t.constructor == String && - jQuery.multiFilter(t,this,true) || - - jQuery.grep(this,function(a){ - if ( t.constructor == Array || t.jquery ) - return jQuery.inArray( t, a ) < 0; - else - return a != t; - }) ); - }, - - add: function(t) { - return this.pushStack( jQuery.merge( - this.get(), - t.constructor == String ? - jQuery(t).get() : - t.length != undefined && !t.nodeName ? - t : [t] ) - ); - }, - is: function(expr) { - return expr ? jQuery.filter(expr,this).r.length > 0 : false; - }, - - val: function( val ) { - return val == undefined ? - ( this.length ? this[0].value : null ) : - this.attr( "value", val ); - }, - - html: function( val ) { - return val == undefined ? - ( this.length ? this[0].innerHTML : null ) : - this.empty().append( val ); - }, - domManip: function(args, table, dir, fn){ - var clone = this.length > 1; - var a = jQuery.clean(args); - if ( dir < 0 ) - a.reverse(); - - return this.each(function(){ - var obj = this; - - if ( table && jQuery.nodeName(this, "table") && jQuery.nodeName(a[0], "tr") ) - obj = this.getElementsByTagName("tbody")[0] || this.appendChild(document.createElement("tbody")); - - jQuery.each( a, function(){ - fn.apply( obj, [ clone ? this.cloneNode(true) : this ] ); - }); - - }); - } -}; - -jQuery.extend = jQuery.fn.extend = function() { - // copy reference to target object - var target = arguments[0], - a = 1; - - // extend jQuery itself if only one argument is passed - if ( arguments.length == 1 ) { - target = this; - a = 0; - } - var prop; - while (prop = arguments[a++]) - // Extend the base object - for ( var i in prop ) target[i] = prop[i]; - - // Return the modified object - return target; -}; - -jQuery.extend({ - noConflict: function() { - if ( jQuery._$ ) - $ = jQuery._$; - return jQuery; - }, - - // This may seem like some crazy code, but trust me when I say that this - // is the only cross-browser way to do this. --John - isFunction: function( fn ) { - return !!fn && typeof fn != "string" && - typeof fn[0] == "undefined" && /function/i.test( fn + "" ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase(); - }, - // args is for internal usage only - each: function( obj, fn, args ) { - if ( obj.length == undefined ) - for ( var i in obj ) - fn.apply( obj[i], args || [i, obj[i]] ); - else - for ( var i = 0, ol = obj.length; i < ol; i++ ) - if ( fn.apply( obj[i], args || [i, obj[i]] ) === false ) break; - return obj; - }, - - prop: function(elem, value, type, index, prop){ - // Handle executable functions - if ( jQuery.isFunction( value ) ) - return value.call( elem, [index] ); - - // exclude the following css properties to add px - var exclude = /z-?index|font-?weight|opacity|zoom|line-?height/i; - - // Handle passing in a number to a CSS property - if ( value.constructor == Number && type == "curCSS" && !exclude.test(prop) ) - return value + "px"; - - return value; - }, - - className: { - // internal only, use addClass("class") - add: function( elem, c ){ - jQuery.each( c.split(/\s+/), function(i, cur){ - if ( !jQuery.className.has( elem.className, cur ) ) - elem.className += ( elem.className ? " " : "" ) + cur; - }); - }, - - // internal only, use removeClass("class") - remove: function( elem, c ){ - elem.className = c ? - jQuery.grep( elem.className.split(/\s+/), function(cur){ - return !jQuery.className.has( c, cur ); - }).join(" ") : ""; - }, - - // internal only, use is(".class") - has: function( t, c ) { - t = t.className || t; - return t && new RegExp("(^|\\s)" + c + "(\\s|$)").test( t ); - } - }, - swap: function(e,o,f) { - for ( var i in o ) { - e.style["old"+i] = e.style[i]; - e.style[i] = o[i]; - } - f.apply( e, [] ); - for ( var i in o ) - e.style[i] = e.style["old"+i]; - }, - - css: function(e,p) { - if ( p == "height" || p == "width" ) { - var old = {}, oHeight, oWidth, d = ["Top","Bottom","Right","Left"]; - - jQuery.each( d, function(){ - old["padding" + this] = 0; - old["border" + this + "Width"] = 0; - }); - - jQuery.swap( e, old, function() { - if (jQuery.css(e,"display") != "none") { - oHeight = e.offsetHeight; - oWidth = e.offsetWidth; - } else { - e = jQuery(e.cloneNode(true)) - .find(":radio").removeAttr("checked").end() - .css({ - visibility: "hidden", position: "absolute", display: "block", right: "0", left: "0" - }).appendTo(e.parentNode)[0]; - - var parPos = jQuery.css(e.parentNode,"position"); - if ( parPos == "" || parPos == "static" ) - e.parentNode.style.position = "relative"; - - oHeight = e.clientHeight; - oWidth = e.clientWidth; - - if ( parPos == "" || parPos == "static" ) - e.parentNode.style.position = "static"; - - e.parentNode.removeChild(e); - } - }); - - return p == "height" ? oHeight : oWidth; - } - - return jQuery.curCSS( e, p ); - }, - - curCSS: function(elem, prop, force) { - var ret; - - if (prop == "opacity" && jQuery.browser.msie) - return jQuery.attr(elem.style, "opacity"); - - if (prop == "float" || prop == "cssFloat") - prop = jQuery.browser.msie ? "styleFloat" : "cssFloat"; - - if (!force && elem.style[prop]) - ret = elem.style[prop]; - - else if (document.defaultView && document.defaultView.getComputedStyle) { - - if (prop == "cssFloat" || prop == "styleFloat") - prop = "float"; - - prop = prop.replace(/([A-Z])/g,"-$1").toLowerCase(); - var cur = document.defaultView.getComputedStyle(elem, null); - - if ( cur ) - ret = cur.getPropertyValue(prop); - else if ( prop == "display" ) - ret = "none"; - else - jQuery.swap(elem, { display: "block" }, function() { - var c = document.defaultView.getComputedStyle(this, ""); - ret = c && c.getPropertyValue(prop) || ""; - }); - - } else if (elem.currentStyle) { - - var newProp = prop.replace(/\-(\w)/g,function(m,c){return c.toUpperCase();}); - ret = elem.currentStyle[prop] || elem.currentStyle[newProp]; - - } - - return ret; - }, - - clean: function(a) { - var r = []; - - jQuery.each( a, function(i,arg){ - if ( !arg ) return; - - if ( arg.constructor == Number ) - arg = arg.toString(); - - // Convert html string into DOM nodes - if ( typeof arg == "string" ) { - // Trim whitespace, otherwise indexOf won't work as expected - var s = jQuery.trim(arg), div = document.createElement("div"), tb = []; - - var wrap = - // option or optgroup - !s.indexOf("<opt") && - [1, "<select>", "</select>"] || - - (!s.indexOf("<thead") || !s.indexOf("<tbody") || !s.indexOf("<tfoot")) && - [1, "<table>", "</table>"] || - - !s.indexOf("<tr") && - [2, "<table><tbody>", "</tbody></table>"] || - - // <thead> matched above - (!s.indexOf("<td") || !s.indexOf("<th")) && - [3, "<table><tbody><tr>", "</tr></tbody></table>"] || - - [0,"",""]; - - // Go to html and back, then peel off extra wrappers - div.innerHTML = wrap[1] + s + wrap[2]; - - // Move to the right depth - while ( wrap[0]-- ) - div = div.firstChild; - - // Remove IE's autoinserted <tbody> from table fragments - if ( jQuery.browser.msie ) { - - // String was a <table>, *may* have spurious <tbody> - if ( !s.indexOf("<table") && s.indexOf("<tbody") < 0 ) - tb = div.firstChild && div.firstChild.childNodes; - - // String was a bare <thead> or <tfoot> - else if ( wrap[1] == "<table>" && s.indexOf("<tbody") < 0 ) - tb = div.childNodes; - - for ( var n = tb.length-1; n >= 0 ; --n ) - if ( jQuery.nodeName(tb[n], "tbody") && !tb[n].childNodes.length ) - tb[n].parentNode.removeChild(tb[n]); - - } - - arg = div.childNodes; - } - - if ( arg.length === 0 ) - return; - - if ( arg[0] == undefined ) - r.push( arg ); - else - r = jQuery.merge( r, arg ); - - }); - - return r; - }, - - attr: function(elem, name, value){ - var fix = { - "for": "htmlFor", - "class": "className", - "float": jQuery.browser.msie ? "styleFloat" : "cssFloat", - cssFloat: jQuery.browser.msie ? "styleFloat" : "cssFloat", - innerHTML: "innerHTML", - className: "className", - value: "value", - disabled: "disabled", - checked: "checked", - readonly: "readOnly", - selected: "selected" - }; - - // IE actually uses filters for opacity ... elem is actually elem.style - if ( name == "opacity" && jQuery.browser.msie && value != undefined ) { - // IE has trouble with opacity if it does not have layout - // Force it by setting the zoom level - elem.zoom = 1; - - // Set the alpha filter to set the opacity - return elem.filter = elem.filter.replace(/alpha\([^\)]*\)/gi,"") + - ( value == 1 ? "" : "alpha(opacity=" + value * 100 + ")" ); - - } else if ( name == "opacity" && jQuery.browser.msie ) - return elem.filter ? - parseFloat( elem.filter.match(/alpha\(opacity=(.*)\)/)[1] ) / 100 : 1; - - // Mozilla doesn't play well with opacity 1 - if ( name == "opacity" && jQuery.browser.mozilla && value == 1 ) - value = 0.9999; - - // Certain attributes only work when accessed via the old DOM 0 way - if ( fix[name] ) { - if ( value != undefined ) elem[fix[name]] = value; - return elem[fix[name]]; - - } else if ( value == undefined && jQuery.browser.msie && jQuery.nodeName(elem, "form") && (name == "action" || name == "method") ) - return elem.getAttributeNode(name).nodeValue; - - // IE elem.getAttribute passes even for style - else if ( elem.tagName ) { - if ( value != undefined ) elem.setAttribute( name, value ); - return elem.getAttribute( name ); - - } else { - name = name.replace(/-([a-z])/ig,function(z,b){return b.toUpperCase();}); - if ( value != undefined ) elem[name] = value; - return elem[name]; - } - }, - trim: function(t){ - return t.replace(/^\s+|\s+$/g, ""); - }, - - makeArray: function( a ) { - var r = []; - - if ( a.constructor != Array ) - for ( var i = 0, al = a.length; i < al; i++ ) - r.push( a[i] ); - else - r = a.slice( 0 ); - - return r; - }, - - inArray: function( b, a ) { - for ( var i = 0, al = a.length; i < al; i++ ) - if ( a[i] == b ) - return i; - return -1; - }, - merge: function(first, second) { - var r = [].slice.call( first, 0 ); - - // Now check for duplicates between the two arrays - // and only add the unique items - for ( var i = 0, sl = second.length; i < sl; i++ ) - // Check for duplicates - if ( jQuery.inArray( second[i], r ) == -1 ) - // The item is unique, add it - first.push( second[i] ); - - return first; - }, - grep: function(elems, fn, inv) { - // If a string is passed in for the function, make a function - // for it (a handy shortcut) - if ( typeof fn == "string" ) - fn = new Function("a","i","return " + fn); - - var result = []; - - // Go through the array, only saving the items - // that pass the validator function - for ( var i = 0, el = elems.length; i < el; i++ ) - if ( !inv && fn(elems[i],i) || inv && !fn(elems[i],i) ) - result.push( elems[i] ); - - return result; - }, - map: function(elems, fn) { - // If a string is passed in for the function, make a function - // for it (a handy shortcut) - if ( typeof fn == "string" ) - fn = new Function("a","return " + fn); - - var result = [], r = []; - - // Go through the array, translating each of the items to their - // new value (or values). - for ( var i = 0, el = elems.length; i < el; i++ ) { - var val = fn(elems[i],i); - - if ( val !== null && val != undefined ) { - if ( val.constructor != Array ) val = [val]; - result = result.concat( val ); - } - } - - var r = result.length ? [ result[0] ] : []; - - check: for ( var i = 1, rl = result.length; i < rl; i++ ) { - for ( var j = 0; j < i; j++ ) - if ( result[i] == r[j] ) - continue check; - - r.push( result[i] ); - } - - return r; - } -}); - -/* - * Whether the W3C compliant box model is being used. - * - * @property - * @name $.boxModel - * @type Boolean - * @cat JavaScript - */ -new function() { - var b = navigator.userAgent.toLowerCase(); - - // Figure out what browser is being used - jQuery.browser = { - safari: /webkit/.test(b), - opera: /opera/.test(b), - msie: /msie/.test(b) && !/opera/.test(b), - mozilla: /mozilla/.test(b) && !/(compatible|webkit)/.test(b) - }; - - // Check to see if the W3C box model is being used - jQuery.boxModel = !jQuery.browser.msie || document.compatMode == "CSS1Compat"; -}; - -jQuery.each({ - parent: "a.parentNode", - parents: "jQuery.parents(a)", - next: "jQuery.nth(a,2,'nextSibling')", - prev: "jQuery.nth(a,2,'previousSibling')", - siblings: "jQuery.sibling(a.parentNode.firstChild,a)", - children: "jQuery.sibling(a.firstChild)" -}, function(i,n){ - jQuery.fn[ i ] = function(a) { - var ret = jQuery.map(this,n); - if ( a && typeof a == "string" ) - ret = jQuery.multiFilter(a,ret); - return this.pushStack( ret ); - }; -}); - -jQuery.each({ - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after" -}, function(i,n){ - jQuery.fn[ i ] = function(){ - var a = arguments; - return this.each(function(){ - for ( var j = 0, al = a.length; j < al; j++ ) - jQuery(a[j])[n]( this ); - }); - }; -}); - -jQuery.each( { - removeAttr: function( key ) { - jQuery.attr( this, key, "" ); - this.removeAttribute( key ); - }, - addClass: function(c){ - jQuery.className.add(this,c); - }, - removeClass: function(c){ - jQuery.className.remove(this,c); - }, - toggleClass: function( c ){ - jQuery.className[ jQuery.className.has(this,c) ? "remove" : "add" ](this, c); - }, - remove: function(a){ - if ( !a || jQuery.filter( a, [this] ).r.length ) - this.parentNode.removeChild( this ); - }, - empty: function() { - while ( this.firstChild ) - this.removeChild( this.firstChild ); - } -}, function(i,n){ - jQuery.fn[ i ] = function() { - return this.each( n, arguments ); - }; -}); - -jQuery.each( [ "eq", "lt", "gt", "contains" ], function(i,n){ - jQuery.fn[ n ] = function(num,fn) { - return this.filter( ":" + n + "(" + num + ")", fn ); - }; -}); - -jQuery.each( [ "height", "width" ], function(i,n){ - jQuery.fn[ n ] = function(h) { - return h == undefined ? - ( this.length ? jQuery.css( this[0], n ) : null ) : - this.css( n, h.constructor == String ? h : h + "px" ); - }; -}); -jQuery.extend({ - expr: { - "": "m[2]=='*'||jQuery.nodeName(a,m[2])", - "#": "a.getAttribute('id')==m[2]", - ":": { - // Position Checks - lt: "i<m[3]-0", - gt: "i>m[3]-0", - nth: "m[3]-0==i", - eq: "m[3]-0==i", - first: "i==0", - last: "i==r.length-1", - even: "i%2==0", - odd: "i%2", - - // Child Checks - "nth-child": "jQuery.nth(a.parentNode.firstChild,m[3],'nextSibling',a)==a", - "first-child": "jQuery.nth(a.parentNode.firstChild,1,'nextSibling')==a", - "last-child": "jQuery.nth(a.parentNode.lastChild,1,'previousSibling')==a", - "only-child": "jQuery.sibling(a.parentNode.firstChild).length==1", - - // Parent Checks - parent: "a.firstChild", - empty: "!a.firstChild", - - // Text Check - contains: "jQuery.fn.text.apply([a]).indexOf(m[3])>=0", - - // Visibility - visible: 'a.type!="hidden"&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden"', - hidden: 'a.type=="hidden"||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden"', - - // Form attributes - enabled: "!a.disabled", - disabled: "a.disabled", - checked: "a.checked", - selected: "a.selected||jQuery.attr(a,'selected')", - - // Form elements - text: "a.type=='text'", - radio: "a.type=='radio'", - checkbox: "a.type=='checkbox'", - file: "a.type=='file'", - password: "a.type=='password'", - submit: "a.type=='submit'", - image: "a.type=='image'", - reset: "a.type=='reset'", - button: 'a.type=="button"||jQuery.nodeName(a,"button")', - input: "/input|select|textarea|button/i.test(a.nodeName)" - }, - ".": "jQuery.className.has(a,m[2])", - "@": { - "=": "z==m[4]", - "!=": "z!=m[4]", - "^=": "z&&!z.indexOf(m[4])", - "$=": "z&&z.substr(z.length - m[4].length,m[4].length)==m[4]", - "*=": "z&&z.indexOf(m[4])>=0", - "": "z", - _resort: function(m){ - return ["", m[1], m[3], m[2], m[5]]; - }, - _prefix: "z=a[m[3]]||jQuery.attr(a,m[3]);" - }, - "[": "jQuery.find(m[2],a).length" - }, - - // The regular expressions that power the parsing engine - parse: [ - // Match: [@value='test'], [@foo] - /^\[ *(@)([a-z0-9_-]*) *([!*$^=]*) *('?"?)(.*?)\4 *\]/i, - - // Match: [div], [div p] - /^(\[)\s*(.*?(\[.*?\])?[^[]*?)\s*\]/, - - // Match: :contains('foo') - /^(:)([a-z0-9_-]*)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/i, - - // Match: :even, :last-chlid - /^([:.#]*)([a-z0-9_*-]*)/i - ], - - token: [ - /^(\/?\.\.)/, "a.parentNode", - /^(>|\/)/, "jQuery.sibling(a.firstChild)", - /^(\+)/, "jQuery.nth(a,2,'nextSibling')", - /^(~)/, function(a){ - var s = jQuery.sibling(a.parentNode.firstChild); - return s.slice(0, jQuery.inArray(a,s)); - } - ], - - multiFilter: function( expr, elems, not ) { - var old, cur = []; - - while ( expr && expr != old ) { - old = expr; - var f = jQuery.filter( expr, elems, not ); - expr = f.t.replace(/^\s*,\s*/, "" ); - cur = not ? elems = f.r : jQuery.merge( cur, f.r ); - } - - return cur; - }, - find: function( t, context ) { - // Quickly handle non-string expressions - if ( typeof t != "string" ) - return [ t ]; - - // Make sure that the context is a DOM Element - if ( context && !context.nodeType ) - context = null; - - // Set the correct context (if none is provided) - context = context || document; - - // Handle the common XPath // expression - if ( !t.indexOf("//") ) { - context = context.documentElement; - t = t.substr(2,t.length); - - // And the / root expression - } else if ( !t.indexOf("/") ) { - context = context.documentElement; - t = t.substr(1,t.length); - if ( t.indexOf("/") >= 1 ) - t = t.substr(t.indexOf("/"),t.length); - } - - // Initialize the search - var ret = [context], done = [], last = null; - - // Continue while a selector expression exists, and while - // we're no longer looping upon ourselves - while ( t && last != t ) { - var r = []; - last = t; - - t = jQuery.trim(t).replace( /^\/\//i, "" ); - - var foundToken = false; - - // An attempt at speeding up child selectors that - // point to a specific element tag - var re = /^[\/>]\s*([a-z0-9*-]+)/i; - var m = re.exec(t); - - if ( m ) { - // Perform our own iteration and filter - jQuery.each( ret, function(){ - for ( var c = this.firstChild; c; c = c.nextSibling ) - if ( c.nodeType == 1 && ( jQuery.nodeName(c, m[1]) || m[1] == "*" ) ) - r.push( c ); - }); - - ret = r; - t = t.replace( re, "" ); - if ( t.indexOf(" ") == 0 ) continue; - foundToken = true; - } else { - // Look for pre-defined expression tokens - for ( var i = 0; i < jQuery.token.length; i += 2 ) { - // Attempt to match each, individual, token in - // the specified order - var re = jQuery.token[i]; - var m = re.exec(t); - - // If the token match was found - if ( m ) { - // Map it against the token's handler - r = ret = jQuery.map( ret, jQuery.isFunction( jQuery.token[i+1] ) ? - jQuery.token[i+1] : - function(a){ return eval(jQuery.token[i+1]); }); - - // And remove the token - t = jQuery.trim( t.replace( re, "" ) ); - foundToken = true; - break; - } - } - } - - // See if there's still an expression, and that we haven't already - // matched a token - if ( t && !foundToken ) { - // Handle multiple expressions - if ( !t.indexOf(",") ) { - // Clean the result set - if ( ret[0] == context ) ret.shift(); - - // Merge the result sets - jQuery.merge( done, ret ); - - // Reset the context - r = ret = [context]; - - // Touch up the selector string - t = " " + t.substr(1,t.length); - - } else { - // Optomize for the case nodeName#idName - var re2 = /^([a-z0-9_-]+)(#)([a-z0-9\\*_-]*)/i; - var m = re2.exec(t); - - // Re-organize the results, so that they're consistent - if ( m ) { - m = [ 0, m[2], m[3], m[1] ]; - - } else { - // Otherwise, do a traditional filter check for - // ID, class, and element selectors - re2 = /^([#.]?)([a-z0-9\\*_-]*)/i; - m = re2.exec(t); - } - - // Try to do a global search by ID, where we can - if ( m[1] == "#" && ret[ret.length-1].getElementById ) { - // Optimization for HTML document case - var oid = ret[ret.length-1].getElementById(m[2]); - - // Do a quick check for node name (where applicable) so - // that div#foo searches will be really fast - ret = r = oid && - (!m[3] || jQuery.nodeName(oid, m[3])) ? [oid] : []; - - } else { - // Pre-compile a regular expression to handle class searches - if ( m[1] == "." ) - var rec = new RegExp("(^|\\s)" + m[2] + "(\\s|$)"); - - // We need to find all descendant elements, it is more - // efficient to use getAll() when we are already further down - // the tree - we try to recognize that here - jQuery.each( ret, function(){ - // Grab the tag name being searched for - var tag = m[1] != "" || m[0] == "" ? "*" : m[2]; - - // Handle IE7 being really dumb about <object>s - if ( jQuery.nodeName(this, "object") && tag == "*" ) - tag = "param"; - - jQuery.merge( r, - m[1] != "" && ret.length != 1 ? - jQuery.getAll( this, [], m[1], m[2], rec ) : - this.getElementsByTagName( tag ) - ); - }); - - // It's faster to filter by class and be done with it - if ( m[1] == "." && ret.length == 1 ) - r = jQuery.grep( r, function(e) { - return rec.test(e.className); - }); - - // Same with ID filtering - if ( m[1] == "#" && ret.length == 1 ) { - // Remember, then wipe out, the result set - var tmp = r; - r = []; - - // Then try to find the element with the ID - jQuery.each( tmp, function(){ - if ( this.getAttribute("id") == m[2] ) { - r = [ this ]; - return false; - } - }); - } - - ret = r; - } - - t = t.replace( re2, "" ); - } - - } - - // If a selector string still exists - if ( t ) { - // Attempt to filter it - var val = jQuery.filter(t,r); - ret = r = val.r; - t = jQuery.trim(val.t); - } - } - - // Remove the root context - if ( ret && ret[0] == context ) ret.shift(); - - // And combine the results - jQuery.merge( done, ret ); - - return done; - }, - - filter: function(t,r,not) { - // Look for common filter expressions - while ( t && /^[a-z[({<*:.#]/i.test(t) ) { - - var p = jQuery.parse, m; - - jQuery.each( p, function(i,re){ - - // Look for, and replace, string-like sequences - // and finally build a regexp out of it - m = re.exec( t ); - - if ( m ) { - // Remove what we just matched - t = t.substring( m[0].length ); - - // Re-organize the first match - if ( jQuery.expr[ m[1] ]._resort ) - m = jQuery.expr[ m[1] ]._resort( m ); - - return false; - } - }); - - // :not() is a special case that can be optimized by - // keeping it out of the expression list - if ( m[1] == ":" && m[2] == "not" ) - r = jQuery.filter(m[3], r, true).r; - - // Handle classes as a special case (this will help to - // improve the speed, as the regexp will only be compiled once) - else if ( m[1] == "." ) { - - var re = new RegExp("(^|\\s)" + m[2] + "(\\s|$)"); - r = jQuery.grep( r, function(e){ - return re.test(e.className || ""); - }, not); - - // Otherwise, find the expression to execute - } else { - var f = jQuery.expr[m[1]]; - if ( typeof f != "string" ) - f = jQuery.expr[m[1]][m[2]]; - - // Build a custom macro to enclose it - eval("f = function(a,i){" + - ( jQuery.expr[ m[1] ]._prefix || "" ) + - "return " + f + "}"); - - // Execute it against the current filter - r = jQuery.grep( r, f, not ); - } - } - - // Return an array of filtered elements (r) - // and the modified expression string (t) - return { r: r, t: t }; - }, - - getAll: function( o, r, token, name, re ) { - for ( var s = o.firstChild; s; s = s.nextSibling ) - if ( s.nodeType == 1 ) { - var add = true; - - if ( token == "." ) - add = s.className && re.test(s.className); - else if ( token == "#" ) - add = s.getAttribute("id") == name; - - if ( add ) - r.push( s ); - - if ( token == "#" && r.length ) break; - - if ( s.firstChild ) - jQuery.getAll( s, r, token, name, re ); - } - - return r; - }, - parents: function( elem ){ - var matched = []; - var cur = elem.parentNode; - while ( cur && cur != document ) { - matched.push( cur ); - cur = cur.parentNode; - } - return matched; - }, - nth: function(cur,result,dir,elem){ - result = result || 1; - var num = 0; - for ( ; cur; cur = cur[dir] ) { - if ( cur.nodeType == 1 ) num++; - if ( num == result || result == "even" && num % 2 == 0 && num > 1 && cur == elem || - result == "odd" && num % 2 == 1 && cur == elem ) return cur; - } - }, - sibling: function( n, elem ) { - var r = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType == 1 && (!elem || n != elem) ) - r.push( n ); - } - - return r; - } -}); -/* - * A number of helper functions used for managing events. - * Many of the ideas behind this code orignated from - * Dean Edwards' addEvent library. - */ -jQuery.event = { - - // Bind an event to an element - // Original by Dean Edwards - add: function(element, type, handler, data) { - // For whatever reason, IE has trouble passing the window object - // around, causing it to be cloned in the process - if ( jQuery.browser.msie && element.setInterval != undefined ) - element = window; - - // if data is passed, bind to handler - if( data ) - handler.data = data; - - // Make sure that the function being executed has a unique ID - if ( !handler.guid ) - handler.guid = this.guid++; - - // Init the element's event structure - if (!element.events) - element.events = {}; - - // Get the current list of functions bound to this event - var handlers = element.events[type]; - - // If it hasn't been initialized yet - if (!handlers) { - // Init the event handler queue - handlers = element.events[type] = {}; - - // Remember an existing handler, if it's already there - if (element["on" + type]) - handlers[0] = element["on" + type]; - } - - // Add the function to the element's handler list - handlers[handler.guid] = handler; - - // And bind the global event handler to the element - element["on" + type] = this.handle; - - // Remember the function in a global list (for triggering) - if (!this.global[type]) - this.global[type] = []; - this.global[type].push( element ); - }, - - guid: 1, - global: {}, - - // Detach an event or set of events from an element - remove: function(element, type, handler) { - if (element.events) - if ( type && type.type ) - delete element.events[ type.type ][ type.handler.guid ]; - else if (type && element.events[type]) - if ( handler ) - delete element.events[type][handler.guid]; - else - for ( var i in element.events[type] ) - delete element.events[type][i]; - else - for ( var j in element.events ) - this.remove( element, j ); - }, - - trigger: function(type,data,element) { - // Clone the incoming data, if any - data = jQuery.makeArray(data || []); - - // Handle a global trigger - if ( !element ) - jQuery.each( this.global[type] || [], function(){ - jQuery.event.trigger( type, data, this ); - }); - - // Handle triggering a single element - else { - var handler = element["on" + type ], val, - fn = jQuery.isFunction( element[ type ] ); - - if ( handler ) { - // Pass along a fake event - data.unshift( this.fix({ type: type, target: element }) ); - - // Trigger the event - if ( (val = handler.apply( element, data )) !== false ) - this.triggered = true; - } - - if ( fn && val !== false ) - element[ type ](); - - this.triggered = false; - } - }, - - handle: function(event) { - // Handle the second event of a trigger and when - // an event is called after a page has unloaded - if ( typeof jQuery == "undefined" || jQuery.event.triggered ) return; - - // Empty object is for triggered events with no data - event = jQuery.event.fix( event || window.event || {} ); - - // returned undefined or false - var returnValue; - - var c = this.events[event.type]; - - var args = [].slice.call( arguments, 1 ); - args.unshift( event ); - - for ( var j in c ) { - // Pass in a reference to the handler function itself - // So that we can later remove it - args[0].handler = c[j]; - args[0].data = c[j].data; - - if ( c[j].apply( this, args ) === false ) { - event.preventDefault(); - event.stopPropagation(); - returnValue = false; - } - } - - // Clean up added properties in IE to prevent memory leak - if (jQuery.browser.msie) event.target = event.preventDefault = event.stopPropagation = event.handler = event.data = null; - - return returnValue; - }, - - fix: function(event) { - // Fix target property, if necessary - if ( !event.target && event.srcElement ) - event.target = event.srcElement; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == undefined && event.clientX != undefined ) { - var e = document.documentElement, b = document.body; - event.pageX = event.clientX + (e.scrollLeft || b.scrollLeft); - event.pageY = event.clientY + (e.scrollTop || b.scrollTop); - } - - // check if target is a textnode (safari) - if (jQuery.browser.safari && event.target.nodeType == 3) { - // store a copy of the original event object - // and clone because target is read only - var originalEvent = event; - event = jQuery.extend({}, originalEvent); - - // get parentnode from textnode - event.target = originalEvent.target.parentNode; - - // add preventDefault and stopPropagation since - // they will not work on the clone - event.preventDefault = function() { - return originalEvent.preventDefault(); - }; - event.stopPropagation = function() { - return originalEvent.stopPropagation(); - }; - } - - // fix preventDefault and stopPropagation - if (!event.preventDefault) - event.preventDefault = function() { - this.returnValue = false; - }; - - if (!event.stopPropagation) - event.stopPropagation = function() { - this.cancelBubble = true; - }; - - return event; - } -}; - -jQuery.fn.extend({ - bind: function( type, data, fn ) { - return this.each(function(){ - jQuery.event.add( this, type, fn || data, data ); - }); - }, - one: function( type, data, fn ) { - return this.each(function(){ - jQuery.event.add( this, type, function(event) { - jQuery(this).unbind(event); - return (fn || data).apply( this, arguments); - }, data); - }); - }, - unbind: function( type, fn ) { - return this.each(function(){ - jQuery.event.remove( this, type, fn ); - }); - }, - trigger: function( type, data ) { - return this.each(function(){ - jQuery.event.trigger( type, data, this ); - }); - }, - toggle: function() { - // Save reference to arguments for access in closure - var a = arguments; - - return this.click(function(e) { - // Figure out which function to execute - this.lastToggle = this.lastToggle == 0 ? 1 : 0; - - // Make sure that clicks stop - e.preventDefault(); - - // and execute the function - return a[this.lastToggle].apply( this, [e] ) || false; - }); - }, - hover: function(f,g) { - - // A private function for handling mouse 'hovering' - function handleHover(e) { - // Check if mouse(over|out) are still within the same parent element - var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget; - - // Traverse up the tree - while ( p && p != this ) try { p = p.parentNode } catch(e) { p = this; }; - - // If we actually just moused on to a sub-element, ignore it - if ( p == this ) return false; - - // Execute the right function - return (e.type == "mouseover" ? f : g).apply(this, [e]); - } - - // Bind the function to the two event listeners - return this.mouseover(handleHover).mouseout(handleHover); - }, - ready: function(f) { - // If the DOM is already ready - if ( jQuery.isReady ) - // Execute the function immediately - f.apply( document, [jQuery] ); - - // Otherwise, remember the function for later - else { - // Add the function to the wait list - jQuery.readyList.push( function() { return f.apply(this, [jQuery]) } ); - } - - return this; - } -}); - -jQuery.extend({ - /* - * All the code that makes DOM Ready work nicely. - */ - isReady: false, - readyList: [], - - // Handle when the DOM is ready - ready: function() { - // Make sure that the DOM is not already loaded - if ( !jQuery.isReady ) { - // Remember that the DOM is ready - jQuery.isReady = true; - - // If there are functions bound, to execute - if ( jQuery.readyList ) { - // Execute all of them - jQuery.each( jQuery.readyList, function(){ - this.apply( document ); - }); - - // Reset the list of functions - jQuery.readyList = null; - } - // Remove event lisenter to avoid memory leak - if ( jQuery.browser.mozilla || jQuery.browser.opera ) - document.removeEventListener( "DOMContentLoaded", jQuery.ready, false ); - } - } -}); - -new function(){ - - jQuery.each( ("blur,focus,load,resize,scroll,unload,click,dblclick," + - "mousedown,mouseup,mousemove,mouseover,mouseout,change,select," + - "submit,keydown,keypress,keyup,error").split(","), function(i,o){ - - // Handle event binding - jQuery.fn[o] = function(f){ - return f ? this.bind(o, f) : this.trigger(o); - }; - - }); - - // If Mozilla is used - if ( jQuery.browser.mozilla || jQuery.browser.opera ) - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", jQuery.ready, false ); - - // If IE is used, use the excellent hack by Matthias Miller - // http://www.outofhanwell.com/blog/index.php?title=the_window_onload_problem_revisited - else if ( jQuery.browser.msie ) { - - // Only works if you document.write() it - document.write("<scr" + "ipt id=__ie_init defer=true " + - "src=//:><\/script>"); - - // Use the defer script hack - var script = document.getElementById("__ie_init"); - - // script does not exist if jQuery is loaded dynamically - if ( script ) - script.onreadystatechange = function() { - if ( this.readyState != "complete" ) return; - this.parentNode.removeChild( this ); - jQuery.ready(); - }; - - // Clear from memory - script = null; - - // If Safari is used - } else if ( jQuery.browser.safari ) - // Continually check to see if the document.readyState is valid - jQuery.safariTimer = setInterval(function(){ - // loaded and complete are both valid states - if ( document.readyState == "loaded" || - document.readyState == "complete" ) { - - // If either one are found, remove the timer - clearInterval( jQuery.safariTimer ); - jQuery.safariTimer = null; - - // and execute any waiting functions - jQuery.ready(); - } - }, 10); - - // A fallback to window.onload, that will always work - jQuery.event.add( window, "load", jQuery.ready ); - -}; - -// Clean up after IE to avoid memory leaks -if (jQuery.browser.msie) - jQuery(window).one("unload", function() { - var global = jQuery.event.global; - for ( var type in global ) { - var els = global[type], i = els.length; - if ( i && type != 'unload' ) - do - jQuery.event.remove(els[i-1], type); - while (--i); - } - }); -jQuery.fn.extend({ - - show: function(speed,callback){ - var hidden = this.filter(":hidden"); - speed ? - hidden.animate({ - height: "show", width: "show", opacity: "show" - }, speed, callback) : - - hidden.each(function(){ - this.style.display = this.oldblock ? this.oldblock : ""; - if ( jQuery.css(this,"display") == "none" ) - this.style.display = "block"; - }); - return this; - }, - - hide: function(speed,callback){ - var visible = this.filter(":visible"); - speed ? - visible.animate({ - height: "hide", width: "hide", opacity: "hide" - }, speed, callback) : - - visible.each(function(){ - this.oldblock = this.oldblock || jQuery.css(this,"display"); - if ( this.oldblock == "none" ) - this.oldblock = "block"; - this.style.display = "none"; - }); - return this; - }, - - // Save the old toggle function - _toggle: jQuery.fn.toggle, - toggle: function( fn, fn2 ){ - var args = arguments; - return jQuery.isFunction(fn) && jQuery.isFunction(fn2) ? - this._toggle( fn, fn2 ) : - this.each(function(){ - jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ] - .apply( jQuery(this), args ); - }); - }, - slideDown: function(speed,callback){ - return this.animate({height: "show"}, speed, callback); - }, - slideUp: function(speed,callback){ - return this.animate({height: "hide"}, speed, callback); - }, - slideToggle: function(speed, callback){ - return this.each(function(){ - var state = jQuery(this).is(":hidden") ? "show" : "hide"; - jQuery(this).animate({height: state}, speed, callback); - }); - }, - fadeIn: function(speed, callback){ - return this.animate({opacity: "show"}, speed, callback); - }, - fadeOut: function(speed, callback){ - return this.animate({opacity: "hide"}, speed, callback); - }, - fadeTo: function(speed,to,callback){ - return this.animate({opacity: to}, speed, callback); - }, - animate: function( prop, speed, easing, callback ) { - return this.queue(function(){ - - this.curAnim = jQuery.extend({}, prop); - var opt = jQuery.speed(speed, easing, callback); - - for ( var p in prop ) { - var e = new jQuery.fx( this, opt, p ); - if ( prop[p].constructor == Number ) - e.custom( e.cur(), prop[p] ); - else - e[ prop[p] ]( prop ); - } - - }); - }, - queue: function(type,fn){ - if ( !fn ) { - fn = type; - type = "fx"; - } - - return this.each(function(){ - if ( !this.queue ) - this.queue = {}; - - if ( !this.queue[type] ) - this.queue[type] = []; - - this.queue[type].push( fn ); - - if ( this.queue[type].length == 1 ) - fn.apply(this); - }); - } - -}); - -jQuery.extend({ - - speed: function(speed, easing, fn) { - var opt = speed && speed.constructor == Object ? speed : { - complete: fn || !fn && easing || - jQuery.isFunction( speed ) && speed, - duration: speed, - easing: fn && easing || easing && easing.constructor != Function && easing - }; - - opt.duration = (opt.duration && opt.duration.constructor == Number ? - opt.duration : - { slow: 600, fast: 200 }[opt.duration]) || 400; - - // Queueing - opt.old = opt.complete; - opt.complete = function(){ - jQuery.dequeue(this, "fx"); - if ( jQuery.isFunction( opt.old ) ) - opt.old.apply( this ); - }; - - return opt; - }, - - easing: {}, - - queue: {}, - - dequeue: function(elem,type){ - type = type || "fx"; - - if ( elem.queue && elem.queue[type] ) { - // Remove self - elem.queue[type].shift(); - - // Get next function - var f = elem.queue[type][0]; - - if ( f ) f.apply( elem ); - } - }, - - /* - * I originally wrote fx() as a clone of moo.fx and in the process - * of making it small in size the code became illegible to sane - * people. You've been warned. - */ - - fx: function( elem, options, prop ){ - - var z = this; - - // The styles - var y = elem.style; - - // Store display property - var oldDisplay = jQuery.css(elem, "display"); - - // Set display property to block for animation - y.display = "block"; - - // Make sure that nothing sneaks out - y.overflow = "hidden"; - - // Simple function for setting a style value - z.a = function(){ - if ( options.step ) - options.step.apply( elem, [ z.now ] ); - - if ( prop == "opacity" ) - jQuery.attr(y, "opacity", z.now); // Let attr handle opacity - else if ( parseInt(z.now) ) // My hate for IE will never die - y[prop] = parseInt(z.now) + "px"; - }; - - // Figure out the maximum number to run to - z.max = function(){ - return parseFloat( jQuery.css(elem,prop) ); - }; - - // Get the current size - z.cur = function(){ - var r = parseFloat( jQuery.curCSS(elem, prop) ); - return r && r > -10000 ? r : z.max(); - }; - - // Start an animation from one number to another - z.custom = function(from,to){ - z.startTime = (new Date()).getTime(); - z.now = from; - z.a(); - - z.timer = setInterval(function(){ - z.step(from, to); - }, 13); - }; - - // Simple 'show' function - z.show = function(){ - if ( !elem.orig ) elem.orig = {}; - - // Remember where we started, so that we can go back to it later - elem.orig[prop] = this.cur(); - - options.show = true; - - // Begin the animation - z.custom(0, elem.orig[prop]); - - // Stupid IE, look what you made me do - if ( prop != "opacity" ) - y[prop] = "1px"; - }; - - // Simple 'hide' function - z.hide = function(){ - if ( !elem.orig ) elem.orig = {}; - - // Remember where we started, so that we can go back to it later - elem.orig[prop] = this.cur(); - - options.hide = true; - - // Begin the animation - z.custom(elem.orig[prop], 0); - }; - - //Simple 'toggle' function - z.toggle = function() { - if ( !elem.orig ) elem.orig = {}; - - // Remember where we started, so that we can go back to it later - elem.orig[prop] = this.cur(); - - if(oldDisplay == "none") { - options.show = true; - - // Stupid IE, look what you made me do - if ( prop != "opacity" ) - y[prop] = "1px"; - - // Begin the animation - z.custom(0, elem.orig[prop]); - } else { - options.hide = true; - - // Begin the animation - z.custom(elem.orig[prop], 0); - } - }; - - // Each step of an animation - z.step = function(firstNum, lastNum){ - var t = (new Date()).getTime(); - - if (t > options.duration + z.startTime) { - // Stop the timer - clearInterval(z.timer); - z.timer = null; - - z.now = lastNum; - z.a(); - - if (elem.curAnim) elem.curAnim[ prop ] = true; - - var done = true; - for ( var i in elem.curAnim ) - if ( elem.curAnim[i] !== true ) - done = false; - - if ( done ) { - // Reset the overflow - y.overflow = ""; - - // Reset the display - y.display = oldDisplay; - if (jQuery.css(elem, "display") == "none") - y.display = "block"; - - // Hide the element if the "hide" operation was done - if ( options.hide ) - y.display = "none"; - - // Reset the properties, if the item has been hidden or shown - if ( options.hide || options.show ) - for ( var p in elem.curAnim ) - if (p == "opacity") - jQuery.attr(y, p, elem.orig[p]); - else - y[p] = ""; - } - - // If a callback was provided, execute it - if ( done && jQuery.isFunction( options.complete ) ) - // Execute the complete function - options.complete.apply( elem ); - } else { - var n = t - this.startTime; - // Figure out where in the animation we are and set the number - var p = n / options.duration; - - // If the easing function exists, then use it - z.now = options.easing && jQuery.easing[options.easing] ? - jQuery.easing[options.easing](p, n, firstNum, (lastNum-firstNum), options.duration) : - // else use default linear easing - ((-Math.cos(p*Math.PI)/2) + 0.5) * (lastNum-firstNum) + firstNum; - - // Perform the next step of the animation - z.a(); - } - }; - - } -}); -jQuery.fn.extend({ - loadIfModified: function( url, params, callback ) { - this.load( url, params, callback, 1 ); - }, - load: function( url, params, callback, ifModified ) { - if ( jQuery.isFunction( url ) ) - return this.bind("load", url); - - callback = callback || function(){}; - - // Default to a GET request - var type = "GET"; - - // If the second parameter was provided - if ( params ) - // If it's a function - if ( jQuery.isFunction( params ) ) { - // We assume that it's the callback - callback = params; - params = null; - - // Otherwise, build a param string - } else { - params = jQuery.param( params ); - type = "POST"; - } - - var self = this; - - // Request the remote document - jQuery.ajax({ - url: url, - type: type, - data: params, - ifModified: ifModified, - complete: function(res, status){ - if ( status == "success" || !ifModified && status == "notmodified" ) - // Inject the HTML into all the matched elements - self.attr("innerHTML", res.responseText) - // Execute all the scripts inside of the newly-injected HTML - .evalScripts() - // Execute callback - .each( callback, [res.responseText, status, res] ); - else - callback.apply( self, [res.responseText, status, res] ); - } - }); - return this; - }, - serialize: function() { - return jQuery.param( this ); - }, - evalScripts: function() { - return this.find("script").each(function(){ - if ( this.src ) - jQuery.getScript( this.src ); - else - jQuery.globalEval( this.text || this.textContent || this.innerHTML || "" ); - }).end(); - } - -}); - -// If IE is used, create a wrapper for the XMLHttpRequest object -if ( !window.XMLHttpRequest ) - XMLHttpRequest = function(){ - return new ActiveXObject("Microsoft.XMLHTTP"); - }; - -// Attach a bunch of functions for handling common AJAX events - -jQuery.each( "ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","), function(i,o){ - jQuery.fn[o] = function(f){ - return this.bind(o, f); - }; -}); - -jQuery.extend({ - get: function( url, data, callback, type, ifModified ) { - // shift arguments if data argument was ommited - if ( jQuery.isFunction( data ) ) { - callback = data; - data = null; - } - - return jQuery.ajax({ - url: url, - data: data, - success: callback, - dataType: type, - ifModified: ifModified - }); - }, - getIfModified: function( url, data, callback, type ) { - return jQuery.get(url, data, callback, type, 1); - }, - getScript: function( url, callback ) { - return jQuery.get(url, null, callback, "script"); - }, - getJSON: function( url, data, callback ) { - return jQuery.get(url, data, callback, "json"); - }, - post: function( url, data, callback, type ) { - if ( jQuery.isFunction( data ) ) { - callback = data; - data = {}; - } - - return jQuery.ajax({ - type: "POST", - url: url, - data: data, - success: callback, - dataType: type - }); - }, - - // timeout (ms) - //timeout: 0, - ajaxTimeout: function( timeout ) { - jQuery.ajaxSettings.timeout = timeout; - }, - ajaxSetup: function( settings ) { - jQuery.extend( jQuery.ajaxSettings, settings ); - }, - - ajaxSettings: { - global: true, - type: "GET", - timeout: 0, - contentType: "application/x-www-form-urlencoded", - processData: true, - async: true, - data: null - }, - - // Last-Modified header cache for next request - lastModified: {}, - ajax: function( s ) { - // TODO introduce global settings, allowing the client to modify them for all requests, not only timeout - s = jQuery.extend({}, jQuery.ajaxSettings, s); - - // if data available - if ( s.data ) { - // convert data if not already a string - if (s.processData && typeof s.data != "string") - s.data = jQuery.param(s.data); - // append data to url for get requests - if( s.type.toLowerCase() == "get" ) - // "?" + data or "&" + data (in case there are already params) - s.url += ((s.url.indexOf("?") > -1) ? "&" : "?") + s.data; - } - - // Watch for a new set of requests - if ( s.global && ! jQuery.active++ ) - jQuery.event.trigger( "ajaxStart" ); - - var requestDone = false; - - // Create the request object - var xml = new XMLHttpRequest(); - - // Open the socket - xml.open(s.type, s.url, s.async); - - // Set the correct header, if data is being sent - if ( s.data ) - xml.setRequestHeader("Content-Type", s.contentType); - - // Set the If-Modified-Since header, if ifModified mode. - if ( s.ifModified ) - xml.setRequestHeader("If-Modified-Since", - jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" ); - - // Set header so the called script knows that it's an XMLHttpRequest - xml.setRequestHeader("X-Requested-With", "XMLHttpRequest"); - - // Make sure the browser sends the right content length - if ( xml.overrideMimeType ) - xml.setRequestHeader("Connection", "close"); - - // Allow custom headers/mimetypes - if( s.beforeSend ) - s.beforeSend(xml); - - if ( s.global ) - jQuery.event.trigger("ajaxSend", [xml, s]); - - // Wait for a response to come back - var onreadystatechange = function(isTimeout){ - // The transfer is complete and the data is available, or the request timed out - if ( xml && (xml.readyState == 4 || isTimeout == "timeout") ) { - requestDone = true; - var status; - try { - status = jQuery.httpSuccess( xml ) && isTimeout != "timeout" ? - s.ifModified && jQuery.httpNotModified( xml, s.url ) ? "notmodified" : "success" : "error"; - // Make sure that the request was successful or notmodified - if ( status != "error" ) { - // Cache Last-Modified header, if ifModified mode. - var modRes; - try { - modRes = xml.getResponseHeader("Last-Modified"); - } catch(e) {} // swallow exception thrown by FF if header is not available - - if ( s.ifModified && modRes ) - jQuery.lastModified[s.url] = modRes; - - // process the data (runs the xml through httpData regardless of callback) - var data = jQuery.httpData( xml, s.dataType ); - - // If a local callback was specified, fire it and pass it the data - if ( s.success ) - s.success( data, status ); - - // Fire the global callback - if( s.global ) - jQuery.event.trigger( "ajaxSuccess", [xml, s] ); - } else - jQuery.handleError(s, xml, status); - } catch(e) { - status = "error"; - jQuery.handleError(s, xml, status, e); - } - - // The request was completed - if( s.global ) - jQuery.event.trigger( "ajaxComplete", [xml, s] ); - - // Handle the global AJAX counter - if ( s.global && ! --jQuery.active ) - jQuery.event.trigger( "ajaxStop" ); - - // Process result - if ( s.complete ) - s.complete(xml, status); - - // Stop memory leaks - xml.onreadystatechange = function(){}; - xml = null; - } - }; - xml.onreadystatechange = onreadystatechange; - - // Timeout checker - if ( s.timeout > 0 ) - setTimeout(function(){ - // Check to see if the request is still happening - if ( xml ) { - // Cancel the request - xml.abort(); - - if( !requestDone ) - onreadystatechange( "timeout" ); - } - }, s.timeout); - - // save non-leaking reference - var xml2 = xml; - - // Send the data - try { - xml2.send(s.data); - } catch(e) { - jQuery.handleError(s, xml, null, e); - } - - // firefox 1.5 doesn't fire statechange for sync requests - if ( !s.async ) - onreadystatechange(); - - // return XMLHttpRequest to allow aborting the request etc. - return xml2; - }, - - handleError: function( s, xml, status, e ) { - // If a local callback was specified, fire it - if ( s.error ) s.error( xml, status, e ); - - // Fire the global callback - if ( s.global ) - jQuery.event.trigger( "ajaxError", [xml, s, e] ); - }, - - // Counter for holding the number of active queries - active: 0, - - // Determines if an XMLHttpRequest was successful or not - httpSuccess: function( r ) { - try { - return !r.status && location.protocol == "file:" || - ( r.status >= 200 && r.status < 300 ) || r.status == 304 || - jQuery.browser.safari && r.status == undefined; - } catch(e){} - return false; - }, - - // Determines if an XMLHttpRequest returns NotModified - httpNotModified: function( xml, url ) { - try { - var xmlRes = xml.getResponseHeader("Last-Modified"); - - // Firefox always returns 200. check Last-Modified date - return xml.status == 304 || xmlRes == jQuery.lastModified[url] || - jQuery.browser.safari && xml.status == undefined; - } catch(e){} - return false; - }, - - /* Get the data out of an XMLHttpRequest. - * Return parsed XML if content-type header is "xml" and type is "xml" or omitted, - * otherwise return plain text. - * (String) data - The type of data that you're expecting back, - * (e.g. "xml", "html", "script") - */ - httpData: function( r, type ) { - var ct = r.getResponseHeader("content-type"); - var data = !type && ct && ct.indexOf("xml") >= 0; - data = type == "xml" || data ? r.responseXML : r.responseText; - - // If the type is "script", eval it in global context - if ( type == "script" ) - jQuery.globalEval( data ); - - // Get the JavaScript object, if JSON is used. - if ( type == "json" ) - eval( "data = " + data ); - - // evaluate scripts within html - if ( type == "html" ) - jQuery("<div>").html(data).evalScripts(); - - return data; - }, - - // Serialize an array of form elements or a set of - // key/values into a query string - param: function( a ) { - var s = []; - - // If an array was passed in, assume that it is an array - // of form elements - if ( a.constructor == Array || a.jquery ) - // Serialize the form elements - jQuery.each( a, function(){ - s.push( encodeURIComponent(this.name) + "=" + encodeURIComponent( this.value ) ); - }); - - // Otherwise, assume that it's an object of key/value pairs - else - // Serialize the key/values - for ( var j in a ) - // If the value is an array then the key names need to be repeated - if ( a[j] && a[j].constructor == Array ) - jQuery.each( a[j], function(){ - s.push( encodeURIComponent(j) + "=" + encodeURIComponent( this ) ); - }); - else - s.push( encodeURIComponent(j) + "=" + encodeURIComponent( a[j] ) ); - - // Return the resulting serialization - return s.join("&"); - }, - - // evalulates a script in global context - // not reliable for safari - globalEval: function( data ) { - if ( window.execScript ) - window.execScript( data ); - else if ( jQuery.browser.safari ) - // safari doesn't provide a synchronous global eval - window.setTimeout( data, 0 ); - else - eval.call( window, data ); - } - -}); -} diff --git a/lib/web/extjs/adapter/prototype/effects.js b/lib/web/extjs/adapter/prototype/effects.js deleted file mode 100644 index 3583fe80c91b804a64ef9073cbbdc15082339cd4..0000000000000000000000000000000000000000 --- a/lib/web/extjs/adapter/prototype/effects.js +++ /dev/null @@ -1,1098 +0,0 @@ -/* - * Ext JS Library 1.0 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -// script.aculo.us effects.js v1.7.0, Fri Jan 19 19:16:36 CET 2007 - -// Copyright (c) 2005, 2006 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) -// Contributors: -// Justin Palmer (http://encytemedia.com/) -// Mark Pilgrim (http://diveintomark.org/) -// Martin Bialasinki -// -// script.aculo.us is freely distributable under the terms of an MIT-style license. -// For details, see the script.aculo.us web site: http://script.aculo.us/ - -// converts rgb() and #xxx to #xxxxxx format, -// returns self (or first argument) if not convertable -String.prototype.parseColor = function() { - var color = '#'; - if(this.slice(0,4) == 'rgb(') { - var cols = this.slice(4,this.length-1).split(','); - var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3); - } else { - if(this.slice(0,1) == '#') { - if(this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase(); - if(this.length==7) color = this.toLowerCase(); - } - } - return(color.length==7 ? color : (arguments[0] || this)); -} - -/*--------------------------------------------------------------------------*/ - -Element.collectTextNodes = function(element) { - return $A($(element).childNodes).collect( function(node) { - return (node.nodeType==3 ? node.nodeValue : - (node.hasChildNodes() ? Element.collectTextNodes(node) : '')); - }).flatten().join(''); -} - -Element.collectTextNodesIgnoreClass = function(element, className) { - return $A($(element).childNodes).collect( function(node) { - return (node.nodeType==3 ? node.nodeValue : - ((node.hasChildNodes() && !Element.hasClassName(node,className)) ? - Element.collectTextNodesIgnoreClass(node, className) : '')); - }).flatten().join(''); -} - -Element.setContentZoom = function(element, percent) { - element = $(element); - element.setStyle({fontSize: (percent/100) + 'em'}); - if(navigator.appVersion.indexOf('AppleWebKit')>0) window.scrollBy(0,0); - return element; -} - -Element.getOpacity = function(element){ - return $(element).getStyle('opacity'); -} - -Element.setOpacity = function(element, value){ - return $(element).setStyle({opacity:value}); -} - -Element.getInlineOpacity = function(element){ - return $(element).style.opacity || ''; -} - -Element.forceRerendering = function(element) { - try { - element = $(element); - var n = document.createTextNode(' '); - element.appendChild(n); - element.removeChild(n); - } catch(e) { } -}; - -/*--------------------------------------------------------------------------*/ - -Array.prototype.call = function() { - var args = arguments; - this.each(function(f){ f.apply(this, args) }); -} - -/*--------------------------------------------------------------------------*/ - -var Effect = { - _elementDoesNotExistError: { - name: 'ElementDoesNotExistError', - message: 'The specified DOM element does not exist, but is required for this effect to operate' - }, - tagifyText: function(element) { - if(typeof Builder == 'undefined') - throw("Effect.tagifyText requires including script.aculo.us' builder.js library"); - - var tagifyStyle = 'position:relative'; - if(/MSIE/.test(navigator.userAgent) && !window.opera) tagifyStyle += ';zoom:1'; - - element = $(element); - $A(element.childNodes).each( function(child) { - if(child.nodeType==3) { - child.nodeValue.toArray().each( function(character) { - element.insertBefore( - Builder.node('span',{style: tagifyStyle}, - character == ' ' ? String.fromCharCode(160) : character), - child); - }); - Element.remove(child); - } - }); - }, - multiple: function(element, effect) { - var elements; - if(((typeof element == 'object') || - (typeof element == 'function')) && - (element.length)) - elements = element; - else - elements = $(element).childNodes; - - var options = Object.extend({ - speed: 0.1, - delay: 0.0 - }, arguments[2] || {}); - var masterDelay = options.delay; - - $A(elements).each( function(element, index) { - new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay })); - }); - }, - PAIRS: { - 'slide': ['SlideDown','SlideUp'], - 'blind': ['BlindDown','BlindUp'], - 'appear': ['Appear','Fade'] - }, - toggle: function(element, effect) { - element = $(element); - effect = (effect || 'appear').toLowerCase(); - var options = Object.extend({ - queue: { position:'end', scope:(element.id || 'global'), limit: 1 } - }, arguments[2] || {}); - Effect[element.visible() ? - Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, options); - } -}; - -var Effect2 = Effect; // deprecated - -/* ------------- transitions ------------- */ - -Effect.Transitions = { - linear: Prototype.K, - sinoidal: function(pos) { - return (-Math.cos(pos*Math.PI)/2) + 0.5; - }, - reverse: function(pos) { - return 1-pos; - }, - flicker: function(pos) { - return ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random()/4; - }, - wobble: function(pos) { - return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5; - }, - pulse: function(pos, pulses) { - pulses = pulses || 5; - return ( - Math.round((pos % (1/pulses)) * pulses) == 0 ? - ((pos * pulses * 2) - Math.floor(pos * pulses * 2)) : - 1 - ((pos * pulses * 2) - Math.floor(pos * pulses * 2)) - ); - }, - none: function(pos) { - return 0; - }, - full: function(pos) { - return 1; - } -}; - -/* ------------- core effects ------------- */ - -Effect.ScopedQueue = Class.create(); -Object.extend(Object.extend(Effect.ScopedQueue.prototype, Enumerable), { - initialize: function() { - this.effects = []; - this.interval = null; - }, - _each: function(iterator) { - this.effects._each(iterator); - }, - add: function(effect) { - var timestamp = new Date().getTime(); - - var position = (typeof effect.options.queue == 'string') ? - effect.options.queue : effect.options.queue.position; - - switch(position) { - case 'front': - // move unstarted effects after this effect - this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) { - e.startOn += effect.finishOn; - e.finishOn += effect.finishOn; - }); - break; - case 'with-last': - timestamp = this.effects.pluck('startOn').max() || timestamp; - break; - case 'end': - // start effect after last queued effect has finished - timestamp = this.effects.pluck('finishOn').max() || timestamp; - break; - } - - effect.startOn += timestamp; - effect.finishOn += timestamp; - - if(!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit)) - this.effects.push(effect); - - if(!this.interval) - this.interval = setInterval(this.loop.bind(this), 15); - }, - remove: function(effect) { - this.effects = this.effects.reject(function(e) { return e==effect }); - if(this.effects.length == 0) { - clearInterval(this.interval); - this.interval = null; - } - }, - loop: function() { - var timePos = new Date().getTime(); - for(var i=0, len=this.effects.length;i<len;i++) - if(this.effects[i]) this.effects[i].loop(timePos); - } -}); - -Effect.Queues = { - instances: $H(), - get: function(queueName) { - if(typeof queueName != 'string') return queueName; - - if(!this.instances[queueName]) - this.instances[queueName] = new Effect.ScopedQueue(); - - return this.instances[queueName]; - } -} -Effect.Queue = Effect.Queues.get('global'); - -Effect.DefaultOptions = { - transition: Effect.Transitions.sinoidal, - duration: 1.0, // seconds - fps: 60.0, // max. 60fps due to Effect.Queue implementation - sync: false, // true for combining - from: 0.0, - to: 1.0, - delay: 0.0, - queue: 'parallel' -} - -Effect.Base = function() {}; -Effect.Base.prototype = { - position: null, - start: function(options) { - this.options = Object.extend(Object.extend({},Effect.DefaultOptions), options || {}); - this.currentFrame = 0; - this.state = 'idle'; - this.startOn = this.options.delay*1000; - this.finishOn = this.startOn + (this.options.duration*1000); - this.event('beforeStart'); - if(!this.options.sync) - Effect.Queues.get(typeof this.options.queue == 'string' ? - 'global' : this.options.queue.scope).add(this); - }, - loop: function(timePos) { - if(timePos >= this.startOn) { - if(timePos >= this.finishOn) { - this.render(1.0); - this.cancel(); - this.event('beforeFinish'); - if(this.finish) this.finish(); - this.event('afterFinish'); - return; - } - var pos = (timePos - this.startOn) / (this.finishOn - this.startOn); - var frame = Math.round(pos * this.options.fps * this.options.duration); - if(frame > this.currentFrame) { - this.render(pos); - this.currentFrame = frame; - } - } - }, - render: function(pos) { - if(this.state == 'idle') { - this.state = 'running'; - this.event('beforeSetup'); - if(this.setup) this.setup(); - this.event('afterSetup'); - } - if(this.state == 'running') { - if(this.options.transition) pos = this.options.transition(pos); - pos *= (this.options.to-this.options.from); - pos += this.options.from; - this.position = pos; - this.event('beforeUpdate'); - if(this.update) this.update(pos); - this.event('afterUpdate'); - } - }, - cancel: function() { - if(!this.options.sync) - Effect.Queues.get(typeof this.options.queue == 'string' ? - 'global' : this.options.queue.scope).remove(this); - this.state = 'finished'; - }, - event: function(eventName) { - if(this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this); - if(this.options[eventName]) this.options[eventName](this); - }, - inspect: function() { - var data = $H(); - for(property in this) - if(typeof this[property] != 'function') data[property] = this[property]; - return '#<Effect:' + data.inspect() + ',options:' + $H(this.options).inspect() + '>'; - } -} - -Effect.Parallel = Class.create(); -Object.extend(Object.extend(Effect.Parallel.prototype, Effect.Base.prototype), { - initialize: function(effects) { - this.effects = effects || []; - this.start(arguments[1]); - }, - update: function(position) { - this.effects.invoke('render', position); - }, - finish: function(position) { - this.effects.each( function(effect) { - effect.render(1.0); - effect.cancel(); - effect.event('beforeFinish'); - if(effect.finish) effect.finish(position); - effect.event('afterFinish'); - }); - } -}); - -Effect.Event = Class.create(); -Object.extend(Object.extend(Effect.Event.prototype, Effect.Base.prototype), { - initialize: function() { - var options = Object.extend({ - duration: 0 - }, arguments[0] || {}); - this.start(options); - }, - update: Prototype.emptyFunction -}); - -Effect.Opacity = Class.create(); -Object.extend(Object.extend(Effect.Opacity.prototype, Effect.Base.prototype), { - initialize: function(element) { - this.element = $(element); - if(!this.element) throw(Effect._elementDoesNotExistError); - // make this work on IE on elements without 'layout' - if(/MSIE/.test(navigator.userAgent) && !window.opera && (!this.element.currentStyle.hasLayout)) - this.element.setStyle({zoom: 1}); - var options = Object.extend({ - from: this.element.getOpacity() || 0.0, - to: 1.0 - }, arguments[1] || {}); - this.start(options); - }, - update: function(position) { - this.element.setOpacity(position); - } -}); - -Effect.Move = Class.create(); -Object.extend(Object.extend(Effect.Move.prototype, Effect.Base.prototype), { - initialize: function(element) { - this.element = $(element); - if(!this.element) throw(Effect._elementDoesNotExistError); - var options = Object.extend({ - x: 0, - y: 0, - mode: 'relative' - }, arguments[1] || {}); - this.start(options); - }, - setup: function() { - // Bug in Opera: Opera returns the "real" position of a static element or - // relative element that does not have top/left explicitly set. - // ==> Always set top and left for position relative elements in your stylesheets - // (to 0 if you do not need them) - this.element.makePositioned(); - this.originalLeft = parseFloat(this.element.getStyle('left') || '0'); - this.originalTop = parseFloat(this.element.getStyle('top') || '0'); - if(this.options.mode == 'absolute') { - // absolute movement, so we need to calc deltaX and deltaY - this.options.x = this.options.x - this.originalLeft; - this.options.y = this.options.y - this.originalTop; - } - }, - update: function(position) { - this.element.setStyle({ - left: Math.round(this.options.x * position + this.originalLeft) + 'px', - top: Math.round(this.options.y * position + this.originalTop) + 'px' - }); - } -}); - -// for backwards compatibility -Effect.MoveBy = function(element, toTop, toLeft) { - return new Effect.Move(element, - Object.extend({ x: toLeft, y: toTop }, arguments[3] || {})); -}; - -Effect.Scale = Class.create(); -Object.extend(Object.extend(Effect.Scale.prototype, Effect.Base.prototype), { - initialize: function(element, percent) { - this.element = $(element); - if(!this.element) throw(Effect._elementDoesNotExistError); - var options = Object.extend({ - scaleX: true, - scaleY: true, - scaleContent: true, - scaleFromCenter: false, - scaleMode: 'box', // 'box' or 'contents' or {} with provided values - scaleFrom: 100.0, - scaleTo: percent - }, arguments[2] || {}); - this.start(options); - }, - setup: function() { - this.restoreAfterFinish = this.options.restoreAfterFinish || false; - this.elementPositioning = this.element.getStyle('position'); - - this.originalStyle = {}; - ['top','left','width','height','fontSize'].each( function(k) { - this.originalStyle[k] = this.element.style[k]; - }.bind(this)); - - this.originalTop = this.element.offsetTop; - this.originalLeft = this.element.offsetLeft; - - var fontSize = this.element.getStyle('font-size') || '100%'; - ['em','px','%','pt'].each( function(fontSizeType) { - if(fontSize.indexOf(fontSizeType)>0) { - this.fontSize = parseFloat(fontSize); - this.fontSizeType = fontSizeType; - } - }.bind(this)); - - this.factor = (this.options.scaleTo - this.options.scaleFrom)/100; - - this.dims = null; - if(this.options.scaleMode=='box') - this.dims = [this.element.offsetHeight, this.element.offsetWidth]; - if(/^content/.test(this.options.scaleMode)) - this.dims = [this.element.scrollHeight, this.element.scrollWidth]; - if(!this.dims) - this.dims = [this.options.scaleMode.originalHeight, - this.options.scaleMode.originalWidth]; - }, - update: function(position) { - var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position); - if(this.options.scaleContent && this.fontSize) - this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType }); - this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale); - }, - finish: function(position) { - if(this.restoreAfterFinish) this.element.setStyle(this.originalStyle); - }, - setDimensions: function(height, width) { - var d = {}; - if(this.options.scaleX) d.width = Math.round(width) + 'px'; - if(this.options.scaleY) d.height = Math.round(height) + 'px'; - if(this.options.scaleFromCenter) { - var topd = (height - this.dims[0])/2; - var leftd = (width - this.dims[1])/2; - if(this.elementPositioning == 'absolute') { - if(this.options.scaleY) d.top = this.originalTop-topd + 'px'; - if(this.options.scaleX) d.left = this.originalLeft-leftd + 'px'; - } else { - if(this.options.scaleY) d.top = -topd + 'px'; - if(this.options.scaleX) d.left = -leftd + 'px'; - } - } - this.element.setStyle(d); - } -}); - -Effect.Highlight = Class.create(); -Object.extend(Object.extend(Effect.Highlight.prototype, Effect.Base.prototype), { - initialize: function(element) { - this.element = $(element); - if(!this.element) throw(Effect._elementDoesNotExistError); - var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || {}); - this.start(options); - }, - setup: function() { - // Prevent executing on elements not in the layout flow - if(this.element.getStyle('display')=='none') { this.cancel(); return; } - // Disable background image during the effect - this.oldStyle = {}; - if (!this.options.keepBackgroundImage) { - this.oldStyle.backgroundImage = this.element.getStyle('background-image'); - this.element.setStyle({backgroundImage: 'none'}); - } - if(!this.options.endcolor) - this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff'); - if(!this.options.restorecolor) - this.options.restorecolor = this.element.getStyle('background-color'); - // init color calculations - this._base = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this)); - this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this)); - }, - update: function(position) { - this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){ - return m+(Math.round(this._base[i]+(this._delta[i]*position)).toColorPart()); }.bind(this)) }); - }, - finish: function() { - this.element.setStyle(Object.extend(this.oldStyle, { - backgroundColor: this.options.restorecolor - })); - } -}); - -Effect.ScrollTo = Class.create(); -Object.extend(Object.extend(Effect.ScrollTo.prototype, Effect.Base.prototype), { - initialize: function(element) { - this.element = $(element); - this.start(arguments[1] || {}); - }, - setup: function() { - Position.prepare(); - var offsets = Position.cumulativeOffset(this.element); - if(this.options.offset) offsets[1] += this.options.offset; - var max = window.innerHeight ? - window.height - window.innerHeight : - document.body.scrollHeight - - (document.documentElement.clientHeight ? - document.documentElement.clientHeight : document.body.clientHeight); - this.scrollStart = Position.deltaY; - this.delta = (offsets[1] > max ? max : offsets[1]) - this.scrollStart; - }, - update: function(position) { - Position.prepare(); - window.scrollTo(Position.deltaX, - this.scrollStart + (position*this.delta)); - } -}); - -/* ------------- combination effects ------------- */ - -Effect.Fade = function(element) { - element = $(element); - var oldOpacity = element.getInlineOpacity(); - var options = Object.extend({ - from: element.getOpacity() || 1.0, - to: 0.0, - afterFinishInternal: function(effect) { - if(effect.options.to!=0) return; - effect.element.hide().setStyle({opacity: oldOpacity}); - }}, arguments[1] || {}); - return new Effect.Opacity(element,options); -} - -Effect.Appear = function(element) { - element = $(element); - var options = Object.extend({ - from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0), - to: 1.0, - // force Safari to render floated elements properly - afterFinishInternal: function(effect) { - effect.element.forceRerendering(); - }, - beforeSetup: function(effect) { - effect.element.setOpacity(effect.options.from).show(); - }}, arguments[1] || {}); - return new Effect.Opacity(element,options); -} - -Effect.Puff = function(element) { - element = $(element); - var oldStyle = { - opacity: element.getInlineOpacity(), - position: element.getStyle('position'), - top: element.style.top, - left: element.style.left, - width: element.style.width, - height: element.style.height - }; - return new Effect.Parallel( - [ new Effect.Scale(element, 200, - { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }), - new Effect.Opacity(element, { sync: true, to: 0.0 } ) ], - Object.extend({ duration: 1.0, - beforeSetupInternal: function(effect) { - Position.absolutize(effect.effects[0].element) - }, - afterFinishInternal: function(effect) { - effect.effects[0].element.hide().setStyle(oldStyle); } - }, arguments[1] || {}) - ); -} - -Effect.BlindUp = function(element) { - element = $(element); - element.makeClipping(); - return new Effect.Scale(element, 0, - Object.extend({ scaleContent: false, - scaleX: false, - restoreAfterFinish: true, - afterFinishInternal: function(effect) { - effect.element.hide().undoClipping(); - } - }, arguments[1] || {}) - ); -} - -Effect.BlindDown = function(element) { - element = $(element); - var elementDimensions = element.getDimensions(); - return new Effect.Scale(element, 100, Object.extend({ - scaleContent: false, - scaleX: false, - scaleFrom: 0, - scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, - restoreAfterFinish: true, - afterSetup: function(effect) { - effect.element.makeClipping().setStyle({height: '0px'}).show(); - }, - afterFinishInternal: function(effect) { - effect.element.undoClipping(); - } - }, arguments[1] || {})); -} - -Effect.SwitchOff = function(element) { - element = $(element); - var oldOpacity = element.getInlineOpacity(); - return new Effect.Appear(element, Object.extend({ - duration: 0.4, - from: 0, - transition: Effect.Transitions.flicker, - afterFinishInternal: function(effect) { - new Effect.Scale(effect.element, 1, { - duration: 0.3, scaleFromCenter: true, - scaleX: false, scaleContent: false, restoreAfterFinish: true, - beforeSetup: function(effect) { - effect.element.makePositioned().makeClipping(); - }, - afterFinishInternal: function(effect) { - effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity}); - } - }) - } - }, arguments[1] || {})); -} - -Effect.DropOut = function(element) { - element = $(element); - var oldStyle = { - top: element.getStyle('top'), - left: element.getStyle('left'), - opacity: element.getInlineOpacity() }; - return new Effect.Parallel( - [ new Effect.Move(element, {x: 0, y: 100, sync: true }), - new Effect.Opacity(element, { sync: true, to: 0.0 }) ], - Object.extend( - { duration: 0.5, - beforeSetup: function(effect) { - effect.effects[0].element.makePositioned(); - }, - afterFinishInternal: function(effect) { - effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle); - } - }, arguments[1] || {})); -} - -Effect.Shake = function(element) { - element = $(element); - var oldStyle = { - top: element.getStyle('top'), - left: element.getStyle('left') }; - return new Effect.Move(element, - { x: 20, y: 0, duration: 0.05, afterFinishInternal: function(effect) { - new Effect.Move(effect.element, - { x: -40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { - new Effect.Move(effect.element, - { x: 40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { - new Effect.Move(effect.element, - { x: -40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { - new Effect.Move(effect.element, - { x: 40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { - new Effect.Move(effect.element, - { x: -20, y: 0, duration: 0.05, afterFinishInternal: function(effect) { - effect.element.undoPositioned().setStyle(oldStyle); - }}) }}) }}) }}) }}) }}); -} - -Effect.SlideDown = function(element) { - element = $(element).cleanWhitespace(); - // SlideDown need to have the content of the element wrapped in a container element with fixed height! - var oldInnerBottom = element.down().getStyle('bottom'); - var elementDimensions = element.getDimensions(); - return new Effect.Scale(element, 100, Object.extend({ - scaleContent: false, - scaleX: false, - scaleFrom: window.opera ? 0 : 1, - scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, - restoreAfterFinish: true, - afterSetup: function(effect) { - effect.element.makePositioned(); - effect.element.down().makePositioned(); - if(window.opera) effect.element.setStyle({top: ''}); - effect.element.makeClipping().setStyle({height: '0px'}).show(); - }, - afterUpdateInternal: function(effect) { - effect.element.down().setStyle({bottom: - (effect.dims[0] - effect.element.clientHeight) + 'px' }); - }, - afterFinishInternal: function(effect) { - effect.element.undoClipping().undoPositioned(); - effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); } - }, arguments[1] || {}) - ); -} - -Effect.SlideUp = function(element) { - element = $(element).cleanWhitespace(); - var oldInnerBottom = element.down().getStyle('bottom'); - return new Effect.Scale(element, window.opera ? 0 : 1, - Object.extend({ scaleContent: false, - scaleX: false, - scaleMode: 'box', - scaleFrom: 100, - restoreAfterFinish: true, - beforeStartInternal: function(effect) { - effect.element.makePositioned(); - effect.element.down().makePositioned(); - if(window.opera) effect.element.setStyle({top: ''}); - effect.element.makeClipping().show(); - }, - afterUpdateInternal: function(effect) { - effect.element.down().setStyle({bottom: - (effect.dims[0] - effect.element.clientHeight) + 'px' }); - }, - afterFinishInternal: function(effect) { - effect.element.hide().undoClipping().undoPositioned().setStyle({bottom: oldInnerBottom}); - effect.element.down().undoPositioned(); - } - }, arguments[1] || {}) - ); -} - -// Bug in opera makes the TD containing this element expand for a instance after finish -Effect.Squish = function(element) { - return new Effect.Scale(element, window.opera ? 1 : 0, { - restoreAfterFinish: true, - beforeSetup: function(effect) { - effect.element.makeClipping(); - }, - afterFinishInternal: function(effect) { - effect.element.hide().undoClipping(); - } - }); -} - -Effect.Grow = function(element) { - element = $(element); - var options = Object.extend({ - direction: 'center', - moveTransition: Effect.Transitions.sinoidal, - scaleTransition: Effect.Transitions.sinoidal, - opacityTransition: Effect.Transitions.full - }, arguments[1] || {}); - var oldStyle = { - top: element.style.top, - left: element.style.left, - height: element.style.height, - width: element.style.width, - opacity: element.getInlineOpacity() }; - - var dims = element.getDimensions(); - var initialMoveX, initialMoveY; - var moveX, moveY; - - switch (options.direction) { - case 'top-left': - initialMoveX = initialMoveY = moveX = moveY = 0; - break; - case 'top-right': - initialMoveX = dims.width; - initialMoveY = moveY = 0; - moveX = -dims.width; - break; - case 'bottom-left': - initialMoveX = moveX = 0; - initialMoveY = dims.height; - moveY = -dims.height; - break; - case 'bottom-right': - initialMoveX = dims.width; - initialMoveY = dims.height; - moveX = -dims.width; - moveY = -dims.height; - break; - case 'center': - initialMoveX = dims.width / 2; - initialMoveY = dims.height / 2; - moveX = -dims.width / 2; - moveY = -dims.height / 2; - break; - } - - return new Effect.Move(element, { - x: initialMoveX, - y: initialMoveY, - duration: 0.01, - beforeSetup: function(effect) { - effect.element.hide().makeClipping().makePositioned(); - }, - afterFinishInternal: function(effect) { - new Effect.Parallel( - [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }), - new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }), - new Effect.Scale(effect.element, 100, { - scaleMode: { originalHeight: dims.height, originalWidth: dims.width }, - sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true}) - ], Object.extend({ - beforeSetup: function(effect) { - effect.effects[0].element.setStyle({height: '0px'}).show(); - }, - afterFinishInternal: function(effect) { - effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle); - } - }, options) - ) - } - }); -} - -Effect.Shrink = function(element) { - element = $(element); - var options = Object.extend({ - direction: 'center', - moveTransition: Effect.Transitions.sinoidal, - scaleTransition: Effect.Transitions.sinoidal, - opacityTransition: Effect.Transitions.none - }, arguments[1] || {}); - var oldStyle = { - top: element.style.top, - left: element.style.left, - height: element.style.height, - width: element.style.width, - opacity: element.getInlineOpacity() }; - - var dims = element.getDimensions(); - var moveX, moveY; - - switch (options.direction) { - case 'top-left': - moveX = moveY = 0; - break; - case 'top-right': - moveX = dims.width; - moveY = 0; - break; - case 'bottom-left': - moveX = 0; - moveY = dims.height; - break; - case 'bottom-right': - moveX = dims.width; - moveY = dims.height; - break; - case 'center': - moveX = dims.width / 2; - moveY = dims.height / 2; - break; - } - - return new Effect.Parallel( - [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }), - new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}), - new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }) - ], Object.extend({ - beforeStartInternal: function(effect) { - effect.effects[0].element.makePositioned().makeClipping(); - }, - afterFinishInternal: function(effect) { - effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); } - }, options) - ); -} - -Effect.Pulsate = function(element) { - element = $(element); - var options = arguments[1] || {}; - var oldOpacity = element.getInlineOpacity(); - var transition = options.transition || Effect.Transitions.sinoidal; - var reverser = function(pos){ return transition(1-Effect.Transitions.pulse(pos, options.pulses)) }; - reverser.bind(transition); - return new Effect.Opacity(element, - Object.extend(Object.extend({ duration: 2.0, from: 0, - afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); } - }, options), {transition: reverser})); -} - -Effect.Fold = function(element) { - element = $(element); - var oldStyle = { - top: element.style.top, - left: element.style.left, - width: element.style.width, - height: element.style.height }; - element.makeClipping(); - return new Effect.Scale(element, 5, Object.extend({ - scaleContent: false, - scaleX: false, - afterFinishInternal: function(effect) { - new Effect.Scale(element, 1, { - scaleContent: false, - scaleY: false, - afterFinishInternal: function(effect) { - effect.element.hide().undoClipping().setStyle(oldStyle); - } }); - }}, arguments[1] || {})); -}; - -Effect.Morph = Class.create(); -Object.extend(Object.extend(Effect.Morph.prototype, Effect.Base.prototype), { - initialize: function(element) { - this.element = $(element); - if(!this.element) throw(Effect._elementDoesNotExistError); - var options = Object.extend({ - style: {} - }, arguments[1] || {}); - if (typeof options.style == 'string') { - if(options.style.indexOf(':') == -1) { - var cssText = '', selector = '.' + options.style; - $A(document.styleSheets).reverse().each(function(styleSheet) { - if (styleSheet.cssRules) cssRules = styleSheet.cssRules; - else if (styleSheet.rules) cssRules = styleSheet.rules; - $A(cssRules).reverse().each(function(rule) { - if (selector == rule.selectorText) { - cssText = rule.style.cssText; - throw $break; - } - }); - if (cssText) throw $break; - }); - this.style = cssText.parseStyle(); - options.afterFinishInternal = function(effect){ - effect.element.addClassName(effect.options.style); - effect.transforms.each(function(transform) { - if(transform.style != 'opacity') - effect.element.style[transform.style.camelize()] = ''; - }); - } - } else this.style = options.style.parseStyle(); - } else this.style = $H(options.style) - this.start(options); - }, - setup: function(){ - function parseColor(color){ - if(!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) color = '#ffffff'; - color = color.parseColor(); - return $R(0,2).map(function(i){ - return parseInt( color.slice(i*2+1,i*2+3), 16 ) - }); - } - this.transforms = this.style.map(function(pair){ - var property = pair[0].underscore().dasherize(), value = pair[1], unit = null; - - if(value.parseColor('#zzzzzz') != '#zzzzzz') { - value = value.parseColor(); - unit = 'color'; - } else if(property == 'opacity') { - value = parseFloat(value); - if(/MSIE/.test(navigator.userAgent) && !window.opera && (!this.element.currentStyle.hasLayout)) - this.element.setStyle({zoom: 1}); - } else if(Element.CSS_LENGTH.test(value)) - var components = value.match(/^([\+\-]?[0-9\.]+)(.*)$/), - value = parseFloat(components[1]), unit = (components.length == 3) ? components[2] : null; - - var originalValue = this.element.getStyle(property); - return $H({ - style: property, - originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0), - targetValue: unit=='color' ? parseColor(value) : value, - unit: unit - }); - }.bind(this)).reject(function(transform){ - return ( - (transform.originalValue == transform.targetValue) || - ( - transform.unit != 'color' && - (isNaN(transform.originalValue) || isNaN(transform.targetValue)) - ) - ) - }); - }, - update: function(position) { - var style = $H(), value = null; - this.transforms.each(function(transform){ - value = transform.unit=='color' ? - $R(0,2).inject('#',function(m,v,i){ - return m+(Math.round(transform.originalValue[i]+ - (transform.targetValue[i] - transform.originalValue[i])*position)).toColorPart() }) : - transform.originalValue + Math.round( - ((transform.targetValue - transform.originalValue) * position) * 1000)/1000 + transform.unit; - style[transform.style] = value; - }); - this.element.setStyle(style); - } -}); - -Effect.Transform = Class.create(); -Object.extend(Effect.Transform.prototype, { - initialize: function(tracks){ - this.tracks = []; - this.options = arguments[1] || {}; - this.addTracks(tracks); - }, - addTracks: function(tracks){ - tracks.each(function(track){ - var data = $H(track).values().first(); - this.tracks.push($H({ - ids: $H(track).keys().first(), - effect: Effect.Morph, - options: { style: data } - })); - }.bind(this)); - return this; - }, - play: function(){ - return new Effect.Parallel( - this.tracks.map(function(track){ - var elements = [$(track.ids) || $$(track.ids)].flatten(); - return elements.map(function(e){ return new track.effect(e, Object.extend({ sync:true }, track.options)) }); - }).flatten(), - this.options - ); - } -}); - -Element.CSS_PROPERTIES = $w( - 'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' + - 'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' + - 'borderRightColor borderRightStyle borderRightWidth borderSpacing ' + - 'borderTopColor borderTopStyle borderTopWidth bottom clip color ' + - 'fontSize fontWeight height left letterSpacing lineHeight ' + - 'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+ - 'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' + - 'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' + - 'right textIndent top width wordSpacing zIndex'); - -Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/; - -String.prototype.parseStyle = function(){ - var element = Element.extend(document.createElement('div')); - element.innerHTML = '<div style="' + this + '"></div>'; - var style = element.down().style, styleRules = $H(); - - Element.CSS_PROPERTIES.each(function(property){ - if(style[property]) styleRules[property] = style[property]; - }); - if(/MSIE/.test(navigator.userAgent) && !window.opera && this.indexOf('opacity') > -1) { - styleRules.opacity = this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]; - } - return styleRules; -}; - -Element.morph = function(element, style) { - new Effect.Morph(element, Object.extend({ style: style }, arguments[2] || {})); - return element; -}; - -['setOpacity','getOpacity','getInlineOpacity','forceRerendering','setContentZoom', - 'collectTextNodes','collectTextNodesIgnoreClass','morph'].each( - function(f) { Element.Methods[f] = Element[f]; } -); - -Element.Methods.visualEffect = function(element, effect, options) { - s = effect.gsub(/_/, '-').camelize(); - effect_class = s.charAt(0).toUpperCase() + s.substring(1); - new Effect[effect_class](element, options); - return $(element); -}; - -Element.addMethods(); \ No newline at end of file diff --git a/lib/web/extjs/adapter/prototype/ext-prototype-adapter.js b/lib/web/extjs/adapter/prototype/ext-prototype-adapter.js deleted file mode 100644 index 8d5761c9a6e924e341c891539833dc1074d63ffb..0000000000000000000000000000000000000000 --- a/lib/web/extjs/adapter/prototype/ext-prototype-adapter.js +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext={};window["undefined"]=window["undefined"];Ext.apply=function(o,c,defaults){if(defaults){Ext.apply(o,defaults);} -if(o&&c&&typeof c=='object'){for(var p in c){o[p]=c[p];}} -return o;};(function(){var idSeed=0;var ua=navigator.userAgent.toLowerCase();var isStrict=document.compatMode=="CSS1Compat",isOpera=ua.indexOf("opera")>-1,isSafari=(/webkit|khtml/).test(ua),isIE=ua.indexOf("msie")>-1,isIE7=ua.indexOf("msie 7")>-1,isGecko=!isSafari&&ua.indexOf("gecko")>-1,isBorderBox=isIE&&!isStrict,isWindows=(ua.indexOf("windows")!=-1||ua.indexOf("win32")!=-1),isMac=(ua.indexOf("macintosh")!=-1||ua.indexOf("mac os x")!=-1),isSecure=window.location.href.toLowerCase().indexOf("https")===0;if(isIE&&!isIE7){try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}} -Ext.apply(Ext,{isStrict:isStrict,isSecure:isSecure,isReady:false,enableGarbageCollector:true,SSL_SECURE_URL:"javascript:false",BLANK_IMAGE_URL:"http:/"+"/extjs.com/s.gif",emptyFn:function(){},applyIf:function(o,c){if(o&&c){for(var p in c){if(typeof o[p]=="undefined"){o[p]=c[p];}}} -return o;},addBehaviors:function(o){if(!Ext.isReady){Ext.onReady(function(){Ext.addBehaviors(o);});return;} -var cache={};for(var b in o){var parts=b.split('@');if(parts[1]){var s=parts[0];if(!cache[s]){cache[s]=Ext.select(s);} -cache[s].on(parts[1],o[b]);}} -cache=null;},id:function(el,prefix){prefix=prefix||"ext-gen";el=Ext.getDom(el);var id=prefix+(++idSeed);return el?(el.id?el.id:(el.id=id)):id;},extend:function(){var io=function(o){for(var m in o){this[m]=o[m];}};return function(sb,sp,overrides){if(typeof sp=='object'){overrides=sp;sp=sb;sb=function(){sp.apply(this,arguments);};} -var F=function(){},sbp,spp=sp.prototype;F.prototype=spp;sbp=sb.prototype=new F();sbp.constructor=sb;sb.superclass=spp;if(spp.constructor==Object.prototype.constructor){spp.constructor=sp;} -sb.override=function(o){Ext.override(sb,o);};sbp.override=io;sbp.__extcls=sb;Ext.override(sb,overrides);return sb;};}(),override:function(origclass,overrides){if(overrides){var p=origclass.prototype;for(var method in overrides){p[method]=overrides[method];}}},namespace:function(){var a=arguments,o=null,i,j,d,rt;for(i=0;i<a.length;++i){d=a[i].split(".");rt=d[0];eval('if (typeof '+rt+' == "undefined"){'+rt+' = {};} o = '+rt+';');for(j=1;j<d.length;++j){o[d[j]]=o[d[j]]||{};o=o[d[j]];}}},urlEncode:function(o){if(!o){return"";} -var buf=[];for(var key in o){var ov=o[key];var type=typeof ov;if(type=='undefined'){buf.push(encodeURIComponent(key),"=&");}else if(type!="function"&&type!="object"){buf.push(encodeURIComponent(key),"=",encodeURIComponent(ov),"&");}else if(ov instanceof Array){for(var i=0,len=ov.length;i<len;i++){buf.push(encodeURIComponent(key),"=",encodeURIComponent(ov[i]===undefined?'':ov[i]),"&");}}} -buf.pop();return buf.join("");},urlDecode:function(string,overwrite){if(!string||!string.length){return{};} -var obj={};var pairs=string.split('&');var pair,name,value;for(var i=0,len=pairs.length;i<len;i++){pair=pairs[i].split('=');name=decodeURIComponent(pair[0]);value=decodeURIComponent(pair[1]);if(overwrite!==true){if(typeof obj[name]=="undefined"){obj[name]=value;}else if(typeof obj[name]=="string"){obj[name]=[obj[name]];obj[name].push(value);}else{obj[name].push(value);}}else{obj[name]=value;}} -return obj;},each:function(array,fn,scope){if(typeof array.length=="undefined"||typeof array=="string"){array=[array];} -for(var i=0,len=array.length;i<len;i++){if(fn.call(scope||array[i],array[i],i,array)===false){return i;};}},combine:function(){var as=arguments,l=as.length,r=[];for(var i=0;i<l;i++){var a=as[i];if(a instanceof Array){r=r.concat(a);}else if(a.length!==undefined&&!a.substr){r=r.concat(Array.prototype.slice.call(a,0));}else{r.push(a);}} -return r;},escapeRe:function(s){return s.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1");},callback:function(cb,scope,args,delay){if(typeof cb=="function"){if(delay){cb.defer(delay,scope,args||[]);}else{cb.apply(scope,args||[]);}}},getDom:function(el){if(!el){return null;} -return el.dom?el.dom:(typeof el=='string'?document.getElementById(el):el);},getCmp:function(id){return Ext.ComponentMgr.get(id);},num:function(v,defaultValue){if(typeof v!='number'){return defaultValue;} -return v;},destroy:function(){for(var i=0,a=arguments,len=a.length;i<len;i++){var as=a[i];if(as){if(as.dom){as.removeAllListeners();as.remove();continue;} -if(typeof as.purgeListeners=='function'){as.purgeListeners();} -if(typeof as.destroy=='function'){as.destroy();}}}},isOpera:isOpera,isSafari:isSafari,isIE:isIE,isIE7:isIE7,isGecko:isGecko,isBorderBox:isBorderBox,isWindows:isWindows,isMac:isMac,useShims:((isIE&&!isIE7)||(isGecko&&isMac))});})();Ext.namespace("Ext","Ext.util","Ext.grid","Ext.dd","Ext.tree","Ext.data","Ext.form","Ext.menu","Ext.state","Ext.lib","Ext.layout","Ext.app");Ext.apply(Function.prototype,{createCallback:function(){var args=arguments;var method=this;return function(){return method.apply(window,args);};},createDelegate:function(obj,args,appendArgs){var method=this;return function(){var callArgs=args||arguments;if(appendArgs===true){callArgs=Array.prototype.slice.call(arguments,0);callArgs=callArgs.concat(args);}else if(typeof appendArgs=="number"){callArgs=Array.prototype.slice.call(arguments,0);var applyArgs=[appendArgs,0].concat(args);Array.prototype.splice.apply(callArgs,applyArgs);} -return method.apply(obj||window,callArgs);};},defer:function(millis,obj,args,appendArgs){var fn=this.createDelegate(obj,args,appendArgs);if(millis){return setTimeout(fn,millis);} -fn();return 0;},createSequence:function(fcn,scope){if(typeof fcn!="function"){return this;} -var method=this;return function(){var retval=method.apply(this||window,arguments);fcn.apply(scope||this||window,arguments);return retval;};},createInterceptor:function(fcn,scope){if(typeof fcn!="function"){return this;} -var method=this;return function(){fcn.target=this;fcn.method=method;if(fcn.apply(scope||this||window,arguments)===false){return;} -return method.apply(this||window,arguments);};}});Ext.applyIf(String,{escape:function(string){return string.replace(/('|\\)/g,"\\$1");},leftPad:function(val,size,ch){var result=new String(val);if(ch===null||ch===undefined||ch===''){ch=" ";} -while(result.length<size){result=ch+result;} -return result;},format:function(format){var args=Array.prototype.slice.call(arguments,1);return format.replace(/\{(\d+)\}/g,function(m,i){return args[i];});}});String.prototype.toggle=function(value,other){return this==value?other:value;};Ext.applyIf(Number.prototype,{constrain:function(min,max){return Math.min(Math.max(this,min),max);}});Ext.applyIf(Array.prototype,{indexOf:function(o){for(var i=0,len=this.length;i<len;i++){if(this[i]==o)return i;} -return-1;},remove:function(o){var index=this.indexOf(o);if(index!=-1){this.splice(index,1);}}});Date.prototype.getElapsed=function(date){return Math.abs((date||new Date()).getTime()-this.getTime());}; - -(function(){var libFlyweight;Ext.lib.Dom={getViewWidth:function(full){return full?this.getDocumentWidth():this.getViewportWidth();},getViewHeight:function(full){return full?this.getDocumentHeight():this.getViewportHeight();},getDocumentHeight:function(){var scrollHeight=(document.compatMode!="CSS1Compat")?document.body.scrollHeight:document.documentElement.scrollHeight;return Math.max(scrollHeight,this.getViewportHeight());},getDocumentWidth:function(){var scrollWidth=(document.compatMode!="CSS1Compat")?document.body.scrollWidth:document.documentElement.scrollWidth;return Math.max(scrollWidth,this.getViewportWidth());},getViewportHeight:function(){var height=self.innerHeight;var mode=document.compatMode;if((mode||Ext.isIE)&&!Ext.isOpera){height=(mode=="CSS1Compat")?document.documentElement.clientHeight:document.body.clientHeight;} -return height;},getViewportWidth:function(){var width=self.innerWidth;var mode=document.compatMode;if(mode||Ext.isIE){width=(mode=="CSS1Compat")?document.documentElement.clientWidth:document.body.clientWidth;} -return width;},isAncestor:function(p,c){p=Ext.getDom(p);c=Ext.getDom(c);if(!p||!c){return false;} -if(p.contains&&!Ext.isSafari){return p.contains(c);}else if(p.compareDocumentPosition){return!!(p.compareDocumentPosition(c)&16);}else{var parent=c.parentNode;while(parent){if(parent==p){return true;} -else if(!parent.tagName||parent.tagName.toUpperCase()=="HTML"){return false;} -parent=parent.parentNode;} -return false;}},getRegion:function(el){return Ext.lib.Region.getRegion(el);},getY:function(el){return this.getXY(el)[1];},getX:function(el){return this.getXY(el)[0];},getXY:function(el){var p,pe,b,scroll,bd=document.body;el=Ext.getDom(el);if(el.getBoundingClientRect){b=el.getBoundingClientRect();scroll=fly(document).getScroll();return[b.left+scroll.left,b.top+scroll.top];}else{var x=el.offsetLeft,y=el.offsetTop;p=el.offsetParent;var hasAbsolute=false;if(p!=el){while(p){x+=p.offsetLeft;y+=p.offsetTop;if(Ext.isSafari&&!hasAbsolute&&fly(p).getStyle("position")=="absolute"){hasAbsolute=true;} -if(Ext.isGecko){pe=fly(p);var bt=parseInt(pe.getStyle("borderTopWidth"),10)||0;var bl=parseInt(pe.getStyle("borderLeftWidth"),10)||0;x+=bl;y+=bt;if(p!=el&&pe.getStyle('overflow')!='visible'){x+=bl;y+=bt;}} -p=p.offsetParent;}} -if(Ext.isSafari&&(hasAbsolute||fly(el).getStyle("position")=="absolute")){x-=bd.offsetLeft;y-=bd.offsetTop;}} -p=el.parentNode;while(p&&p!=bd){if(!Ext.isOpera||(Ext.isOpera&&p.tagName!='TR'&&fly(p).getStyle("display")!="inline")){x-=p.scrollLeft;y-=p.scrollTop;} -p=p.parentNode;} -return[x,y];},setXY:function(el,xy){el=Ext.fly(el,'_setXY');el.position();var pts=el.translatePoints(xy);if(xy[0]!==false){el.dom.style.left=pts.left+"px";} -if(xy[1]!==false){el.dom.style.top=pts.top+"px";}},setX:function(el,x){this.setXY(el,[x,false]);},setY:function(el,y){this.setXY(el,[false,y]);}};Ext.lib.Event={getPageX:function(e){return Event.pointerX(e.browserEvent||e);},getPageY:function(e){return Event.pointerY(e.browserEvent||e);},getXY:function(e){e=e.browserEvent||e;return[Event.pointerX(e),Event.pointerY(e)];},getTarget:function(e){return Event.element(e.browserEvent||e);},resolveTextNode:function(node){if(node&&3==node.nodeType){return node.parentNode;}else{return node;}},getRelatedTarget:function(ev){ev=ev.browserEvent||ev;var t=ev.relatedTarget;if(!t){if(ev.type=="mouseout"){t=ev.toElement;}else if(ev.type=="mouseover"){t=ev.fromElement;}} -return this.resolveTextNode(t);},on:function(el,eventName,fn){Event.observe(el,eventName,fn,false);},un:function(el,eventName,fn){Event.stopObserving(el,eventName,fn,false);},purgeElement:function(el){},preventDefault:function(e){e=e.browserEvent||e;if(e.preventDefault){e.preventDefault();}else{e.returnValue=false;}},stopPropagation:function(e){e=e.browserEvent||e;if(e.stopPropagation){e.stopPropagation();}else{e.cancelBubble=true;}},stopEvent:function(e){Event.stop(e.browserEvent||e);},onAvailable:function(id,fn,scope){var start=new Date(),iid;var f=function(){if(start.getElapsed()>10000){clearInterval(iid);} -var el=document.getElementById(id);if(el){clearInterval(iid);fn.call(scope||window,el);}};iid=setInterval(f,50);}};Ext.lib.Ajax=function(){var createSuccess=function(cb){return cb.success?function(xhr){cb.success.call(cb.scope||window,{responseText:xhr.responseText,responseXML:xhr.responseXML,argument:cb.argument});}:Ext.emptyFn;};var createFailure=function(cb){return cb.failure?function(xhr){cb.failure.call(cb.scope||window,{responseText:xhr.responseText,responseXML:xhr.responseXML,argument:cb.argument});}:Ext.emptyFn;};return{request:function(method,uri,cb,data){new Ajax.Request(uri,{method:method,parameters:data||'',timeout:cb.timeout,onSuccess:createSuccess(cb),onFailure:createFailure(cb)});},formRequest:function(form,uri,cb,data,isUpload,sslUri){new Ajax.Request(uri,{method:Ext.getDom(form).method||'POST',parameters:Form.serialize(form)+(data?'&'+data:''),timeout:cb.timeout,onSuccess:createSuccess(cb),onFailure:createFailure(cb)});},isCallInProgress:function(trans){return false;},abort:function(trans){return false;},serializeForm:function(form){return Form.serialize(form.dom||form);}};}();Ext.lib.Anim=function(){var easings={easeOut:function(pos){return 1-Math.pow(1-pos,2);},easeIn:function(pos){return 1-Math.pow(1-pos,2);}};var createAnim=function(cb,scope){return{stop:function(skipToLast){this.effect.cancel();},isAnimated:function(){return this.effect.state=='running';},proxyCallback:function(){Ext.callback(cb,scope);}};};return{scroll:function(el,args,duration,easing,cb,scope){var anim=createAnim(cb,scope);el=Ext.getDom(el);el.scrollLeft=args.to[0];el.scrollTop=args.to[1];anim.proxyCallback();return anim;},motion:function(el,args,duration,easing,cb,scope){return this.run(el,args,duration,easing,cb,scope);},color:function(el,args,duration,easing,cb,scope){return this.run(el,args,duration,easing,cb,scope);},run:function(el,args,duration,easing,cb,scope,type){var o={};for(var k in args){switch(k){case'points':var by,pts,e=Ext.fly(el,'_animrun');e.position();if(by=args.points.by){var xy=e.getXY();pts=e.translatePoints([xy[0]+by[0],xy[1]+by[1]]);}else{pts=e.translatePoints(args.points.to);} -o.left=pts.left+'px';o.top=pts.top+'px';break;case'width':o.width=args.width.to+'px';break;case'height':o.height=args.height.to+'px';break;case'opacity':o.opacity=String(args.opacity.to);break;default:o[k]=String(args[k].to);break;}} -var anim=createAnim(cb,scope);anim.effect=new Effect.Morph(Ext.id(el),{duration:duration,afterFinish:anim.proxyCallback,transition:easings[easing]||Effect.Transitions.linear,style:o});return anim;}};}();function fly(el){if(!libFlyweight){libFlyweight=new Ext.Element.Flyweight();} -libFlyweight.dom=el;return libFlyweight;} -Ext.lib.Region=function(t,r,b,l){this.top=t;this[1]=t;this.right=r;this.bottom=b;this.left=l;this[0]=l;};Ext.lib.Region.prototype={contains:function(region){return(region.left>=this.left&®ion.right<=this.right&®ion.top>=this.top&®ion.bottom<=this.bottom);},getArea:function(){return((this.bottom-this.top)*(this.right-this.left));},intersect:function(region){var t=Math.max(this.top,region.top);var r=Math.min(this.right,region.right);var b=Math.min(this.bottom,region.bottom);var l=Math.max(this.left,region.left);if(b>=t&&r>=l){return new Ext.lib.Region(t,r,b,l);}else{return null;}},union:function(region){var t=Math.min(this.top,region.top);var r=Math.max(this.right,region.right);var b=Math.max(this.bottom,region.bottom);var l=Math.min(this.left,region.left);return new Ext.lib.Region(t,r,b,l);},adjust:function(t,l,b,r){this.top+=t;this.left+=l;this.right+=r;this.bottom+=b;return this;}};Ext.lib.Region.getRegion=function(el){var p=Ext.lib.Dom.getXY(el);var t=p[1];var r=p[0]+el.offsetWidth;var b=p[1]+el.offsetHeight;var l=p[0];return new Ext.lib.Region(t,r,b,l);};Ext.lib.Point=function(x,y){if(x instanceof Array){y=x[1];x=x[0];} -this.x=this.right=this.left=this[0]=x;this.y=this.top=this.bottom=this[1]=y;};Ext.lib.Point.prototype=new Ext.lib.Region();if(Ext.isIE){Event.observe(window,"unload",function(){var p=Function.prototype;delete p.createSequence;delete p.defer;delete p.createDelegate;delete p.createCallback;delete p.createInterceptor;});}})(); diff --git a/lib/web/extjs/adapter/prototype/prototype.js b/lib/web/extjs/adapter/prototype/prototype.js deleted file mode 100644 index e6597861ab2e97811d2a82123258d0a8d2c7e819..0000000000000000000000000000000000000000 --- a/lib/web/extjs/adapter/prototype/prototype.js +++ /dev/null @@ -1,2523 +0,0 @@ -/* - * Ext JS Library 1.0 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -/* Prototype JavaScript framework, version 1.5.0 - * (c) 2005-2007 Sam Stephenson - * - * Prototype is freely distributable under the terms of an MIT-style license. - * For details, see the Prototype web site: http://prototype.conio.net/ - * -/*--------------------------------------------------------------------------*/ - -var Prototype = { - Version: '1.5.0', - BrowserFeatures: { - XPath: !!document.evaluate - }, - - ScriptFragment: '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)', - emptyFunction: function() {}, - K: function(x) { return x } -} - -var Class = { - create: function() { - return function() { - this.initialize.apply(this, arguments); - } - } -} - -var Abstract = new Object(); - -Object.extend = function(destination, source) { - for (var property in source) { - destination[property] = source[property]; - } - return destination; -} - -Object.extend(Object, { - inspect: function(object) { - try { - if (object === undefined) return 'undefined'; - if (object === null) return 'null'; - return object.inspect ? object.inspect() : object.toString(); - } catch (e) { - if (e instanceof RangeError) return '...'; - throw e; - } - }, - - keys: function(object) { - var keys = []; - for (var property in object) - keys.push(property); - return keys; - }, - - values: function(object) { - var values = []; - for (var property in object) - values.push(object[property]); - return values; - }, - - clone: function(object) { - return Object.extend({}, object); - } -}); - -Function.prototype.bind = function() { - var __method = this, args = $A(arguments), object = args.shift(); - return function() { - return __method.apply(object, args.concat($A(arguments))); - } -} - -Function.prototype.bindAsEventListener = function(object) { - var __method = this, args = $A(arguments), object = args.shift(); - return function(event) { - return __method.apply(object, [( event || window.event)].concat(args).concat($A(arguments))); - } -} - -Object.extend(Number.prototype, { - toColorPart: function() { - var digits = this.toString(16); - if (this < 16) return '0' + digits; - return digits; - }, - - succ: function() { - return this + 1; - }, - - times: function(iterator) { - $R(0, this, true).each(iterator); - return this; - } -}); - -var Try = { - these: function() { - var returnValue; - - for (var i = 0, length = arguments.length; i < length; i++) { - var lambda = arguments[i]; - try { - returnValue = lambda(); - break; - } catch (e) {} - } - - return returnValue; - } -} - -/*--------------------------------------------------------------------------*/ - -var PeriodicalExecuter = Class.create(); -PeriodicalExecuter.prototype = { - initialize: function(callback, frequency) { - this.callback = callback; - this.frequency = frequency; - this.currentlyExecuting = false; - - this.registerCallback(); - }, - - registerCallback: function() { - this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); - }, - - stop: function() { - if (!this.timer) return; - clearInterval(this.timer); - this.timer = null; - }, - - onTimerEvent: function() { - if (!this.currentlyExecuting) { - try { - this.currentlyExecuting = true; - this.callback(this); - } finally { - this.currentlyExecuting = false; - } - } - } -} -String.interpret = function(value){ - return value == null ? '' : String(value); -} - -Object.extend(String.prototype, { - gsub: function(pattern, replacement) { - var result = '', source = this, match; - replacement = arguments.callee.prepareReplacement(replacement); - - while (source.length > 0) { - if (match = source.match(pattern)) { - result += source.slice(0, match.index); - result += String.interpret(replacement(match)); - source = source.slice(match.index + match[0].length); - } else { - result += source, source = ''; - } - } - return result; - }, - - sub: function(pattern, replacement, count) { - replacement = this.gsub.prepareReplacement(replacement); - count = count === undefined ? 1 : count; - - return this.gsub(pattern, function(match) { - if (--count < 0) return match[0]; - return replacement(match); - }); - }, - - scan: function(pattern, iterator) { - this.gsub(pattern, iterator); - return this; - }, - - truncate: function(length, truncation) { - length = length || 30; - truncation = truncation === undefined ? '...' : truncation; - return this.length > length ? - this.slice(0, length - truncation.length) + truncation : this; - }, - - strip: function() { - return this.replace(/^\s+/, '').replace(/\s+$/, ''); - }, - - stripTags: function() { - return this.replace(/<\/?[^>]+>/gi, ''); - }, - - stripScripts: function() { - return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); - }, - - extractScripts: function() { - var matchAll = new RegExp(Prototype.ScriptFragment, 'img'); - var matchOne = new RegExp(Prototype.ScriptFragment, 'im'); - return (this.match(matchAll) || []).map(function(scriptTag) { - return (scriptTag.match(matchOne) || ['', ''])[1]; - }); - }, - - evalScripts: function() { - return this.extractScripts().map(function(script) { return eval(script) }); - }, - - escapeHTML: function() { - var div = document.createElement('div'); - var text = document.createTextNode(this); - div.appendChild(text); - return div.innerHTML; - }, - - unescapeHTML: function() { - var div = document.createElement('div'); - div.innerHTML = this.stripTags(); - return div.childNodes[0] ? (div.childNodes.length > 1 ? - $A(div.childNodes).inject('',function(memo,node){ return memo+node.nodeValue }) : - div.childNodes[0].nodeValue) : ''; - }, - - toQueryParams: function(separator) { - var match = this.strip().match(/([^?#]*)(#.*)?$/); - if (!match) return {}; - - return match[1].split(separator || '&').inject({}, function(hash, pair) { - if ((pair = pair.split('='))[0]) { - var name = decodeURIComponent(pair[0]); - var value = pair[1] ? decodeURIComponent(pair[1]) : undefined; - - if (hash[name] !== undefined) { - if (hash[name].constructor != Array) - hash[name] = [hash[name]]; - if (value) hash[name].push(value); - } - else hash[name] = value; - } - return hash; - }); - }, - - toArray: function() { - return this.split(''); - }, - - succ: function() { - return this.slice(0, this.length - 1) + - String.fromCharCode(this.charCodeAt(this.length - 1) + 1); - }, - - camelize: function() { - var parts = this.split('-'), len = parts.length; - if (len == 1) return parts[0]; - - var camelized = this.charAt(0) == '-' - ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1) - : parts[0]; - - for (var i = 1; i < len; i++) - camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1); - - return camelized; - }, - - capitalize: function(){ - return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); - }, - - underscore: function() { - return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase(); - }, - - dasherize: function() { - return this.gsub(/_/,'-'); - }, - - inspect: function(useDoubleQuotes) { - var escapedString = this.replace(/\\/g, '\\\\'); - if (useDoubleQuotes) - return '"' + escapedString.replace(/"/g, '\\"') + '"'; - else - return "'" + escapedString.replace(/'/g, '\\\'') + "'"; - } -}); - -String.prototype.gsub.prepareReplacement = function(replacement) { - if (typeof replacement == 'function') return replacement; - var template = new Template(replacement); - return function(match) { return template.evaluate(match) }; -} - -String.prototype.parseQuery = String.prototype.toQueryParams; - -var Template = Class.create(); -Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; -Template.prototype = { - initialize: function(template, pattern) { - this.template = template.toString(); - this.pattern = pattern || Template.Pattern; - }, - - evaluate: function(object) { - return this.template.gsub(this.pattern, function(match) { - var before = match[1]; - if (before == '\\') return match[2]; - return before + String.interpret(object[match[3]]); - }); - } -} - -var $break = new Object(); -var $continue = new Object(); - -var Enumerable = { - each: function(iterator) { - var index = 0; - try { - this._each(function(value) { - try { - iterator(value, index++); - } catch (e) { - if (e != $continue) throw e; - } - }); - } catch (e) { - if (e != $break) throw e; - } - return this; - }, - - eachSlice: function(number, iterator) { - var index = -number, slices = [], array = this.toArray(); - while ((index += number) < array.length) - slices.push(array.slice(index, index+number)); - return slices.map(iterator); - }, - - all: function(iterator) { - var result = true; - this.each(function(value, index) { - result = result && !!(iterator || Prototype.K)(value, index); - if (!result) throw $break; - }); - return result; - }, - - any: function(iterator) { - var result = false; - this.each(function(value, index) { - if (result = !!(iterator || Prototype.K)(value, index)) - throw $break; - }); - return result; - }, - - collect: function(iterator) { - var results = []; - this.each(function(value, index) { - results.push((iterator || Prototype.K)(value, index)); - }); - return results; - }, - - detect: function(iterator) { - var result; - this.each(function(value, index) { - if (iterator(value, index)) { - result = value; - throw $break; - } - }); - return result; - }, - - findAll: function(iterator) { - var results = []; - this.each(function(value, index) { - if (iterator(value, index)) - results.push(value); - }); - return results; - }, - - grep: function(pattern, iterator) { - var results = []; - this.each(function(value, index) { - var stringValue = value.toString(); - if (stringValue.match(pattern)) - results.push((iterator || Prototype.K)(value, index)); - }) - return results; - }, - - include: function(object) { - var found = false; - this.each(function(value) { - if (value == object) { - found = true; - throw $break; - } - }); - return found; - }, - - inGroupsOf: function(number, fillWith) { - fillWith = fillWith === undefined ? null : fillWith; - return this.eachSlice(number, function(slice) { - while(slice.length < number) slice.push(fillWith); - return slice; - }); - }, - - inject: function(memo, iterator) { - this.each(function(value, index) { - memo = iterator(memo, value, index); - }); - return memo; - }, - - invoke: function(method) { - var args = $A(arguments).slice(1); - return this.map(function(value) { - return value[method].apply(value, args); - }); - }, - - max: function(iterator) { - var result; - this.each(function(value, index) { - value = (iterator || Prototype.K)(value, index); - if (result == undefined || value >= result) - result = value; - }); - return result; - }, - - min: function(iterator) { - var result; - this.each(function(value, index) { - value = (iterator || Prototype.K)(value, index); - if (result == undefined || value < result) - result = value; - }); - return result; - }, - - partition: function(iterator) { - var trues = [], falses = []; - this.each(function(value, index) { - ((iterator || Prototype.K)(value, index) ? - trues : falses).push(value); - }); - return [trues, falses]; - }, - - pluck: function(property) { - var results = []; - this.each(function(value, index) { - results.push(value[property]); - }); - return results; - }, - - reject: function(iterator) { - var results = []; - this.each(function(value, index) { - if (!iterator(value, index)) - results.push(value); - }); - return results; - }, - - sortBy: function(iterator) { - return this.map(function(value, index) { - return {value: value, criteria: iterator(value, index)}; - }).sort(function(left, right) { - var a = left.criteria, b = right.criteria; - return a < b ? -1 : a > b ? 1 : 0; - }).pluck('value'); - }, - - toArray: function() { - return this.map(); - }, - - zip: function() { - var iterator = Prototype.K, args = $A(arguments); - if (typeof args.last() == 'function') - iterator = args.pop(); - - var collections = [this].concat(args).map($A); - return this.map(function(value, index) { - return iterator(collections.pluck(index)); - }); - }, - - size: function() { - return this.toArray().length; - }, - - inspect: function() { - return '#<Enumerable:' + this.toArray().inspect() + '>'; - } -} - -Object.extend(Enumerable, { - map: Enumerable.collect, - find: Enumerable.detect, - select: Enumerable.findAll, - member: Enumerable.include, - entries: Enumerable.toArray -}); -var $A = Array.from = function(iterable) { - if (!iterable) return []; - if (iterable.toArray) { - return iterable.toArray(); - } else { - var results = []; - for (var i = 0, length = iterable.length; i < length; i++) - results.push(iterable[i]); - return results; - } -} - -Object.extend(Array.prototype, Enumerable); - -if (!Array.prototype._reverse) - Array.prototype._reverse = Array.prototype.reverse; - -Object.extend(Array.prototype, { - _each: function(iterator) { - for (var i = 0, length = this.length; i < length; i++) - iterator(this[i]); - }, - - clear: function() { - this.length = 0; - return this; - }, - - first: function() { - return this[0]; - }, - - last: function() { - return this[this.length - 1]; - }, - - compact: function() { - return this.select(function(value) { - return value != null; - }); - }, - - flatten: function() { - return this.inject([], function(array, value) { - return array.concat(value && value.constructor == Array ? - value.flatten() : [value]); - }); - }, - - without: function() { - var values = $A(arguments); - return this.select(function(value) { - return !values.include(value); - }); - }, - - indexOf: function(object) { - for (var i = 0, length = this.length; i < length; i++) - if (this[i] == object) return i; - return -1; - }, - - reverse: function(inline) { - return (inline !== false ? this : this.toArray())._reverse(); - }, - - reduce: function() { - return this.length > 1 ? this : this[0]; - }, - - uniq: function() { - return this.inject([], function(array, value) { - return array.include(value) ? array : array.concat([value]); - }); - }, - - clone: function() { - return [].concat(this); - }, - - size: function() { - return this.length; - }, - - inspect: function() { - return '[' + this.map(Object.inspect).join(', ') + ']'; - } -}); - -Array.prototype.toArray = Array.prototype.clone; - -function $w(string){ - string = string.strip(); - return string ? string.split(/\s+/) : []; -} - -if(window.opera){ - Array.prototype.concat = function(){ - var array = []; - for(var i = 0, length = this.length; i < length; i++) array.push(this[i]); - for(var i = 0, length = arguments.length; i < length; i++) { - if(arguments[i].constructor == Array) { - for(var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++) - array.push(arguments[i][j]); - } else { - array.push(arguments[i]); - } - } - return array; - } -} -var Hash = function(obj) { - Object.extend(this, obj || {}); -}; - -Object.extend(Hash, { - toQueryString: function(obj) { - var parts = []; - - this.prototype._each.call(obj, function(pair) { - if (!pair.key) return; - - if (pair.value && pair.value.constructor == Array) { - var values = pair.value.compact(); - if (values.length < 2) pair.value = values.reduce(); - else { - key = encodeURIComponent(pair.key); - values.each(function(value) { - value = value != undefined ? encodeURIComponent(value) : ''; - parts.push(key + '=' + encodeURIComponent(value)); - }); - return; - } - } - if (pair.value == undefined) pair[1] = ''; - parts.push(pair.map(encodeURIComponent).join('=')); - }); - - return parts.join('&'); - } -}); - -Object.extend(Hash.prototype, Enumerable); -Object.extend(Hash.prototype, { - _each: function(iterator) { - for (var key in this) { - var value = this[key]; - if (value && value == Hash.prototype[key]) continue; - - var pair = [key, value]; - pair.key = key; - pair.value = value; - iterator(pair); - } - }, - - keys: function() { - return this.pluck('key'); - }, - - values: function() { - return this.pluck('value'); - }, - - merge: function(hash) { - return $H(hash).inject(this, function(mergedHash, pair) { - mergedHash[pair.key] = pair.value; - return mergedHash; - }); - }, - - remove: function() { - var result; - for(var i = 0, length = arguments.length; i < length; i++) { - var value = this[arguments[i]]; - if (value !== undefined){ - if (result === undefined) result = value; - else { - if (result.constructor != Array) result = [result]; - result.push(value) - } - } - delete this[arguments[i]]; - } - return result; - }, - - toQueryString: function() { - return Hash.toQueryString(this); - }, - - inspect: function() { - return '#<Hash:{' + this.map(function(pair) { - return pair.map(Object.inspect).join(': '); - }).join(', ') + '}>'; - } -}); - -function $H(object) { - if (object && object.constructor == Hash) return object; - return new Hash(object); -}; -ObjectRange = Class.create(); -Object.extend(ObjectRange.prototype, Enumerable); -Object.extend(ObjectRange.prototype, { - initialize: function(start, end, exclusive) { - this.start = start; - this.end = end; - this.exclusive = exclusive; - }, - - _each: function(iterator) { - var value = this.start; - while (this.include(value)) { - iterator(value); - value = value.succ(); - } - }, - - include: function(value) { - if (value < this.start) - return false; - if (this.exclusive) - return value < this.end; - return value <= this.end; - } -}); - -var $R = function(start, end, exclusive) { - return new ObjectRange(start, end, exclusive); -} - -var Ajax = { - getTransport: function() { - return Try.these( - function() {return new XMLHttpRequest()}, - function() {return new ActiveXObject('Msxml2.XMLHTTP')}, - function() {return new ActiveXObject('Microsoft.XMLHTTP')} - ) || false; - }, - - activeRequestCount: 0 -} - -Ajax.Responders = { - responders: [], - - _each: function(iterator) { - this.responders._each(iterator); - }, - - register: function(responder) { - if (!this.include(responder)) - this.responders.push(responder); - }, - - unregister: function(responder) { - this.responders = this.responders.without(responder); - }, - - dispatch: function(callback, request, transport, json) { - this.each(function(responder) { - if (typeof responder[callback] == 'function') { - try { - responder[callback].apply(responder, [request, transport, json]); - } catch (e) {} - } - }); - } -}; - -Object.extend(Ajax.Responders, Enumerable); - -Ajax.Responders.register({ - onCreate: function() { - Ajax.activeRequestCount++; - }, - onComplete: function() { - Ajax.activeRequestCount--; - } -}); - -Ajax.Base = function() {}; -Ajax.Base.prototype = { - setOptions: function(options) { - this.options = { - method: 'post', - asynchronous: true, - contentType: 'application/x-www-form-urlencoded', - encoding: 'UTF-8', - parameters: '' - } - Object.extend(this.options, options || {}); - - this.options.method = this.options.method.toLowerCase(); - if (typeof this.options.parameters == 'string') - this.options.parameters = this.options.parameters.toQueryParams(); - } -} - -Ajax.Request = Class.create(); -Ajax.Request.Events = - ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; - -Ajax.Request.prototype = Object.extend(new Ajax.Base(), { - _complete: false, - - initialize: function(url, options) { - this.transport = Ajax.getTransport(); - this.setOptions(options); - this.request(url); - }, - - request: function(url) { - this.url = url; - this.method = this.options.method; - var params = this.options.parameters; - - if (!['get', 'post'].include(this.method)) { - // simulate other verbs over post - params['_method'] = this.method; - this.method = 'post'; - } - - params = Hash.toQueryString(params); - if (params && /Konqueror|Safari|KHTML/.test(navigator.userAgent)) params += '&_=' - - // when GET, append parameters to URL - if (this.method == 'get' && params) - this.url += (this.url.indexOf('?') > -1 ? '&' : '?') + params; - - try { - Ajax.Responders.dispatch('onCreate', this, this.transport); - - this.transport.open(this.method.toUpperCase(), this.url, - this.options.asynchronous); - - if (this.options.asynchronous) - setTimeout(function() { this.respondToReadyState(1) }.bind(this), 10); - - this.transport.onreadystatechange = this.onStateChange.bind(this); - this.setRequestHeaders(); - - var body = this.method == 'post' ? (this.options.postBody || params) : null; - - this.transport.send(body); - - /* Force Firefox to handle ready state 4 for synchronous requests */ - if (!this.options.asynchronous && this.transport.overrideMimeType) - this.onStateChange(); - - } - catch (e) { - this.dispatchException(e); - } - }, - - onStateChange: function() { - var readyState = this.transport.readyState; - if (readyState > 1 && !((readyState == 4) && this._complete)) - this.respondToReadyState(this.transport.readyState); - }, - - setRequestHeaders: function() { - var headers = { - 'X-Requested-With': 'XMLHttpRequest', - 'X-Prototype-Version': Prototype.Version, - 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' - }; - - if (this.method == 'post') { - headers['Content-type'] = this.options.contentType + - (this.options.encoding ? '; charset=' + this.options.encoding : ''); - - /* Force "Connection: close" for older Mozilla browsers to work - * around a bug where XMLHttpRequest sends an incorrect - * Content-length header. See Mozilla Bugzilla #246651. - */ - if (this.transport.overrideMimeType && - (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) - headers['Connection'] = 'close'; - } - - // user-defined headers - if (typeof this.options.requestHeaders == 'object') { - var extras = this.options.requestHeaders; - - if (typeof extras.push == 'function') - for (var i = 0, length = extras.length; i < length; i += 2) - headers[extras[i]] = extras[i+1]; - else - $H(extras).each(function(pair) { headers[pair.key] = pair.value }); - } - - for (var name in headers) - this.transport.setRequestHeader(name, headers[name]); - }, - - success: function() { - return !this.transport.status - || (this.transport.status >= 200 && this.transport.status < 300); - }, - - respondToReadyState: function(readyState) { - var state = Ajax.Request.Events[readyState]; - var transport = this.transport, json = this.evalJSON(); - - if (state == 'Complete') { - try { - this._complete = true; - (this.options['on' + this.transport.status] - || this.options['on' + (this.success() ? 'Success' : 'Failure')] - || Prototype.emptyFunction)(transport, json); - } catch (e) { - this.dispatchException(e); - } - - if ((this.getHeader('Content-type') || 'text/javascript').strip(). - match(/^(text|application)\/(x-)?(java|ecma)script(;.*)?$/i)) - this.evalResponse(); - } - - try { - (this.options['on' + state] || Prototype.emptyFunction)(transport, json); - Ajax.Responders.dispatch('on' + state, this, transport, json); - } catch (e) { - this.dispatchException(e); - } - - if (state == 'Complete') { - // avoid memory leak in MSIE: clean up - this.transport.onreadystatechange = Prototype.emptyFunction; - } - }, - - getHeader: function(name) { - try { - return this.transport.getResponseHeader(name); - } catch (e) { return null } - }, - - evalJSON: function() { - try { - var json = this.getHeader('X-JSON'); - return json ? eval('(' + json + ')') : null; - } catch (e) { return null } - }, - - evalResponse: function() { - try { - return eval(this.transport.responseText); - } catch (e) { - this.dispatchException(e); - } - }, - - dispatchException: function(exception) { - (this.options.onException || Prototype.emptyFunction)(this, exception); - Ajax.Responders.dispatch('onException', this, exception); - } -}); - -Ajax.Updater = Class.create(); - -Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), { - initialize: function(container, url, options) { - this.container = { - success: (container.success || container), - failure: (container.failure || (container.success ? null : container)) - } - - this.transport = Ajax.getTransport(); - this.setOptions(options); - - var onComplete = this.options.onComplete || Prototype.emptyFunction; - this.options.onComplete = (function(transport, param) { - this.updateContent(); - onComplete(transport, param); - }).bind(this); - - this.request(url); - }, - - updateContent: function() { - var receiver = this.container[this.success() ? 'success' : 'failure']; - var response = this.transport.responseText; - - if (!this.options.evalScripts) response = response.stripScripts(); - - if (receiver = $(receiver)) { - if (this.options.insertion) - new this.options.insertion(receiver, response); - else - receiver.update(response); - } - - if (this.success()) { - if (this.onComplete) - setTimeout(this.onComplete.bind(this), 10); - } - } -}); - -Ajax.PeriodicalUpdater = Class.create(); -Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), { - initialize: function(container, url, options) { - this.setOptions(options); - this.onComplete = this.options.onComplete; - - this.frequency = (this.options.frequency || 2); - this.decay = (this.options.decay || 1); - - this.updater = {}; - this.container = container; - this.url = url; - - this.start(); - }, - - start: function() { - this.options.onComplete = this.updateComplete.bind(this); - this.onTimerEvent(); - }, - - stop: function() { - this.updater.options.onComplete = undefined; - clearTimeout(this.timer); - (this.onComplete || Prototype.emptyFunction).apply(this, arguments); - }, - - updateComplete: function(request) { - if (this.options.decay) { - this.decay = (request.responseText == this.lastText ? - this.decay * this.options.decay : 1); - - this.lastText = request.responseText; - } - this.timer = setTimeout(this.onTimerEvent.bind(this), - this.decay * this.frequency * 1000); - }, - - onTimerEvent: function() { - this.updater = new Ajax.Updater(this.container, this.url, this.options); - } -}); -function $(element) { - if (arguments.length > 1) { - for (var i = 0, elements = [], length = arguments.length; i < length; i++) - elements.push($(arguments[i])); - return elements; - } - if (typeof element == 'string') - element = document.getElementById(element); - return Element.extend(element); -} - -if (Prototype.BrowserFeatures.XPath) { - document._getElementsByXPath = function(expression, parentElement) { - var results = []; - var query = document.evaluate(expression, $(parentElement) || document, - null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); - for (var i = 0, length = query.snapshotLength; i < length; i++) - results.push(query.snapshotItem(i)); - return results; - }; -} - -document.getElementsByClassName = function(className, parentElement) { - if (Prototype.BrowserFeatures.XPath) { - var q = ".//*[contains(concat(' ', @class, ' '), ' " + className + " ')]"; - return document._getElementsByXPath(q, parentElement); - } else { - var children = ($(parentElement) || document.body).getElementsByTagName('*'); - var elements = [], child; - for (var i = 0, length = children.length; i < length; i++) { - child = children[i]; - if (Element.hasClassName(child, className)) - elements.push(Element.extend(child)); - } - return elements; - } -}; - -/*--------------------------------------------------------------------------*/ - -if (!window.Element) - var Element = new Object(); - -Element.extend = function(element) { - if (!element || _nativeExtensions || element.nodeType == 3) return element; - - if (!element._extended && element.tagName && element != window) { - var methods = Object.clone(Element.Methods), cache = Element.extend.cache; - - if (element.tagName == 'FORM') - Object.extend(methods, Form.Methods); - if (['INPUT', 'TEXTAREA', 'SELECT'].include(element.tagName)) - Object.extend(methods, Form.Element.Methods); - - Object.extend(methods, Element.Methods.Simulated); - - for (var property in methods) { - var value = methods[property]; - if (typeof value == 'function' && !(property in element)) - element[property] = cache.findOrStore(value); - } - } - - element._extended = true; - return element; -}; - -Element.extend.cache = { - findOrStore: function(value) { - return this[value] = this[value] || function() { - return value.apply(null, [this].concat($A(arguments))); - } - } -}; - -Element.Methods = { - visible: function(element) { - return $(element).style.display != 'none'; - }, - - toggle: function(element) { - element = $(element); - Element[Element.visible(element) ? 'hide' : 'show'](element); - return element; - }, - - hide: function(element) { - $(element).style.display = 'none'; - return element; - }, - - show: function(element) { - $(element).style.display = ''; - return element; - }, - - remove: function(element) { - element = $(element); - element.parentNode.removeChild(element); - return element; - }, - - update: function(element, html) { - html = typeof html == 'undefined' ? '' : html.toString(); - $(element).innerHTML = html.stripScripts(); - setTimeout(function() {html.evalScripts()}, 10); - return element; - }, - - replace: function(element, html) { - element = $(element); - html = typeof html == 'undefined' ? '' : html.toString(); - if (element.outerHTML) { - element.outerHTML = html.stripScripts(); - } else { - var range = element.ownerDocument.createRange(); - range.selectNodeContents(element); - element.parentNode.replaceChild( - range.createContextualFragment(html.stripScripts()), element); - } - setTimeout(function() {html.evalScripts()}, 10); - return element; - }, - - inspect: function(element) { - element = $(element); - var result = '<' + element.tagName.toLowerCase(); - $H({'id': 'id', 'className': 'class'}).each(function(pair) { - var property = pair.first(), attribute = pair.last(); - var value = (element[property] || '').toString(); - if (value) result += ' ' + attribute + '=' + value.inspect(true); - }); - return result + '>'; - }, - - recursivelyCollect: function(element, property) { - element = $(element); - var elements = []; - while (element = element[property]) - if (element.nodeType == 1) - elements.push(Element.extend(element)); - return elements; - }, - - ancestors: function(element) { - return $(element).recursivelyCollect('parentNode'); - }, - - descendants: function(element) { - return $A($(element).getElementsByTagName('*')); - }, - - immediateDescendants: function(element) { - if (!(element = $(element).firstChild)) return []; - while (element && element.nodeType != 1) element = element.nextSibling; - if (element) return [element].concat($(element).nextSiblings()); - return []; - }, - - previousSiblings: function(element) { - return $(element).recursivelyCollect('previousSibling'); - }, - - nextSiblings: function(element) { - return $(element).recursivelyCollect('nextSibling'); - }, - - siblings: function(element) { - element = $(element); - return element.previousSiblings().reverse().concat(element.nextSiblings()); - }, - - match: function(element, selector) { - if (typeof selector == 'string') - selector = new Selector(selector); - return selector.match($(element)); - }, - - up: function(element, expression, index) { - return Selector.findElement($(element).ancestors(), expression, index); - }, - - down: function(element, expression, index) { - return Selector.findElement($(element).descendants(), expression, index); - }, - - previous: function(element, expression, index) { - return Selector.findElement($(element).previousSiblings(), expression, index); - }, - - next: function(element, expression, index) { - return Selector.findElement($(element).nextSiblings(), expression, index); - }, - - getElementsBySelector: function() { - var args = $A(arguments), element = $(args.shift()); - return Selector.findChildElements(element, args); - }, - - getElementsByClassName: function(element, className) { - return document.getElementsByClassName(className, element); - }, - - readAttribute: function(element, name) { - element = $(element); - if (document.all && !window.opera) { - var t = Element._attributeTranslations; - if (t.values[name]) return t.values[name](element, name); - if (t.names[name]) name = t.names[name]; - var attribute = element.attributes[name]; - if(attribute) return attribute.nodeValue; - } - return element.getAttribute(name); - }, - - getHeight: function(element) { - return $(element).getDimensions().height; - }, - - getWidth: function(element) { - return $(element).getDimensions().width; - }, - - classNames: function(element) { - return new Element.ClassNames(element); - }, - - hasClassName: function(element, className) { - if (!(element = $(element))) return; - var elementClassName = element.className; - if (elementClassName.length == 0) return false; - if (elementClassName == className || - elementClassName.match(new RegExp("(^|\\s)" + className + "(\\s|$)"))) - return true; - return false; - }, - - addClassName: function(element, className) { - if (!(element = $(element))) return; - Element.classNames(element).add(className); - return element; - }, - - removeClassName: function(element, className) { - if (!(element = $(element))) return; - Element.classNames(element).remove(className); - return element; - }, - - toggleClassName: function(element, className) { - if (!(element = $(element))) return; - Element.classNames(element)[element.hasClassName(className) ? 'remove' : 'add'](className); - return element; - }, - - observe: function() { - Event.observe.apply(Event, arguments); - return $A(arguments).first(); - }, - - stopObserving: function() { - Event.stopObserving.apply(Event, arguments); - return $A(arguments).first(); - }, - - // removes whitespace-only text node children - cleanWhitespace: function(element) { - element = $(element); - var node = element.firstChild; - while (node) { - var nextNode = node.nextSibling; - if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) - element.removeChild(node); - node = nextNode; - } - return element; - }, - - empty: function(element) { - return $(element).innerHTML.match(/^\s*$/); - }, - - descendantOf: function(element, ancestor) { - element = $(element), ancestor = $(ancestor); - while (element = element.parentNode) - if (element == ancestor) return true; - return false; - }, - - scrollTo: function(element) { - element = $(element); - var pos = Position.cumulativeOffset(element); - window.scrollTo(pos[0], pos[1]); - return element; - }, - - getStyle: function(element, style) { - element = $(element); - if (['float','cssFloat'].include(style)) - style = (typeof element.style.styleFloat != 'undefined' ? 'styleFloat' : 'cssFloat'); - style = style.camelize(); - var value = element.style[style]; - if (!value) { - if (document.defaultView && document.defaultView.getComputedStyle) { - var css = document.defaultView.getComputedStyle(element, null); - value = css ? css[style] : null; - } else if (element.currentStyle) { - value = element.currentStyle[style]; - } - } - - if((value == 'auto') && ['width','height'].include(style) && (element.getStyle('display') != 'none')) - value = element['offset'+style.capitalize()] + 'px'; - - if (window.opera && ['left', 'top', 'right', 'bottom'].include(style)) - if (Element.getStyle(element, 'position') == 'static') value = 'auto'; - if(style == 'opacity') { - if(value) return parseFloat(value); - if(value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) - if(value[1]) return parseFloat(value[1]) / 100; - return 1.0; - } - return value == 'auto' ? null : value; - }, - - setStyle: function(element, style) { - element = $(element); - for (var name in style) { - var value = style[name]; - if(name == 'opacity') { - if (value == 1) { - value = (/Gecko/.test(navigator.userAgent) && - !/Konqueror|Safari|KHTML/.test(navigator.userAgent)) ? 0.999999 : 1.0; - if(/MSIE/.test(navigator.userAgent) && !window.opera) - element.style.filter = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,''); - } else if(value === '') { - if(/MSIE/.test(navigator.userAgent) && !window.opera) - element.style.filter = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,''); - } else { - if(value < 0.00001) value = 0; - if(/MSIE/.test(navigator.userAgent) && !window.opera) - element.style.filter = element.getStyle('filter').replace(/alpha\([^\)]*\)/gi,'') + - 'alpha(opacity='+value*100+')'; - } - } else if(['float','cssFloat'].include(name)) name = (typeof element.style.styleFloat != 'undefined') ? 'styleFloat' : 'cssFloat'; - element.style[name.camelize()] = value; - } - return element; - }, - - getDimensions: function(element) { - element = $(element); - var display = $(element).getStyle('display'); - if (display != 'none' && display != null) // Safari bug - return {width: element.offsetWidth, height: element.offsetHeight}; - - // All *Width and *Height properties give 0 on elements with display none, - // so enable the element temporarily - var els = element.style; - var originalVisibility = els.visibility; - var originalPosition = els.position; - var originalDisplay = els.display; - els.visibility = 'hidden'; - els.position = 'absolute'; - els.display = 'block'; - var originalWidth = element.clientWidth; - var originalHeight = element.clientHeight; - els.display = originalDisplay; - els.position = originalPosition; - els.visibility = originalVisibility; - return {width: originalWidth, height: originalHeight}; - }, - - makePositioned: function(element) { - element = $(element); - var pos = Element.getStyle(element, 'position'); - if (pos == 'static' || !pos) { - element._madePositioned = true; - element.style.position = 'relative'; - // Opera returns the offset relative to the positioning context, when an - // element is position relative but top and left have not been defined - if (window.opera) { - element.style.top = 0; - element.style.left = 0; - } - } - return element; - }, - - undoPositioned: function(element) { - element = $(element); - if (element._madePositioned) { - element._madePositioned = undefined; - element.style.position = - element.style.top = - element.style.left = - element.style.bottom = - element.style.right = ''; - } - return element; - }, - - makeClipping: function(element) { - element = $(element); - if (element._overflow) return element; - element._overflow = element.style.overflow || 'auto'; - if ((Element.getStyle(element, 'overflow') || 'visible') != 'hidden') - element.style.overflow = 'hidden'; - return element; - }, - - undoClipping: function(element) { - element = $(element); - if (!element._overflow) return element; - element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; - element._overflow = null; - return element; - } -}; - -Object.extend(Element.Methods, {childOf: Element.Methods.descendantOf}); - -Element._attributeTranslations = {}; - -Element._attributeTranslations.names = { - colspan: "colSpan", - rowspan: "rowSpan", - valign: "vAlign", - datetime: "dateTime", - accesskey: "accessKey", - tabindex: "tabIndex", - enctype: "encType", - maxlength: "maxLength", - readonly: "readOnly", - longdesc: "longDesc" -}; - -Element._attributeTranslations.values = { - _getAttr: function(element, attribute) { - return element.getAttribute(attribute, 2); - }, - - _flag: function(element, attribute) { - return $(element).hasAttribute(attribute) ? attribute : null; - }, - - style: function(element) { - return element.style.cssText.toLowerCase(); - }, - - title: function(element) { - var node = element.getAttributeNode('title'); - return node.specified ? node.nodeValue : null; - } -}; - -Object.extend(Element._attributeTranslations.values, { - href: Element._attributeTranslations.values._getAttr, - src: Element._attributeTranslations.values._getAttr, - disabled: Element._attributeTranslations.values._flag, - checked: Element._attributeTranslations.values._flag, - readonly: Element._attributeTranslations.values._flag, - multiple: Element._attributeTranslations.values._flag -}); - -Element.Methods.Simulated = { - hasAttribute: function(element, attribute) { - var t = Element._attributeTranslations; - attribute = t.names[attribute] || attribute; - return $(element).getAttributeNode(attribute).specified; - } -}; - -// IE is missing .innerHTML support for TABLE-related elements -if (document.all && !window.opera){ - Element.Methods.update = function(element, html) { - element = $(element); - html = typeof html == 'undefined' ? '' : html.toString(); - var tagName = element.tagName.toUpperCase(); - if (['THEAD','TBODY','TR','TD'].include(tagName)) { - var div = document.createElement('div'); - switch (tagName) { - case 'THEAD': - case 'TBODY': - div.innerHTML = '<table><tbody>' + html.stripScripts() + '</tbody></table>'; - depth = 2; - break; - case 'TR': - div.innerHTML = '<table><tbody><tr>' + html.stripScripts() + '</tr></tbody></table>'; - depth = 3; - break; - case 'TD': - div.innerHTML = '<table><tbody><tr><td>' + html.stripScripts() + '</td></tr></tbody></table>'; - depth = 4; - } - $A(element.childNodes).each(function(node){ - element.removeChild(node) - }); - depth.times(function(){ div = div.firstChild }); - - $A(div.childNodes).each( - function(node){ element.appendChild(node) }); - } else { - element.innerHTML = html.stripScripts(); - } - setTimeout(function() {html.evalScripts()}, 10); - return element; - } -}; - -Object.extend(Element, Element.Methods); - -var _nativeExtensions = false; - -if(/Konqueror|Safari|KHTML/.test(navigator.userAgent)) - ['', 'Form', 'Input', 'TextArea', 'Select'].each(function(tag) { - var className = 'HTML' + tag + 'Element'; - if(window[className]) return; - var klass = window[className] = {}; - klass.prototype = document.createElement(tag ? tag.toLowerCase() : 'div').__proto__; - }); - -Element.addMethods = function(methods) { - Object.extend(Element.Methods, methods || {}); - - function copy(methods, destination, onlyIfAbsent) { - onlyIfAbsent = onlyIfAbsent || false; - var cache = Element.extend.cache; - for (var property in methods) { - var value = methods[property]; - if (!onlyIfAbsent || !(property in destination)) - destination[property] = cache.findOrStore(value); - } - } - - if (typeof HTMLElement != 'undefined') { - copy(Element.Methods, HTMLElement.prototype); - copy(Element.Methods.Simulated, HTMLElement.prototype, true); - copy(Form.Methods, HTMLFormElement.prototype); - [HTMLInputElement, HTMLTextAreaElement, HTMLSelectElement].each(function(klass) { - copy(Form.Element.Methods, klass.prototype); - }); - _nativeExtensions = true; - } -} - -var Toggle = new Object(); -Toggle.display = Element.toggle; - -/*--------------------------------------------------------------------------*/ - -Abstract.Insertion = function(adjacency) { - this.adjacency = adjacency; -} - -Abstract.Insertion.prototype = { - initialize: function(element, content) { - this.element = $(element); - this.content = content.stripScripts(); - - if (this.adjacency && this.element.insertAdjacentHTML) { - try { - this.element.insertAdjacentHTML(this.adjacency, this.content); - } catch (e) { - var tagName = this.element.tagName.toUpperCase(); - if (['TBODY', 'TR'].include(tagName)) { - this.insertContent(this.contentFromAnonymousTable()); - } else { - throw e; - } - } - } else { - this.range = this.element.ownerDocument.createRange(); - if (this.initializeRange) this.initializeRange(); - this.insertContent([this.range.createContextualFragment(this.content)]); - } - - setTimeout(function() {content.evalScripts()}, 10); - }, - - contentFromAnonymousTable: function() { - var div = document.createElement('div'); - div.innerHTML = '<table><tbody>' + this.content + '</tbody></table>'; - return $A(div.childNodes[0].childNodes[0].childNodes); - } -} - -var Insertion = new Object(); - -Insertion.Before = Class.create(); -Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), { - initializeRange: function() { - this.range.setStartBefore(this.element); - }, - - insertContent: function(fragments) { - fragments.each((function(fragment) { - this.element.parentNode.insertBefore(fragment, this.element); - }).bind(this)); - } -}); - -Insertion.Top = Class.create(); -Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), { - initializeRange: function() { - this.range.selectNodeContents(this.element); - this.range.collapse(true); - }, - - insertContent: function(fragments) { - fragments.reverse(false).each((function(fragment) { - this.element.insertBefore(fragment, this.element.firstChild); - }).bind(this)); - } -}); - -Insertion.Bottom = Class.create(); -Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), { - initializeRange: function() { - this.range.selectNodeContents(this.element); - this.range.collapse(this.element); - }, - - insertContent: function(fragments) { - fragments.each((function(fragment) { - this.element.appendChild(fragment); - }).bind(this)); - } -}); - -Insertion.After = Class.create(); -Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), { - initializeRange: function() { - this.range.setStartAfter(this.element); - }, - - insertContent: function(fragments) { - fragments.each((function(fragment) { - this.element.parentNode.insertBefore(fragment, - this.element.nextSibling); - }).bind(this)); - } -}); - -/*--------------------------------------------------------------------------*/ - -Element.ClassNames = Class.create(); -Element.ClassNames.prototype = { - initialize: function(element) { - this.element = $(element); - }, - - _each: function(iterator) { - this.element.className.split(/\s+/).select(function(name) { - return name.length > 0; - })._each(iterator); - }, - - set: function(className) { - this.element.className = className; - }, - - add: function(classNameToAdd) { - if (this.include(classNameToAdd)) return; - this.set($A(this).concat(classNameToAdd).join(' ')); - }, - - remove: function(classNameToRemove) { - if (!this.include(classNameToRemove)) return; - this.set($A(this).without(classNameToRemove).join(' ')); - }, - - toString: function() { - return $A(this).join(' '); - } -}; - -Object.extend(Element.ClassNames.prototype, Enumerable); -var Selector = Class.create(); -Selector.prototype = { - initialize: function(expression) { - this.params = {classNames: []}; - this.expression = expression.toString().strip(); - this.parseExpression(); - this.compileMatcher(); - }, - - parseExpression: function() { - function abort(message) { throw 'Parse error in selector: ' + message; } - - if (this.expression == '') abort('empty expression'); - - var params = this.params, expr = this.expression, match, modifier, clause, rest; - while (match = expr.match(/^(.*)\[([a-z0-9_:-]+?)(?:([~\|!]?=)(?:"([^"]*)"|([^\]\s]*)))?\]$/i)) { - params.attributes = params.attributes || []; - params.attributes.push({name: match[2], operator: match[3], value: match[4] || match[5] || ''}); - expr = match[1]; - } - - if (expr == '*') return this.params.wildcard = true; - - while (match = expr.match(/^([^a-z0-9_-])?([a-z0-9_-]+)(.*)/i)) { - modifier = match[1], clause = match[2], rest = match[3]; - switch (modifier) { - case '#': params.id = clause; break; - case '.': params.classNames.push(clause); break; - case '': - case undefined: params.tagName = clause.toUpperCase(); break; - default: abort(expr.inspect()); - } - expr = rest; - } - - if (expr.length > 0) abort(expr.inspect()); - }, - - buildMatchExpression: function() { - var params = this.params, conditions = [], clause; - - if (params.wildcard) - conditions.push('true'); - if (clause = params.id) - conditions.push('element.readAttribute("id") == ' + clause.inspect()); - if (clause = params.tagName) - conditions.push('element.tagName.toUpperCase() == ' + clause.inspect()); - if ((clause = params.classNames).length > 0) - for (var i = 0, length = clause.length; i < length; i++) - conditions.push('element.hasClassName(' + clause[i].inspect() + ')'); - if (clause = params.attributes) { - clause.each(function(attribute) { - var value = 'element.readAttribute(' + attribute.name.inspect() + ')'; - var splitValueBy = function(delimiter) { - return value + ' && ' + value + '.split(' + delimiter.inspect() + ')'; - } - - switch (attribute.operator) { - case '=': conditions.push(value + ' == ' + attribute.value.inspect()); break; - case '~=': conditions.push(splitValueBy(' ') + '.include(' + attribute.value.inspect() + ')'); break; - case '|=': conditions.push( - splitValueBy('-') + '.first().toUpperCase() == ' + attribute.value.toUpperCase().inspect() - ); break; - case '!=': conditions.push(value + ' != ' + attribute.value.inspect()); break; - case '': - case undefined: conditions.push('element.hasAttribute(' + attribute.name.inspect() + ')'); break; - default: throw 'Unknown operator ' + attribute.operator + ' in selector'; - } - }); - } - - return conditions.join(' && '); - }, - - compileMatcher: function() { - this.match = new Function('element', 'if (!element.tagName) return false; \ - element = $(element); \ - return ' + this.buildMatchExpression()); - }, - - findElements: function(scope) { - var element; - - if (element = $(this.params.id)) - if (this.match(element)) - if (!scope || Element.childOf(element, scope)) - return [element]; - - scope = (scope || document).getElementsByTagName(this.params.tagName || '*'); - - var results = []; - for (var i = 0, length = scope.length; i < length; i++) - if (this.match(element = scope[i])) - results.push(Element.extend(element)); - - return results; - }, - - toString: function() { - return this.expression; - } -} - -Object.extend(Selector, { - matchElements: function(elements, expression) { - var selector = new Selector(expression); - return elements.select(selector.match.bind(selector)).map(Element.extend); - }, - - findElement: function(elements, expression, index) { - if (typeof expression == 'number') index = expression, expression = false; - return Selector.matchElements(elements, expression || '*')[index || 0]; - }, - - findChildElements: function(element, expressions) { - return expressions.map(function(expression) { - return expression.match(/[^\s"]+(?:"[^"]*"[^\s"]+)*/g).inject([null], function(results, expr) { - var selector = new Selector(expr); - return results.inject([], function(elements, result) { - return elements.concat(selector.findElements(result || element)); - }); - }); - }).flatten(); - } -}); - -function $$() { - return Selector.findChildElements(document, $A(arguments)); -} -var Form = { - reset: function(form) { - $(form).reset(); - return form; - }, - - serializeElements: function(elements, getHash) { - var data = elements.inject({}, function(result, element) { - if (!element.disabled && element.name) { - var key = element.name, value = $(element).getValue(); - if (value != undefined) { - if (result[key]) { - if (result[key].constructor != Array) result[key] = [result[key]]; - result[key].push(value); - } - else result[key] = value; - } - } - return result; - }); - - return getHash ? data : Hash.toQueryString(data); - } -}; - -Form.Methods = { - serialize: function(form, getHash) { - return Form.serializeElements(Form.getElements(form), getHash); - }, - - getElements: function(form) { - return $A($(form).getElementsByTagName('*')).inject([], - function(elements, child) { - if (Form.Element.Serializers[child.tagName.toLowerCase()]) - elements.push(Element.extend(child)); - return elements; - } - ); - }, - - getInputs: function(form, typeName, name) { - form = $(form); - var inputs = form.getElementsByTagName('input'); - - if (!typeName && !name) return $A(inputs).map(Element.extend); - - for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { - var input = inputs[i]; - if ((typeName && input.type != typeName) || (name && input.name != name)) - continue; - matchingInputs.push(Element.extend(input)); - } - - return matchingInputs; - }, - - disable: function(form) { - form = $(form); - form.getElements().each(function(element) { - element.blur(); - element.disabled = 'true'; - }); - return form; - }, - - enable: function(form) { - form = $(form); - form.getElements().each(function(element) { - element.disabled = ''; - }); - return form; - }, - - findFirstElement: function(form) { - return $(form).getElements().find(function(element) { - return element.type != 'hidden' && !element.disabled && - ['input', 'select', 'textarea'].include(element.tagName.toLowerCase()); - }); - }, - - focusFirstElement: function(form) { - form = $(form); - form.findFirstElement().activate(); - return form; - } -} - -Object.extend(Form, Form.Methods); - -/*--------------------------------------------------------------------------*/ - -Form.Element = { - focus: function(element) { - $(element).focus(); - return element; - }, - - select: function(element) { - $(element).select(); - return element; - } -} - -Form.Element.Methods = { - serialize: function(element) { - element = $(element); - if (!element.disabled && element.name) { - var value = element.getValue(); - if (value != undefined) { - var pair = {}; - pair[element.name] = value; - return Hash.toQueryString(pair); - } - } - return ''; - }, - - getValue: function(element) { - element = $(element); - var method = element.tagName.toLowerCase(); - return Form.Element.Serializers[method](element); - }, - - clear: function(element) { - $(element).value = ''; - return element; - }, - - present: function(element) { - return $(element).value != ''; - }, - - activate: function(element) { - element = $(element); - element.focus(); - if (element.select && ( element.tagName.toLowerCase() != 'input' || - !['button', 'reset', 'submit'].include(element.type) ) ) - element.select(); - return element; - }, - - disable: function(element) { - element = $(element); - element.disabled = true; - return element; - }, - - enable: function(element) { - element = $(element); - element.blur(); - element.disabled = false; - return element; - } -} - -Object.extend(Form.Element, Form.Element.Methods); -var Field = Form.Element; -var $F = Form.Element.getValue; - -/*--------------------------------------------------------------------------*/ - -Form.Element.Serializers = { - input: function(element) { - switch (element.type.toLowerCase()) { - case 'checkbox': - case 'radio': - return Form.Element.Serializers.inputSelector(element); - default: - return Form.Element.Serializers.textarea(element); - } - }, - - inputSelector: function(element) { - return element.checked ? element.value : null; - }, - - textarea: function(element) { - return element.value; - }, - - select: function(element) { - return this[element.type == 'select-one' ? - 'selectOne' : 'selectMany'](element); - }, - - selectOne: function(element) { - var index = element.selectedIndex; - return index >= 0 ? this.optionValue(element.options[index]) : null; - }, - - selectMany: function(element) { - var values, length = element.length; - if (!length) return null; - - for (var i = 0, values = []; i < length; i++) { - var opt = element.options[i]; - if (opt.selected) values.push(this.optionValue(opt)); - } - return values; - }, - - optionValue: function(opt) { - // extend element because hasAttribute may not be native - return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text; - } -} - -/*--------------------------------------------------------------------------*/ - -Abstract.TimedObserver = function() {} -Abstract.TimedObserver.prototype = { - initialize: function(element, frequency, callback) { - this.frequency = frequency; - this.element = $(element); - this.callback = callback; - - this.lastValue = this.getValue(); - this.registerCallback(); - }, - - registerCallback: function() { - setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); - }, - - onTimerEvent: function() { - var value = this.getValue(); - var changed = ('string' == typeof this.lastValue && 'string' == typeof value - ? this.lastValue != value : String(this.lastValue) != String(value)); - if (changed) { - this.callback(this.element, value); - this.lastValue = value; - } - } -} - -Form.Element.Observer = Class.create(); -Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), { - getValue: function() { - return Form.Element.getValue(this.element); - } -}); - -Form.Observer = Class.create(); -Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), { - getValue: function() { - return Form.serialize(this.element); - } -}); - -/*--------------------------------------------------------------------------*/ - -Abstract.EventObserver = function() {} -Abstract.EventObserver.prototype = { - initialize: function(element, callback) { - this.element = $(element); - this.callback = callback; - - this.lastValue = this.getValue(); - if (this.element.tagName.toLowerCase() == 'form') - this.registerFormCallbacks(); - else - this.registerCallback(this.element); - }, - - onElementEvent: function() { - var value = this.getValue(); - if (this.lastValue != value) { - this.callback(this.element, value); - this.lastValue = value; - } - }, - - registerFormCallbacks: function() { - Form.getElements(this.element).each(this.registerCallback.bind(this)); - }, - - registerCallback: function(element) { - if (element.type) { - switch (element.type.toLowerCase()) { - case 'checkbox': - case 'radio': - Event.observe(element, 'click', this.onElementEvent.bind(this)); - break; - default: - Event.observe(element, 'change', this.onElementEvent.bind(this)); - break; - } - } - } -} - -Form.Element.EventObserver = Class.create(); -Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), { - getValue: function() { - return Form.Element.getValue(this.element); - } -}); - -Form.EventObserver = Class.create(); -Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), { - getValue: function() { - return Form.serialize(this.element); - } -}); -if (!window.Event) { - var Event = new Object(); -} - -Object.extend(Event, { - KEY_BACKSPACE: 8, - KEY_TAB: 9, - KEY_RETURN: 13, - KEY_ESC: 27, - KEY_LEFT: 37, - KEY_UP: 38, - KEY_RIGHT: 39, - KEY_DOWN: 40, - KEY_DELETE: 46, - KEY_HOME: 36, - KEY_END: 35, - KEY_PAGEUP: 33, - KEY_PAGEDOWN: 34, - - element: function(event) { - return event.target || event.srcElement; - }, - - isLeftClick: function(event) { - return (((event.which) && (event.which == 1)) || - ((event.button) && (event.button == 1))); - }, - - pointerX: function(event) { - return event.pageX || (event.clientX + - (document.documentElement.scrollLeft || document.body.scrollLeft)); - }, - - pointerY: function(event) { - return event.pageY || (event.clientY + - (document.documentElement.scrollTop || document.body.scrollTop)); - }, - - stop: function(event) { - if (event.preventDefault) { - event.preventDefault(); - event.stopPropagation(); - } else { - event.returnValue = false; - event.cancelBubble = true; - } - }, - - // find the first node with the given tagName, starting from the - // node the event was triggered on; traverses the DOM upwards - findElement: function(event, tagName) { - var element = Event.element(event); - while (element.parentNode && (!element.tagName || - (element.tagName.toUpperCase() != tagName.toUpperCase()))) - element = element.parentNode; - return element; - }, - - observers: false, - - _observeAndCache: function(element, name, observer, useCapture) { - if (!this.observers) this.observers = []; - if (element.addEventListener) { - this.observers.push([element, name, observer, useCapture]); - element.addEventListener(name, observer, useCapture); - } else if (element.attachEvent) { - this.observers.push([element, name, observer, useCapture]); - element.attachEvent('on' + name, observer); - } - }, - - unloadCache: function() { - if (!Event.observers) return; - for (var i = 0, length = Event.observers.length; i < length; i++) { - Event.stopObserving.apply(this, Event.observers[i]); - Event.observers[i][0] = null; - } - Event.observers = false; - }, - - observe: function(element, name, observer, useCapture) { - element = $(element); - useCapture = useCapture || false; - - if (name == 'keypress' && - (navigator.appVersion.match(/Konqueror|Safari|KHTML/) - || element.attachEvent)) - name = 'keydown'; - - Event._observeAndCache(element, name, observer, useCapture); - }, - - stopObserving: function(element, name, observer, useCapture) { - element = $(element); - useCapture = useCapture || false; - - if (name == 'keypress' && - (navigator.appVersion.match(/Konqueror|Safari|KHTML/) - || element.detachEvent)) - name = 'keydown'; - - if (element.removeEventListener) { - element.removeEventListener(name, observer, useCapture); - } else if (element.detachEvent) { - try { - element.detachEvent('on' + name, observer); - } catch (e) {} - } - } -}); - -/* prevent memory leaks in IE */ -if (navigator.appVersion.match(/\bMSIE\b/)) - Event.observe(window, 'unload', Event.unloadCache, false); -var Position = { - // set to true if needed, warning: firefox performance problems - // NOT neeeded for page scrolling, only if draggable contained in - // scrollable elements - includeScrollOffsets: false, - - // must be called before calling withinIncludingScrolloffset, every time the - // page is scrolled - prepare: function() { - this.deltaX = window.pageXOffset - || document.documentElement.scrollLeft - || document.body.scrollLeft - || 0; - this.deltaY = window.pageYOffset - || document.documentElement.scrollTop - || document.body.scrollTop - || 0; - }, - - realOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.scrollTop || 0; - valueL += element.scrollLeft || 0; - element = element.parentNode; - } while (element); - return [valueL, valueT]; - }, - - cumulativeOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - element = element.offsetParent; - } while (element); - return [valueL, valueT]; - }, - - positionedOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - element = element.offsetParent; - if (element) { - if(element.tagName=='BODY') break; - var p = Element.getStyle(element, 'position'); - if (p == 'relative' || p == 'absolute') break; - } - } while (element); - return [valueL, valueT]; - }, - - offsetParent: function(element) { - if (element.offsetParent) return element.offsetParent; - if (element == document.body) return element; - - while ((element = element.parentNode) && element != document.body) - if (Element.getStyle(element, 'position') != 'static') - return element; - - return document.body; - }, - - // caches x/y coordinate pair to use with overlap - within: function(element, x, y) { - if (this.includeScrollOffsets) - return this.withinIncludingScrolloffsets(element, x, y); - this.xcomp = x; - this.ycomp = y; - this.offset = this.cumulativeOffset(element); - - return (y >= this.offset[1] && - y < this.offset[1] + element.offsetHeight && - x >= this.offset[0] && - x < this.offset[0] + element.offsetWidth); - }, - - withinIncludingScrolloffsets: function(element, x, y) { - var offsetcache = this.realOffset(element); - - this.xcomp = x + offsetcache[0] - this.deltaX; - this.ycomp = y + offsetcache[1] - this.deltaY; - this.offset = this.cumulativeOffset(element); - - return (this.ycomp >= this.offset[1] && - this.ycomp < this.offset[1] + element.offsetHeight && - this.xcomp >= this.offset[0] && - this.xcomp < this.offset[0] + element.offsetWidth); - }, - - // within must be called directly before - overlap: function(mode, element) { - if (!mode) return 0; - if (mode == 'vertical') - return ((this.offset[1] + element.offsetHeight) - this.ycomp) / - element.offsetHeight; - if (mode == 'horizontal') - return ((this.offset[0] + element.offsetWidth) - this.xcomp) / - element.offsetWidth; - }, - - page: function(forElement) { - var valueT = 0, valueL = 0; - - var element = forElement; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - - // Safari fix - if (element.offsetParent==document.body) - if (Element.getStyle(element,'position')=='absolute') break; - - } while (element = element.offsetParent); - - element = forElement; - do { - if (!window.opera || element.tagName=='BODY') { - valueT -= element.scrollTop || 0; - valueL -= element.scrollLeft || 0; - } - } while (element = element.parentNode); - - return [valueL, valueT]; - }, - - clone: function(source, target) { - var options = Object.extend({ - setLeft: true, - setTop: true, - setWidth: true, - setHeight: true, - offsetTop: 0, - offsetLeft: 0 - }, arguments[2] || {}) - - // find page position of source - source = $(source); - var p = Position.page(source); - - // find coordinate system to use - target = $(target); - var delta = [0, 0]; - var parent = null; - // delta [0,0] will do fine with position: fixed elements, - // position:absolute needs offsetParent deltas - if (Element.getStyle(target,'position') == 'absolute') { - parent = Position.offsetParent(target); - delta = Position.page(parent); - } - - // correct by body offsets (fixes Safari) - if (parent == document.body) { - delta[0] -= document.body.offsetLeft; - delta[1] -= document.body.offsetTop; - } - - // set position - if(options.setLeft) target.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; - if(options.setTop) target.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; - if(options.setWidth) target.style.width = source.offsetWidth + 'px'; - if(options.setHeight) target.style.height = source.offsetHeight + 'px'; - }, - - absolutize: function(element) { - element = $(element); - if (element.style.position == 'absolute') return; - Position.prepare(); - - var offsets = Position.positionedOffset(element); - var top = offsets[1]; - var left = offsets[0]; - var width = element.clientWidth; - var height = element.clientHeight; - - element._originalLeft = left - parseFloat(element.style.left || 0); - element._originalTop = top - parseFloat(element.style.top || 0); - element._originalWidth = element.style.width; - element._originalHeight = element.style.height; - - element.style.position = 'absolute'; - element.style.top = top + 'px'; - element.style.left = left + 'px'; - element.style.width = width + 'px'; - element.style.height = height + 'px'; - }, - - relativize: function(element) { - element = $(element); - if (element.style.position == 'relative') return; - Position.prepare(); - - element.style.position = 'relative'; - var top = parseFloat(element.style.top || 0) - (element._originalTop || 0); - var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0); - - element.style.top = top + 'px'; - element.style.left = left + 'px'; - element.style.height = element._originalHeight; - element.style.width = element._originalWidth; - } -} - -// Safari returns margins on body which is incorrect if the child is absolutely -// positioned. For performance reasons, redefine Position.cumulativeOffset for -// KHTML/WebKit only. -if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) { - Position.cumulativeOffset = function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - if (element.offsetParent == document.body) - if (Element.getStyle(element, 'position') == 'absolute') break; - - element = element.offsetParent; - } while (element); - - return [valueL, valueT]; - } -} - -Element.addMethods(); \ No newline at end of file diff --git a/lib/web/extjs/adapter/prototype/scriptaculous.js b/lib/web/extjs/adapter/prototype/scriptaculous.js deleted file mode 100644 index 442c1e838c546ed14097f5d8553670104dd496fd..0000000000000000000000000000000000000000 --- a/lib/web/extjs/adapter/prototype/scriptaculous.js +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Ext JS Library 1.0 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -// script.aculo.us scriptaculous.js v1.7.0, Fri Jan 19 19:16:36 CET 2007 - -// Copyright (c) 2005, 2006 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) -// -// Permission is hereby granted, free of charge, to any person obtaining -// a copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to -// permit persons to whom the Software is furnished to do so, subject to -// the following conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// For details, see the script.aculo.us web site: http://script.aculo.us/ - -var Scriptaculous = { - Version: '1.7.0', - require: function(libraryName) { - // inserting via DOM fails in Safari 2.0, so brute force approach - document.write('<script type="text/javascript" src="'+libraryName+'"></script>'); - }, - load: function() { - if((typeof Prototype=='undefined') || - (typeof Element == 'undefined') || - (typeof Element.Methods=='undefined') || - parseFloat(Prototype.Version.split(".")[0] + "." + - Prototype.Version.split(".")[1]) < 1.5) - throw("script.aculo.us requires the Prototype JavaScript framework >= 1.5.0"); - - $A(document.getElementsByTagName("script")).findAll( function(s) { - return (s.src && s.src.match(/scriptaculous\.js(\?.*)?$/)) - }).each( function(s) { - var path = s.src.replace(/scriptaculous\.js(\?.*)?$/,''); - var includes = s.src.match(/\?.*load=([a-z,]*)/); - (includes ? includes[1] : 'builder,effects,dragdrop,controls,slider').split(',').each( - function(include) { Scriptaculous.require(path+include+'.js') }); - }); - } -} - -Scriptaculous.load(); \ No newline at end of file diff --git a/lib/web/extjs/adapter/yui/ext-yui-adapter.js b/lib/web/extjs/adapter/yui/ext-yui-adapter.js deleted file mode 100644 index 816ce9a4348ba78eb217f96a58b584f2bfd14f36..0000000000000000000000000000000000000000 --- a/lib/web/extjs/adapter/yui/ext-yui-adapter.js +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext={};window["undefined"]=window["undefined"];Ext.apply=function(o,c,defaults){if(defaults){Ext.apply(o,defaults);} -if(o&&c&&typeof c=='object'){for(var p in c){o[p]=c[p];}} -return o;};(function(){var idSeed=0;var ua=navigator.userAgent.toLowerCase();var isStrict=document.compatMode=="CSS1Compat",isOpera=ua.indexOf("opera")>-1,isSafari=(/webkit|khtml/).test(ua),isIE=ua.indexOf("msie")>-1,isIE7=ua.indexOf("msie 7")>-1,isGecko=!isSafari&&ua.indexOf("gecko")>-1,isBorderBox=isIE&&!isStrict,isWindows=(ua.indexOf("windows")!=-1||ua.indexOf("win32")!=-1),isMac=(ua.indexOf("macintosh")!=-1||ua.indexOf("mac os x")!=-1),isSecure=window.location.href.toLowerCase().indexOf("https")===0;if(isIE&&!isIE7){try{document.execCommand("BackgroundImageCache",false,true);}catch(e){}} -Ext.apply(Ext,{isStrict:isStrict,isSecure:isSecure,isReady:false,enableGarbageCollector:true,SSL_SECURE_URL:"javascript:false",BLANK_IMAGE_URL:"http:/"+"/extjs.com/s.gif",emptyFn:function(){},applyIf:function(o,c){if(o&&c){for(var p in c){if(typeof o[p]=="undefined"){o[p]=c[p];}}} -return o;},addBehaviors:function(o){if(!Ext.isReady){Ext.onReady(function(){Ext.addBehaviors(o);});return;} -var cache={};for(var b in o){var parts=b.split('@');if(parts[1]){var s=parts[0];if(!cache[s]){cache[s]=Ext.select(s);} -cache[s].on(parts[1],o[b]);}} -cache=null;},id:function(el,prefix){prefix=prefix||"ext-gen";el=Ext.getDom(el);var id=prefix+(++idSeed);return el?(el.id?el.id:(el.id=id)):id;},extend:function(){var io=function(o){for(var m in o){this[m]=o[m];}};return function(sb,sp,overrides){if(typeof sp=='object'){overrides=sp;sp=sb;sb=function(){sp.apply(this,arguments);};} -var F=function(){},sbp,spp=sp.prototype;F.prototype=spp;sbp=sb.prototype=new F();sbp.constructor=sb;sb.superclass=spp;if(spp.constructor==Object.prototype.constructor){spp.constructor=sp;} -sb.override=function(o){Ext.override(sb,o);};sbp.override=io;sbp.__extcls=sb;Ext.override(sb,overrides);return sb;};}(),override:function(origclass,overrides){if(overrides){var p=origclass.prototype;for(var method in overrides){p[method]=overrides[method];}}},namespace:function(){var a=arguments,o=null,i,j,d,rt;for(i=0;i<a.length;++i){d=a[i].split(".");rt=d[0];eval('if (typeof '+rt+' == "undefined"){'+rt+' = {};} o = '+rt+';');for(j=1;j<d.length;++j){o[d[j]]=o[d[j]]||{};o=o[d[j]];}}},urlEncode:function(o){if(!o){return"";} -var buf=[];for(var key in o){var ov=o[key];var type=typeof ov;if(type=='undefined'){buf.push(encodeURIComponent(key),"=&");}else if(type!="function"&&type!="object"){buf.push(encodeURIComponent(key),"=",encodeURIComponent(ov),"&");}else if(ov instanceof Array){for(var i=0,len=ov.length;i<len;i++){buf.push(encodeURIComponent(key),"=",encodeURIComponent(ov[i]===undefined?'':ov[i]),"&");}}} -buf.pop();return buf.join("");},urlDecode:function(string,overwrite){if(!string||!string.length){return{};} -var obj={};var pairs=string.split('&');var pair,name,value;for(var i=0,len=pairs.length;i<len;i++){pair=pairs[i].split('=');name=decodeURIComponent(pair[0]);value=decodeURIComponent(pair[1]);if(overwrite!==true){if(typeof obj[name]=="undefined"){obj[name]=value;}else if(typeof obj[name]=="string"){obj[name]=[obj[name]];obj[name].push(value);}else{obj[name].push(value);}}else{obj[name]=value;}} -return obj;},each:function(array,fn,scope){if(typeof array.length=="undefined"||typeof array=="string"){array=[array];} -for(var i=0,len=array.length;i<len;i++){if(fn.call(scope||array[i],array[i],i,array)===false){return i;};}},combine:function(){var as=arguments,l=as.length,r=[];for(var i=0;i<l;i++){var a=as[i];if(a instanceof Array){r=r.concat(a);}else if(a.length!==undefined&&!a.substr){r=r.concat(Array.prototype.slice.call(a,0));}else{r.push(a);}} -return r;},escapeRe:function(s){return s.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1");},callback:function(cb,scope,args,delay){if(typeof cb=="function"){if(delay){cb.defer(delay,scope,args||[]);}else{cb.apply(scope,args||[]);}}},getDom:function(el){if(!el){return null;} -return el.dom?el.dom:(typeof el=='string'?document.getElementById(el):el);},getCmp:function(id){return Ext.ComponentMgr.get(id);},num:function(v,defaultValue){if(typeof v!='number'){return defaultValue;} -return v;},destroy:function(){for(var i=0,a=arguments,len=a.length;i<len;i++){var as=a[i];if(as){if(as.dom){as.removeAllListeners();as.remove();continue;} -if(typeof as.purgeListeners=='function'){as.purgeListeners();} -if(typeof as.destroy=='function'){as.destroy();}}}},isOpera:isOpera,isSafari:isSafari,isIE:isIE,isIE7:isIE7,isGecko:isGecko,isBorderBox:isBorderBox,isWindows:isWindows,isMac:isMac,useShims:((isIE&&!isIE7)||(isGecko&&isMac))});})();Ext.namespace("Ext","Ext.util","Ext.grid","Ext.dd","Ext.tree","Ext.data","Ext.form","Ext.menu","Ext.state","Ext.lib","Ext.layout","Ext.app");Ext.apply(Function.prototype,{createCallback:function(){var args=arguments;var method=this;return function(){return method.apply(window,args);};},createDelegate:function(obj,args,appendArgs){var method=this;return function(){var callArgs=args||arguments;if(appendArgs===true){callArgs=Array.prototype.slice.call(arguments,0);callArgs=callArgs.concat(args);}else if(typeof appendArgs=="number"){callArgs=Array.prototype.slice.call(arguments,0);var applyArgs=[appendArgs,0].concat(args);Array.prototype.splice.apply(callArgs,applyArgs);} -return method.apply(obj||window,callArgs);};},defer:function(millis,obj,args,appendArgs){var fn=this.createDelegate(obj,args,appendArgs);if(millis){return setTimeout(fn,millis);} -fn();return 0;},createSequence:function(fcn,scope){if(typeof fcn!="function"){return this;} -var method=this;return function(){var retval=method.apply(this||window,arguments);fcn.apply(scope||this||window,arguments);return retval;};},createInterceptor:function(fcn,scope){if(typeof fcn!="function"){return this;} -var method=this;return function(){fcn.target=this;fcn.method=method;if(fcn.apply(scope||this||window,arguments)===false){return;} -return method.apply(this||window,arguments);};}});Ext.applyIf(String,{escape:function(string){return string.replace(/('|\\)/g,"\\$1");},leftPad:function(val,size,ch){var result=new String(val);if(ch===null||ch===undefined||ch===''){ch=" ";} -while(result.length<size){result=ch+result;} -return result;},format:function(format){var args=Array.prototype.slice.call(arguments,1);return format.replace(/\{(\d+)\}/g,function(m,i){return args[i];});}});String.prototype.toggle=function(value,other){return this==value?other:value;};Ext.applyIf(Number.prototype,{constrain:function(min,max){return Math.min(Math.max(this,min),max);}});Ext.applyIf(Array.prototype,{indexOf:function(o){for(var i=0,len=this.length;i<len;i++){if(this[i]==o)return i;} -return-1;},remove:function(o){var index=this.indexOf(o);if(index!=-1){this.splice(index,1);}}});Date.prototype.getElapsed=function(date){return Math.abs((date||new Date()).getTime()-this.getTime());}; - -if(typeof YAHOO=="undefined"){throw"Unable to load Ext, core YUI utilities (yahoo, dom, event) not found.";} -(function(){var E=YAHOO.util.Event;var D=YAHOO.util.Dom;var CN=YAHOO.util.Connect;var ES=YAHOO.util.Easing;var A=YAHOO.util.Anim;var libFlyweight;Ext.lib.Dom={getViewWidth:function(full){return full?D.getDocumentWidth():D.getViewportWidth();},getViewHeight:function(full){return full?D.getDocumentHeight():D.getViewportHeight();},isAncestor:function(haystack,needle){return D.isAncestor(haystack,needle);},getRegion:function(el){return D.getRegion(el);},getY:function(el){return this.getXY(el)[1];},getX:function(el){return this.getXY(el)[0];},getXY:function(el){var p,pe,b,scroll,bd=document.body;el=Ext.getDom(el);if(el.getBoundingClientRect){b=el.getBoundingClientRect();scroll=fly(document).getScroll();return[b.left+scroll.left,b.top+scroll.top];}else{var x=el.offsetLeft,y=el.offsetTop;p=el.offsetParent;var hasAbsolute=false;if(p!=el){while(p){x+=p.offsetLeft;y+=p.offsetTop;if(Ext.isSafari&&!hasAbsolute&&fly(p).getStyle("position")=="absolute"){hasAbsolute=true;} -if(Ext.isGecko){pe=fly(p);var bt=parseInt(pe.getStyle("borderTopWidth"),10)||0;var bl=parseInt(pe.getStyle("borderLeftWidth"),10)||0;x+=bl;y+=bt;if(p!=el&&pe.getStyle('overflow')!='visible'){x+=bl;y+=bt;}} -p=p.offsetParent;}} -if(Ext.isSafari&&(hasAbsolute||fly(el).getStyle("position")=="absolute")){x-=bd.offsetLeft;y-=bd.offsetTop;}} -p=el.parentNode;while(p&&p!=bd){if(!Ext.isOpera||(Ext.isOpera&&p.tagName!='TR'&&fly(p).getStyle("display")!="inline")){x-=p.scrollLeft;y-=p.scrollTop;} -p=p.parentNode;} -return[x,y];},setXY:function(el,xy){el=Ext.fly(el,'_setXY');el.position();var pts=el.translatePoints(xy);if(xy[0]!==false){el.dom.style.left=pts.left+"px";} -if(xy[1]!==false){el.dom.style.top=pts.top+"px";}},setX:function(el,x){this.setXY(el,[x,false]);},setY:function(el,y){this.setXY(el,[false,y]);}};Ext.lib.Event={getPageX:function(e){return E.getPageX(e.browserEvent||e);},getPageY:function(e){return E.getPageY(e.browserEvent||e);},getXY:function(e){return E.getXY(e.browserEvent||e);},getTarget:function(e){return E.getTarget(e.browserEvent||e);},getRelatedTarget:function(e){return E.getRelatedTarget(e.browserEvent||e);},on:function(el,eventName,fn,scope,override){E.on(el,eventName,fn,scope,override);},un:function(el,eventName,fn){E.removeListener(el,eventName,fn);},purgeElement:function(el){E.purgeElement(el);},preventDefault:function(e){E.preventDefault(e.browserEvent||e);},stopPropagation:function(e){E.stopPropagation(e.browserEvent||e);},stopEvent:function(e){E.stopEvent(e.browserEvent||e);},onAvailable:function(el,fn,scope,override){return E.onAvailable(el,fn,scope,override);}};Ext.lib.Ajax={request:function(method,uri,cb,data){return CN.asyncRequest(method,uri,cb,data);},formRequest:function(form,uri,cb,data,isUpload,sslUri){CN.setForm(form,isUpload,sslUri);return CN.asyncRequest(Ext.getDom(form).method||'POST',uri,cb,data);},isCallInProgress:function(trans){return CN.isCallInProgress(trans);},abort:function(trans){return CN.abort(trans);},serializeForm:function(form){var d=CN.setForm(form.dom||form);CN.resetFormState();return d;}};Ext.lib.Region=YAHOO.util.Region;Ext.lib.Point=YAHOO.util.Point;Ext.lib.Anim={scroll:function(el,args,duration,easing,cb,scope){this.run(el,args,duration,easing,cb,scope,YAHOO.util.Scroll);},motion:function(el,args,duration,easing,cb,scope){this.run(el,args,duration,easing,cb,scope,YAHOO.util.Motion);},color:function(el,args,duration,easing,cb,scope){this.run(el,args,duration,easing,cb,scope,YAHOO.util.ColorAnim);},run:function(el,args,duration,easing,cb,scope,type){type=type||YAHOO.util.Anim;if(typeof easing=="string"){easing=YAHOO.util.Easing[easing];} -var anim=new type(el,args,duration,easing);anim.animateX(function(){Ext.callback(cb,scope);});return anim;}};function fly(el){if(!libFlyweight){libFlyweight=new Ext.Element.Flyweight();} -libFlyweight.dom=el;return libFlyweight;} -if(Ext.isIE){YAHOO.util.Event.on(window,"unload",function(){var p=Function.prototype;delete p.createSequence;delete p.defer;delete p.createDelegate;delete p.createCallback;delete p.createInterceptor;});} -if(YAHOO.util.Anim){YAHOO.util.Anim.prototype.animateX=function(callback,scope){var f=function(){this.onComplete.unsubscribe(f);if(typeof callback=="function"){callback.call(scope||this,this);}};this.onComplete.subscribe(f,this,true);this.animate();};} -if(YAHOO.util.DragDrop&&Ext.dd.DragDrop){YAHOO.util.DragDrop.defaultPadding=Ext.dd.DragDrop.defaultPadding;YAHOO.util.DragDrop.constrainTo=Ext.dd.DragDrop.constrainTo;} -YAHOO.util.Dom.getXY=function(el){var f=function(el){return Ext.lib.Dom.getXY(el);};return YAHOO.util.Dom.batch(el,f,YAHOO.util.Dom,true);};if(YAHOO.util.AnimMgr){YAHOO.util.AnimMgr.fps=1000;} -YAHOO.util.Region.prototype.adjust=function(t,l,b,r){this.top+=t;this.left+=l;this.right+=r;this.bottom+=b;return this;};})(); diff --git a/lib/web/extjs/adapter/yui/yui-utilities.js b/lib/web/extjs/adapter/yui/yui-utilities.js deleted file mode 100644 index 06e38e7dbcd5ee152d32dc780c678c2121c3e53f..0000000000000000000000000000000000000000 --- a/lib/web/extjs/adapter/yui/yui-utilities.js +++ /dev/null @@ -1,315 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -if(typeof YAHOO=="undefined"){var YAHOO={};} -YAHOO.namespace=function(){var a=arguments,o=null,i,j,d;for(i=0;i<a.length;i=i+1){d=a[i].split(".");o=YAHOO;for(j=(d[0]=="YAHOO")?1:0;j<d.length;j=j+1){o[d[j]]=o[d[j]]||{};o=o[d[j]];}} -return o;};YAHOO.log=function(msg,cat,src){var l=YAHOO.widget.Logger;if(l&&l.log){return l.log(msg,cat,src);}else{return false;}};YAHOO.init=function(){this.namespace("util","widget","example");if(typeof YAHOO_config!="undefined"){var l=YAHOO_config.listener,ls=YAHOO.env.listeners,unique=true,i;if(l){for(i=0;i<ls.length;i=i+1){if(ls[i]==l){unique=false;break;}} -if(unique){ls.push(l);}}}};YAHOO.register=function(name,mainClass,data){var mods=YAHOO.env.modules;if(!mods[name]){mods[name]={versions:[],builds:[]};} -var m=mods[name],v=data.version,b=data.build,ls=YAHOO.env.listeners;m.name=name;m.version=v;m.build=b;m.versions.push(v);m.builds.push(b);m.mainClass=mainClass;for(var i=0;i<ls.length;i=i+1){ls[i](m);} -if(mainClass){mainClass.VERSION=v;mainClass.BUILD=b;}else{YAHOO.log("mainClass is undefined for module "+name,"warn");}};YAHOO.env=YAHOO.env||{modules:[],listeners:[],getVersion:function(name){return YAHOO.env.modules[name]||null;}};YAHOO.lang={isArray:function(obj){if(obj.constructor&&obj.constructor.toString().indexOf('Array')>-1){return true;}else{return YAHOO.lang.isObject(obj)&&obj.constructor==Array;}},isBoolean:function(obj){return typeof obj=='boolean';},isFunction:function(obj){return typeof obj=='function';},isNull:function(obj){return obj===null;},isNumber:function(obj){return typeof obj=='number'&&isFinite(obj);},isObject:function(obj){return typeof obj=='object'||YAHOO.lang.isFunction(obj);},isString:function(obj){return typeof obj=='string';},isUndefined:function(obj){return typeof obj=='undefined';},hasOwnProperty:function(obj,prop){if(Object.prototype.hasOwnProperty){return obj.hasOwnProperty(prop);} -return!YAHOO.lang.isUndefined(obj[prop])&&obj.constructor.prototype[prop]!==obj[prop];},extend:function(subc,superc,overrides){var F=function(){};F.prototype=superc.prototype;subc.prototype=new F();subc.prototype.constructor=subc;subc.superclass=superc.prototype;if(superc.prototype.constructor==Object.prototype.constructor){superc.prototype.constructor=superc;} -if(overrides){for(var i in overrides){subc.prototype[i]=overrides[i];}}},augment:function(r,s){var rp=r.prototype,sp=s.prototype,a=arguments,i,p;if(a[2]){for(i=2;i<a.length;i=i+1){rp[a[i]]=sp[a[i]];}}else{for(p in sp){if(!rp[p]){rp[p]=sp[p];}}}}};YAHOO.init();YAHOO.util.Lang=YAHOO.lang;YAHOO.augment=YAHOO.lang.augment;YAHOO.extend=YAHOO.lang.extend;YAHOO.register("yahoo",YAHOO,{version:"2.2.0",build:"127"}); - -(function(){var Y=YAHOO.util,getStyle,setStyle,id_counter=0,propertyCache={};var ua=navigator.userAgent.toLowerCase(),isOpera=(ua.indexOf('opera')>-1),isSafari=(ua.indexOf('safari')>-1),isGecko=(!isOpera&&!isSafari&&ua.indexOf('gecko')>-1),isIE=(!isOpera&&ua.indexOf('msie')>-1);var patterns={HYPHEN:/(-[a-z])/i};var toCamel=function(property){if(!patterns.HYPHEN.test(property)){return property;} -if(propertyCache[property]){return propertyCache[property];} -while(patterns.HYPHEN.exec(property)){property=property.replace(RegExp.$1,RegExp.$1.substr(1).toUpperCase());} -propertyCache[property]=property;return property;};if(document.defaultView&&document.defaultView.getComputedStyle){getStyle=function(el,property){var value=null;var computed=document.defaultView.getComputedStyle(el,'');if(computed){value=computed[toCamel(property)];} -return el.style[property]||value;};}else if(document.documentElement.currentStyle&&isIE){getStyle=function(el,property){switch(toCamel(property)){case'opacity':var val=100;try{val=el.filters['DXImageTransform.Microsoft.Alpha'].opacity;}catch(e){try{val=el.filters('alpha').opacity;}catch(e){}} -return val/100;break;default:var value=el.currentStyle?el.currentStyle[property]:null;return(el.style[property]||value);}};}else{getStyle=function(el,property){return el.style[property];};} -if(isIE){setStyle=function(el,property,val){switch(property){case'opacity':if(typeof el.style.filter=='string'){el.style.filter='alpha(opacity='+val*100+')';if(!el.currentStyle||!el.currentStyle.hasLayout){el.style.zoom=1;}} -break;default:el.style[property]=val;}};}else{setStyle=function(el,property,val){el.style[property]=val;};} -YAHOO.util.Dom={get:function(el){if(!el){return null;} -if(typeof el!='string'&&!(el instanceof Array)){return el;} -if(typeof el=='string'){return document.getElementById(el);} -else{var collection=[];for(var i=0,len=el.length;i<len;++i){collection[collection.length]=Y.Dom.get(el[i]);} -return collection;} -return null;},getStyle:function(el,property){property=toCamel(property);var f=function(element){return getStyle(element,property);};return Y.Dom.batch(el,f,Y.Dom,true);},setStyle:function(el,property,val){property=toCamel(property);var f=function(element){setStyle(element,property,val);};Y.Dom.batch(el,f,Y.Dom,true);},getXY:function(el){var f=function(el){if(el.parentNode===null||el.offsetParent===null||this.getStyle(el,'display')=='none'){return false;} -var parentNode=null;var pos=[];var box;if(el.getBoundingClientRect){box=el.getBoundingClientRect();var doc=document;if(!this.inDocument(el)&&parent.document!=document){doc=parent.document;if(!this.isAncestor(doc.documentElement,el)){return false;}} -var scrollTop=Math.max(doc.documentElement.scrollTop,doc.body.scrollTop);var scrollLeft=Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft);return[box.left+scrollLeft,box.top+scrollTop];} -else{pos=[el.offsetLeft,el.offsetTop];parentNode=el.offsetParent;if(parentNode!=el){while(parentNode){pos[0]+=parentNode.offsetLeft;pos[1]+=parentNode.offsetTop;parentNode=parentNode.offsetParent;}} -if(isSafari&&this.getStyle(el,'position')=='absolute'){pos[0]-=document.body.offsetLeft;pos[1]-=document.body.offsetTop;}} -if(el.parentNode){parentNode=el.parentNode;} -else{parentNode=null;} -while(parentNode&&parentNode.tagName.toUpperCase()!='BODY'&&parentNode.tagName.toUpperCase()!='HTML') -{if(Y.Dom.getStyle(parentNode,'display')!='inline'){pos[0]-=parentNode.scrollLeft;pos[1]-=parentNode.scrollTop;} -if(parentNode.parentNode){parentNode=parentNode.parentNode;}else{parentNode=null;}} -return pos;};return Y.Dom.batch(el,f,Y.Dom,true);},getX:function(el){var f=function(el){return Y.Dom.getXY(el)[0];};return Y.Dom.batch(el,f,Y.Dom,true);},getY:function(el){var f=function(el){return Y.Dom.getXY(el)[1];};return Y.Dom.batch(el,f,Y.Dom,true);},setXY:function(el,pos,noRetry){var f=function(el){var style_pos=this.getStyle(el,'position');if(style_pos=='static'){this.setStyle(el,'position','relative');style_pos='relative';} -var pageXY=this.getXY(el);if(pageXY===false){return false;} -var delta=[parseInt(this.getStyle(el,'left'),10),parseInt(this.getStyle(el,'top'),10)];if(isNaN(delta[0])){delta[0]=(style_pos=='relative')?0:el.offsetLeft;} -if(isNaN(delta[1])){delta[1]=(style_pos=='relative')?0:el.offsetTop;} -if(pos[0]!==null){el.style.left=pos[0]-pageXY[0]+delta[0]+'px';} -if(pos[1]!==null){el.style.top=pos[1]-pageXY[1]+delta[1]+'px';} -if(!noRetry){var newXY=this.getXY(el);if((pos[0]!==null&&newXY[0]!=pos[0])||(pos[1]!==null&&newXY[1]!=pos[1])){this.setXY(el,pos,true);}}};Y.Dom.batch(el,f,Y.Dom,true);},setX:function(el,x){Y.Dom.setXY(el,[x,null]);},setY:function(el,y){Y.Dom.setXY(el,[null,y]);},getRegion:function(el){var f=function(el){var region=new Y.Region.getRegion(el);return region;};return Y.Dom.batch(el,f,Y.Dom,true);},getClientWidth:function(){return Y.Dom.getViewportWidth();},getClientHeight:function(){return Y.Dom.getViewportHeight();},getElementsByClassName:function(className,tag,root){var method=function(el){return Y.Dom.hasClass(el,className);};return Y.Dom.getElementsBy(method,tag,root);},hasClass:function(el,className){var re=new RegExp('(?:^|\\s+)'+className+'(?:\\s+|$)');var f=function(el){return re.test(el['className']);};return Y.Dom.batch(el,f,Y.Dom,true);},addClass:function(el,className){var f=function(el){if(this.hasClass(el,className)){return;} -el['className']=[el['className'],className].join(' ');};Y.Dom.batch(el,f,Y.Dom,true);},removeClass:function(el,className){var re=new RegExp('(?:^|\\s+)'+className+'(?:\\s+|$)','g');var f=function(el){if(!this.hasClass(el,className)){return;} -var c=el['className'];el['className']=c.replace(re,' ');if(this.hasClass(el,className)){this.removeClass(el,className);}};Y.Dom.batch(el,f,Y.Dom,true);},replaceClass:function(el,oldClassName,newClassName){if(oldClassName===newClassName){return false;} -var re=new RegExp('(?:^|\\s+)'+oldClassName+'(?:\\s+|$)','g');var f=function(el){if(!this.hasClass(el,oldClassName)){this.addClass(el,newClassName);return;} -el['className']=el['className'].replace(re,' '+newClassName+' ');if(this.hasClass(el,oldClassName)){this.replaceClass(el,oldClassName,newClassName);}};Y.Dom.batch(el,f,Y.Dom,true);},generateId:function(el,prefix){prefix=prefix||'yui-gen';el=el||{};var f=function(el){if(el){el=Y.Dom.get(el);}else{el={};} -if(!el.id){el.id=prefix+id_counter++;} -return el.id;};return Y.Dom.batch(el,f,Y.Dom,true);},isAncestor:function(haystack,needle){haystack=Y.Dom.get(haystack);if(!haystack||!needle){return false;} -var f=function(needle){if(haystack.contains&&!isSafari){return haystack.contains(needle);} -else if(haystack.compareDocumentPosition){return!!(haystack.compareDocumentPosition(needle)&16);} -else{var parent=needle.parentNode;while(parent){if(parent==haystack){return true;} -else if(!parent.tagName||parent.tagName.toUpperCase()=='HTML'){return false;} -parent=parent.parentNode;} -return false;}};return Y.Dom.batch(needle,f,Y.Dom,true);},inDocument:function(el){var f=function(el){return this.isAncestor(document.documentElement,el);};return Y.Dom.batch(el,f,Y.Dom,true);},getElementsBy:function(method,tag,root){tag=tag||'*';var nodes=[];if(root){root=Y.Dom.get(root);if(!root){return nodes;}}else{root=document;} -var elements=root.getElementsByTagName(tag);if(!elements.length&&(tag=='*'&&root.all)){elements=root.all;} -for(var i=0,len=elements.length;i<len;++i){if(method(elements[i])){nodes[nodes.length]=elements[i];}} -return nodes;},batch:function(el,method,o,override){var id=el;el=Y.Dom.get(el);var scope=(override)?o:window;if(!el||el.tagName||!el.length){if(!el){return false;} -return method.call(scope,el,o);} -var collection=[];for(var i=0,len=el.length;i<len;++i){if(!el[i]){id=el[i];} -collection[collection.length]=method.call(scope,el[i],o);} -return collection;},getDocumentHeight:function(){var scrollHeight=(document.compatMode!='CSS1Compat')?document.body.scrollHeight:document.documentElement.scrollHeight;var h=Math.max(scrollHeight,Y.Dom.getViewportHeight());return h;},getDocumentWidth:function(){var scrollWidth=(document.compatMode!='CSS1Compat')?document.body.scrollWidth:document.documentElement.scrollWidth;var w=Math.max(scrollWidth,Y.Dom.getViewportWidth());return w;},getViewportHeight:function(){var height=self.innerHeight;var mode=document.compatMode;if((mode||isIE)&&!isOpera){height=(mode=='CSS1Compat')?document.documentElement.clientHeight:document.body.clientHeight;} -return height;},getViewportWidth:function(){var width=self.innerWidth;var mode=document.compatMode;if(mode||isIE){width=(mode=='CSS1Compat')?document.documentElement.clientWidth:document.body.clientWidth;} -return width;}};})();YAHOO.util.Region=function(t,r,b,l){this.top=t;this[1]=t;this.right=r;this.bottom=b;this.left=l;this[0]=l;};YAHOO.util.Region.prototype.contains=function(region){return(region.left>=this.left&®ion.right<=this.right&®ion.top>=this.top&®ion.bottom<=this.bottom);};YAHOO.util.Region.prototype.getArea=function(){return((this.bottom-this.top)*(this.right-this.left));};YAHOO.util.Region.prototype.intersect=function(region){var t=Math.max(this.top,region.top);var r=Math.min(this.right,region.right);var b=Math.min(this.bottom,region.bottom);var l=Math.max(this.left,region.left);if(b>=t&&r>=l){return new YAHOO.util.Region(t,r,b,l);}else{return null;}};YAHOO.util.Region.prototype.union=function(region){var t=Math.min(this.top,region.top);var r=Math.max(this.right,region.right);var b=Math.max(this.bottom,region.bottom);var l=Math.min(this.left,region.left);return new YAHOO.util.Region(t,r,b,l);};YAHOO.util.Region.prototype.toString=function(){return("Region {"+"top: "+this.top+", right: "+this.right+", bottom: "+this.bottom+", left: "+this.left+"}");};YAHOO.util.Region.getRegion=function(el){var p=YAHOO.util.Dom.getXY(el);var t=p[1];var r=p[0]+el.offsetWidth;var b=p[1]+el.offsetHeight;var l=p[0];return new YAHOO.util.Region(t,r,b,l);};YAHOO.util.Point=function(x,y){if(x instanceof Array){y=x[1];x=x[0];} -this.x=this.right=this.left=this[0]=x;this.y=this.top=this.bottom=this[1]=y;};YAHOO.util.Point.prototype=new YAHOO.util.Region();YAHOO.register("dom",YAHOO.util.Dom,{version:"2.2.0",build:"127"}); - -if(!YAHOO.util.Event){YAHOO.util.Event=function(){var loadComplete=false;var listeners=[];var unloadListeners=[];var legacyEvents=[];var legacyHandlers=[];var retryCount=0;var onAvailStack=[];var legacyMap=[];var counter=0;var lastError=null;return{POLL_RETRYS:200,POLL_INTERVAL:20,EL:0,TYPE:1,FN:2,WFN:3,OBJ:3,ADJ_SCOPE:4,isSafari:(/KHTML/gi).test(navigator.userAgent),webkit:function(){var v=navigator.userAgent.match(/AppleWebKit\/([^ ]*)/);if(v&&v[1]){return v[1];} -return null;}(),isIE:(!this.webkit&&!navigator.userAgent.match(/opera/gi)&&navigator.userAgent.match(/msie/gi)),_interval:null,startInterval:function(){if(!this._interval){var self=this;var callback=function(){self._tryPreloadAttach();};this._interval=setInterval(callback,this.POLL_INTERVAL);}},onAvailable:function(p_id,p_fn,p_obj,p_override){onAvailStack.push({id:p_id,fn:p_fn,obj:p_obj,override:p_override,checkReady:false});retryCount=this.POLL_RETRYS;this.startInterval();},onContentReady:function(p_id,p_fn,p_obj,p_override){onAvailStack.push({id:p_id,fn:p_fn,obj:p_obj,override:p_override,checkReady:true});retryCount=this.POLL_RETRYS;this.startInterval();},addListener:function(el,sType,fn,obj,override){if(!fn||!fn.call){return false;} -if(this._isValidCollection(el)){var ok=true;for(var i=0,len=el.length;i<len;++i){ok=this.on(el[i],sType,fn,obj,override)&&ok;} -return ok;}else if(typeof el=="string"){var oEl=this.getEl(el);if(oEl){el=oEl;}else{this.onAvailable(el,function(){YAHOO.util.Event.on(el,sType,fn,obj,override);});return true;}} -if(!el){return false;} -if("unload"==sType&&obj!==this){unloadListeners[unloadListeners.length]=[el,sType,fn,obj,override];return true;} -var scope=el;if(override){if(override===true){scope=obj;}else{scope=override;}} -var wrappedFn=function(e){return fn.call(scope,YAHOO.util.Event.getEvent(e),obj);};var li=[el,sType,fn,wrappedFn,scope];var index=listeners.length;listeners[index]=li;if(this.useLegacyEvent(el,sType)){var legacyIndex=this.getLegacyIndex(el,sType);if(legacyIndex==-1||el!=legacyEvents[legacyIndex][0]){legacyIndex=legacyEvents.length;legacyMap[el.id+sType]=legacyIndex;legacyEvents[legacyIndex]=[el,sType,el["on"+sType]];legacyHandlers[legacyIndex]=[];el["on"+sType]=function(e){YAHOO.util.Event.fireLegacyEvent(YAHOO.util.Event.getEvent(e),legacyIndex);};} -legacyHandlers[legacyIndex].push(li);}else{try{this._simpleAdd(el,sType,wrappedFn,false);}catch(ex){this.lastError=ex;this.removeListener(el,sType,fn);return false;}} -return true;},fireLegacyEvent:function(e,legacyIndex){var ok=true,le,lh,li,scope,ret;lh=legacyHandlers[legacyIndex];for(var i=0,len=lh.length;i<len;++i){li=lh[i];if(li&&li[this.WFN]){scope=li[this.ADJ_SCOPE];ret=li[this.WFN].call(scope,e);ok=(ok&&ret);}} -le=legacyEvents[legacyIndex];if(le&&le[2]){le[2](e);} -return ok;},getLegacyIndex:function(el,sType){var key=this.generateId(el)+sType;if(typeof legacyMap[key]=="undefined"){return-1;}else{return legacyMap[key];}},useLegacyEvent:function(el,sType){if(this.webkit&&("click"==sType||"dblclick"==sType)){var v=parseInt(this.webkit,10);if(!isNaN(v)&&v<418){return true;}} -return false;},removeListener:function(el,sType,fn){var i,len;if(typeof el=="string"){el=this.getEl(el);}else if(this._isValidCollection(el)){var ok=true;for(i=0,len=el.length;i<len;++i){ok=(this.removeListener(el[i],sType,fn)&&ok);} -return ok;} -if(!fn||!fn.call){return this.purgeElement(el,false,sType);} -if("unload"==sType){for(i=0,len=unloadListeners.length;i<len;i++){var li=unloadListeners[i];if(li&&li[0]==el&&li[1]==sType&&li[2]==fn){unloadListeners.splice(i,1);return true;}} -return false;} -var cacheItem=null;var index=arguments[3];if("undefined"==typeof index){index=this._getCacheIndex(el,sType,fn);} -if(index>=0){cacheItem=listeners[index];} -if(!el||!cacheItem){return false;} -if(this.useLegacyEvent(el,sType)){var legacyIndex=this.getLegacyIndex(el,sType);var llist=legacyHandlers[legacyIndex];if(llist){for(i=0,len=llist.length;i<len;++i){li=llist[i];if(li&&li[this.EL]==el&&li[this.TYPE]==sType&&li[this.FN]==fn){llist.splice(i,1);break;}}}}else{try{this._simpleRemove(el,sType,cacheItem[this.WFN],false);}catch(ex){this.lastError=ex;return false;}} -delete listeners[index][this.WFN];delete listeners[index][this.FN];listeners.splice(index,1);return true;},getTarget:function(ev,resolveTextNode){var t=ev.target||ev.srcElement;return this.resolveTextNode(t);},resolveTextNode:function(node){if(node&&3==node.nodeType){return node.parentNode;}else{return node;}},getPageX:function(ev){var x=ev.pageX;if(!x&&0!==x){x=ev.clientX||0;if(this.isIE){x+=this._getScrollLeft();}} -return x;},getPageY:function(ev){var y=ev.pageY;if(!y&&0!==y){y=ev.clientY||0;if(this.isIE){y+=this._getScrollTop();}} -return y;},getXY:function(ev){return[this.getPageX(ev),this.getPageY(ev)];},getRelatedTarget:function(ev){var t=ev.relatedTarget;if(!t){if(ev.type=="mouseout"){t=ev.toElement;}else if(ev.type=="mouseover"){t=ev.fromElement;}} -return this.resolveTextNode(t);},getTime:function(ev){if(!ev.time){var t=new Date().getTime();try{ev.time=t;}catch(ex){this.lastError=ex;return t;}} -return ev.time;},stopEvent:function(ev){this.stopPropagation(ev);this.preventDefault(ev);},stopPropagation:function(ev){if(ev.stopPropagation){ev.stopPropagation();}else{ev.cancelBubble=true;}},preventDefault:function(ev){if(ev.preventDefault){ev.preventDefault();}else{ev.returnValue=false;}},getEvent:function(e){var ev=e||window.event;if(!ev){var c=this.getEvent.caller;while(c){ev=c.arguments[0];if(ev&&Event==ev.constructor){break;} -c=c.caller;}} -return ev;},getCharCode:function(ev){return ev.charCode||ev.keyCode||0;},_getCacheIndex:function(el,sType,fn){for(var i=0,len=listeners.length;i<len;++i){var li=listeners[i];if(li&&li[this.FN]==fn&&li[this.EL]==el&&li[this.TYPE]==sType){return i;}} -return-1;},generateId:function(el){var id=el.id;if(!id){id="yuievtautoid-"+counter;++counter;el.id=id;} -return id;},_isValidCollection:function(o){return(o&&o.length&&typeof o!="string"&&!o.tagName&&!o.alert&&typeof o[0]!="undefined");},elCache:{},getEl:function(id){return document.getElementById(id);},clearCache:function(){},_load:function(e){loadComplete=true;var EU=YAHOO.util.Event;if(this.isIE){EU._simpleRemove(window,"load",EU._load);}},_tryPreloadAttach:function(){if(this.locked){return false;} -this.locked=true;var tryAgain=!loadComplete;if(!tryAgain){tryAgain=(retryCount>0);} -var notAvail=[];for(var i=0,len=onAvailStack.length;i<len;++i){var item=onAvailStack[i];if(item){var el=this.getEl(item.id);if(el){if(!item.checkReady||loadComplete||el.nextSibling||(document&&document.body)){var scope=el;if(item.override){if(item.override===true){scope=item.obj;}else{scope=item.override;}} -item.fn.call(scope,item.obj);onAvailStack[i]=null;}}else{notAvail.push(item);}}} -retryCount=(notAvail.length===0)?0:retryCount-1;if(tryAgain){this.startInterval();}else{clearInterval(this._interval);this._interval=null;} -this.locked=false;return true;},purgeElement:function(el,recurse,sType){var elListeners=this.getListeners(el,sType);if(elListeners){for(var i=0,len=elListeners.length;i<len;++i){var l=elListeners[i];this.removeListener(el,l.type,l.fn);}} -if(recurse&&el&&el.childNodes){for(i=0,len=el.childNodes.length;i<len;++i){this.purgeElement(el.childNodes[i],recurse,sType);}}},getListeners:function(el,sType){var results=[],searchLists;if(!sType){searchLists=[listeners,unloadListeners];}else if(sType=="unload"){searchLists=[unloadListeners];}else{searchLists=[listeners];} -for(var j=0;j<searchLists.length;++j){var searchList=searchLists[j];if(searchList&&searchList.length>0){for(var i=0,len=searchList.length;i<len;++i){var l=searchList[i];if(l&&l[this.EL]===el&&(!sType||sType===l[this.TYPE])){results.push({type:l[this.TYPE],fn:l[this.FN],obj:l[this.OBJ],adjust:l[this.ADJ_SCOPE],index:i});}}}} -return(results.length)?results:null;},_unload:function(e){var EU=YAHOO.util.Event,i,j,l,len,index;for(i=0,len=unloadListeners.length;i<len;++i){l=unloadListeners[i];if(l){var scope=window;if(l[EU.ADJ_SCOPE]){if(l[EU.ADJ_SCOPE]===true){scope=l[EU.OBJ];}else{scope=l[EU.ADJ_SCOPE];}} -l[EU.FN].call(scope,EU.getEvent(e),l[EU.OBJ]);unloadListeners[i]=null;l=null;scope=null;}} -unloadListeners=null;if(listeners&&listeners.length>0){j=listeners.length;while(j){index=j-1;l=listeners[index];if(l){EU.removeListener(l[EU.EL],l[EU.TYPE],l[EU.FN],index);} -j=j-1;} -l=null;EU.clearCache();} -for(i=0,len=legacyEvents.length;i<len;++i){legacyEvents[i][0]=null;legacyEvents[i]=null;} -legacyEvents=null;EU._simpleRemove(window,"unload",EU._unload);},_getScrollLeft:function(){return this._getScroll()[1];},_getScrollTop:function(){return this._getScroll()[0];},_getScroll:function(){var dd=document.documentElement,db=document.body;if(dd&&(dd.scrollTop||dd.scrollLeft)){return[dd.scrollTop,dd.scrollLeft];}else if(db){return[db.scrollTop,db.scrollLeft];}else{return[0,0];}},regCE:function(){},_simpleAdd:function(){if(window.addEventListener){return function(el,sType,fn,capture){el.addEventListener(sType,fn,(capture));};}else if(window.attachEvent){return function(el,sType,fn,capture){el.attachEvent("on"+sType,fn);};}else{return function(){};}}(),_simpleRemove:function(){if(window.removeEventListener){return function(el,sType,fn,capture){el.removeEventListener(sType,fn,(capture));};}else if(window.detachEvent){return function(el,sType,fn){el.detachEvent("on"+sType,fn);};}else{return function(){};}}()};}();(function(){var EU=YAHOO.util.Event;EU.on=EU.addListener;if(document&&document.body){EU._load();}else{EU._simpleAdd(window,"load",EU._load);} -EU._simpleAdd(window,"unload",EU._unload);EU._tryPreloadAttach();})();} -YAHOO.util.CustomEvent=function(type,oScope,silent,signature){this.type=type;this.scope=oScope||window;this.silent=silent;this.signature=signature||YAHOO.util.CustomEvent.LIST;this.subscribers=[];if(!this.silent){} -var onsubscribeType="_YUICEOnSubscribe";if(type!==onsubscribeType){this.subscribeEvent=new YAHOO.util.CustomEvent(onsubscribeType,this,true);}};YAHOO.util.CustomEvent.LIST=0;YAHOO.util.CustomEvent.FLAT=1;YAHOO.util.CustomEvent.prototype={subscribe:function(fn,obj,override){if(this.subscribeEvent){this.subscribeEvent.fire(fn,obj,override);} -this.subscribers.push(new YAHOO.util.Subscriber(fn,obj,override));},unsubscribe:function(fn,obj){if(!fn){return this.unsubscribeAll();} -var found=false;for(var i=0,len=this.subscribers.length;i<len;++i){var s=this.subscribers[i];if(s&&s.contains(fn,obj)){this._delete(i);found=true;}} -return found;},fire:function(){var len=this.subscribers.length;if(!len&&this.silent){return true;} -var args=[],ret=true,i;for(i=0;i<arguments.length;++i){args.push(arguments[i]);} -var argslength=args.length;if(!this.silent){} -for(i=0;i<len;++i){var s=this.subscribers[i];if(s){if(!this.silent){} -var scope=s.getScope(this.scope);if(this.signature==YAHOO.util.CustomEvent.FLAT){var param=null;if(args.length>0){param=args[0];} -ret=s.fn.call(scope,param,s.obj);}else{ret=s.fn.call(scope,this.type,args,s.obj);} -if(false===ret){if(!this.silent){} -return false;}}} -return true;},unsubscribeAll:function(){for(var i=0,len=this.subscribers.length;i<len;++i){this._delete(len-1-i);} -return i;},_delete:function(index){var s=this.subscribers[index];if(s){delete s.fn;delete s.obj;} -this.subscribers.splice(index,1);},toString:function(){return"CustomEvent: "+"'"+this.type+"', "+"scope: "+this.scope;}};YAHOO.util.Subscriber=function(fn,obj,override){this.fn=fn;this.obj=obj||null;this.override=override;};YAHOO.util.Subscriber.prototype.getScope=function(defaultScope){if(this.override){if(this.override===true){return this.obj;}else{return this.override;}} -return defaultScope;};YAHOO.util.Subscriber.prototype.contains=function(fn,obj){if(obj){return(this.fn==fn&&this.obj==obj);}else{return(this.fn==fn);}};YAHOO.util.Subscriber.prototype.toString=function(){return"Subscriber { obj: "+(this.obj||"")+", override: "+(this.override||"no")+" }";};YAHOO.util.EventProvider=function(){};YAHOO.util.EventProvider.prototype={__yui_events:null,__yui_subscribers:null,subscribe:function(p_type,p_fn,p_obj,p_override){this.__yui_events=this.__yui_events||{};var ce=this.__yui_events[p_type];if(ce){ce.subscribe(p_fn,p_obj,p_override);}else{this.__yui_subscribers=this.__yui_subscribers||{};var subs=this.__yui_subscribers;if(!subs[p_type]){subs[p_type]=[];} -subs[p_type].push({fn:p_fn,obj:p_obj,override:p_override});}},unsubscribe:function(p_type,p_fn,p_obj){this.__yui_events=this.__yui_events||{};var ce=this.__yui_events[p_type];if(ce){return ce.unsubscribe(p_fn,p_obj);}else{return false;}},unsubscribeAll:function(p_type){return this.unsubscribe(p_type);},createEvent:function(p_type,p_config){this.__yui_events=this.__yui_events||{};var opts=p_config||{};var events=this.__yui_events;if(events[p_type]){}else{var scope=opts.scope||this;var silent=opts.silent||null;var ce=new YAHOO.util.CustomEvent(p_type,scope,silent,YAHOO.util.CustomEvent.FLAT);events[p_type]=ce;if(opts.onSubscribeCallback){ce.subscribeEvent.subscribe(opts.onSubscribeCallback);} -this.__yui_subscribers=this.__yui_subscribers||{};var qs=this.__yui_subscribers[p_type];if(qs){for(var i=0;i<qs.length;++i){ce.subscribe(qs[i].fn,qs[i].obj,qs[i].override);}}} -return events[p_type];},fireEvent:function(p_type,arg1,arg2,etc){this.__yui_events=this.__yui_events||{};var ce=this.__yui_events[p_type];if(ce){var args=[];for(var i=1;i<arguments.length;++i){args.push(arguments[i]);} -return ce.fire.apply(ce,args);}else{return null;}},hasEvent:function(type){if(this.__yui_events){if(this.__yui_events[type]){return true;}} -return false;}};YAHOO.util.KeyListener=function(attachTo,keyData,handler,event){if(!attachTo){}else if(!keyData){}else if(!handler){} -if(!event){event=YAHOO.util.KeyListener.KEYDOWN;} -var keyEvent=new YAHOO.util.CustomEvent("keyPressed");this.enabledEvent=new YAHOO.util.CustomEvent("enabled");this.disabledEvent=new YAHOO.util.CustomEvent("disabled");if(typeof attachTo=='string'){attachTo=document.getElementById(attachTo);} -if(typeof handler=='function'){keyEvent.subscribe(handler);}else{keyEvent.subscribe(handler.fn,handler.scope,handler.correctScope);} -function handleKeyPress(e,obj){if(!keyData.shift){keyData.shift=false;} -if(!keyData.alt){keyData.alt=false;} -if(!keyData.ctrl){keyData.ctrl=false;} -if(e.shiftKey==keyData.shift&&e.altKey==keyData.alt&&e.ctrlKey==keyData.ctrl){var dataItem;var keyPressed;if(keyData.keys instanceof Array){for(var i=0;i<keyData.keys.length;i++){dataItem=keyData.keys[i];if(dataItem==e.charCode){keyEvent.fire(e.charCode,e);break;}else if(dataItem==e.keyCode){keyEvent.fire(e.keyCode,e);break;}}}else{dataItem=keyData.keys;if(dataItem==e.charCode){keyEvent.fire(e.charCode,e);}else if(dataItem==e.keyCode){keyEvent.fire(e.keyCode,e);}}}} -this.enable=function(){if(!this.enabled){YAHOO.util.Event.addListener(attachTo,event,handleKeyPress);this.enabledEvent.fire(keyData);} -this.enabled=true;};this.disable=function(){if(this.enabled){YAHOO.util.Event.removeListener(attachTo,event,handleKeyPress);this.disabledEvent.fire(keyData);} -this.enabled=false;};this.toString=function(){return"KeyListener ["+keyData.keys+"] "+attachTo.tagName+ -(attachTo.id?"["+attachTo.id+"]":"");};};YAHOO.util.KeyListener.KEYDOWN="keydown";YAHOO.util.KeyListener.KEYUP="keyup";YAHOO.register("event",YAHOO.util.Event,{version:"2.2.0",build:"127"}); - -YAHOO.util.Connect={_msxml_progid:['MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP'],_http_headers:{},_has_http_headers:false,_use_default_post_header:true,_default_post_header:'application/x-www-form-urlencoded',_use_default_xhr_header:true,_default_xhr_header:'XMLHttpRequest',_has_default_headers:true,_default_headers:{},_isFormSubmit:false,_isFileUpload:false,_formNode:null,_sFormData:null,_poll:{},_timeOut:{},_polling_interval:50,_transaction_id:0,setProgId:function(id) -{this._msxml_progid.unshift(id);},setDefaultPostHeader:function(b) -{this._use_default_post_header=b;},setDefaultXhrHeader:function(b) -{this._use_default_xhr_header=b;},setPollingInterval:function(i) -{if(typeof i=='number'&&isFinite(i)){this._polling_interval=i;}},createXhrObject:function(transactionId) -{var obj,http;try -{http=new XMLHttpRequest();obj={conn:http,tId:transactionId};} -catch(e) -{for(var i=0;i<this._msxml_progid.length;++i){try -{http=new ActiveXObject(this._msxml_progid[i]);obj={conn:http,tId:transactionId};break;} -catch(e){}}} -finally -{return obj;}},getConnectionObject:function() -{var o;var tId=this._transaction_id;try -{o=this.createXhrObject(tId);if(o){this._transaction_id++;}} -catch(e){} -finally -{return o;}},asyncRequest:function(method,uri,callback,postData) -{var o=this.getConnectionObject();if(!o){return null;} -else{if(this._isFormSubmit){if(this._isFileUpload){this.uploadFile(o.tId,callback,uri,postData);this.releaseObject(o);return;} -if(method.toUpperCase()=='GET'){if(this._sFormData.length!=0){uri+=((uri.indexOf('?')==-1)?'?':'&')+this._sFormData;} -else{uri+="?"+this._sFormData;}} -else if(method.toUpperCase()=='POST'){postData=postData?this._sFormData+"&"+postData:this._sFormData;}} -o.conn.open(method,uri,true);if(this._use_default_xhr_header){if(!this._default_headers['X-Requested-With']){this.initHeader('X-Requested-With',this._default_xhr_header,true);}} -if(this._isFormSubmit||(postData&&this._use_default_post_header)){this.initHeader('Content-Type',this._default_post_header);if(this._isFormSubmit){this.resetFormState();}} -if(this._has_default_headers||this._has_http_headers){this.setHeader(o);} -this.handleReadyState(o,callback);o.conn.send(postData||null);return o;}},handleReadyState:function(o,callback) -{var oConn=this;if(callback&&callback.timeout){this._timeOut[o.tId]=window.setTimeout(function(){oConn.abort(o,callback,true);},callback.timeout);} -this._poll[o.tId]=window.setInterval(function(){if(o.conn&&o.conn.readyState==4){window.clearInterval(oConn._poll[o.tId]);delete oConn._poll[o.tId];if(callback&&callback.timeout){delete oConn._timeOut[o.tId];} -oConn.handleTransactionResponse(o,callback);}},this._polling_interval);},handleTransactionResponse:function(o,callback,isAbort) -{if(!callback){this.releaseObject(o);return;} -var httpStatus,responseObject;try -{if(o.conn.status!==undefined&&o.conn.status!=0){httpStatus=o.conn.status;} -else{httpStatus=13030;}} -catch(e){httpStatus=13030;} -if(httpStatus>=200&&httpStatus<300){responseObject=this.createResponseObject(o,callback.argument);if(callback.success){if(!callback.scope){callback.success(responseObject);} -else{callback.success.apply(callback.scope,[responseObject]);}}} -else{switch(httpStatus){case 12002:case 12029:case 12030:case 12031:case 12152:case 13030:responseObject=this.createExceptionObject(o.tId,callback.argument,(isAbort?isAbort:false));if(callback.failure){if(!callback.scope){callback.failure(responseObject);} -else{callback.failure.apply(callback.scope,[responseObject]);}} -break;default:responseObject=this.createResponseObject(o,callback.argument);if(callback.failure){if(!callback.scope){callback.failure(responseObject);} -else{callback.failure.apply(callback.scope,[responseObject]);}}}} -this.releaseObject(o);responseObject=null;},createResponseObject:function(o,callbackArg) -{var obj={};var headerObj={};try -{var headerStr=o.conn.getAllResponseHeaders();var header=headerStr.split('\n');for(var i=0;i<header.length;i++){var delimitPos=header[i].indexOf(':');if(delimitPos!=-1){headerObj[header[i].substring(0,delimitPos)]=header[i].substring(delimitPos+2);}}} -catch(e){} -obj.tId=o.tId;obj.status=o.conn.status;obj.statusText=o.conn.statusText;obj.getResponseHeader=headerObj;obj.getAllResponseHeaders=headerStr;obj.responseText=o.conn.responseText;obj.responseXML=o.conn.responseXML;if(typeof callbackArg!==undefined){obj.argument=callbackArg;} -return obj;},createExceptionObject:function(tId,callbackArg,isAbort) -{var COMM_CODE=0;var COMM_ERROR='communication failure';var ABORT_CODE=-1;var ABORT_ERROR='transaction aborted';var obj={};obj.tId=tId;if(isAbort){obj.status=ABORT_CODE;obj.statusText=ABORT_ERROR;} -else{obj.status=COMM_CODE;obj.statusText=COMM_ERROR;} -if(callbackArg){obj.argument=callbackArg;} -return obj;},initHeader:function(label,value,isDefault) -{var headerObj=(isDefault)?this._default_headers:this._http_headers;if(headerObj[label]===undefined){headerObj[label]=value;} -else{headerObj[label]=value+","+headerObj[label];} -if(isDefault){this._has_default_headers=true;} -else{this._has_http_headers=true;}},setHeader:function(o) -{if(this._has_default_headers){for(var prop in this._default_headers){if(YAHOO.lang.hasOwnProperty(this._default_headers,prop)){o.conn.setRequestHeader(prop,this._default_headers[prop]);}}} -if(this._has_http_headers){for(var prop in this._http_headers){if(YAHOO.lang.hasOwnProperty(this._http_headers,prop)){o.conn.setRequestHeader(prop,this._http_headers[prop]);}} -delete this._http_headers;this._http_headers={};this._has_http_headers=false;}},resetDefaultHeaders:function(){delete this._default_headers -this._default_headers={};this._has_default_headers=false;},setForm:function(formId,isUpload,secureUri) -{this.resetFormState();var oForm;if(typeof formId=='string'){oForm=(document.getElementById(formId)||document.forms[formId]);} -else if(typeof formId=='object'){oForm=formId;} -else{return;} -if(isUpload){this.createFrame(secureUri?secureUri:null);this._isFormSubmit=true;this._isFileUpload=true;this._formNode=oForm;return;} -var oElement,oName,oValue,oDisabled;var hasSubmit=false;for(var i=0;i<oForm.elements.length;i++){oElement=oForm.elements[i];oDisabled=oForm.elements[i].disabled;oName=oForm.elements[i].name;oValue=oForm.elements[i].value;if(!oDisabled&&oName) -{switch(oElement.type) -{case'select-one':case'select-multiple':for(var j=0;j<oElement.options.length;j++){if(oElement.options[j].selected){if(window.ActiveXObject){this._sFormData+=encodeURIComponent(oName)+'='+encodeURIComponent(oElement.options[j].attributes['value'].specified?oElement.options[j].value:oElement.options[j].text)+'&';} -else{this._sFormData+=encodeURIComponent(oName)+'='+encodeURIComponent(oElement.options[j].hasAttribute('value')?oElement.options[j].value:oElement.options[j].text)+'&';}}} -break;case'radio':case'checkbox':if(oElement.checked){this._sFormData+=encodeURIComponent(oName)+'='+encodeURIComponent(oValue)+'&';} -break;case'file':case undefined:case'reset':case'button':break;case'submit':if(hasSubmit==false){this._sFormData+=encodeURIComponent(oName)+'='+encodeURIComponent(oValue)+'&';hasSubmit=true;} -break;default:this._sFormData+=encodeURIComponent(oName)+'='+encodeURIComponent(oValue)+'&';break;}}} -this._isFormSubmit=true;this._sFormData=this._sFormData.substr(0,this._sFormData.length-1);return this._sFormData;},resetFormState:function(){this._isFormSubmit=false;this._isFileUpload=false;this._formNode=null;this._sFormData="";},createFrame:function(secureUri){var frameId='yuiIO'+this._transaction_id;if(window.ActiveXObject){var io=document.createElement('<iframe id="'+frameId+'" name="'+frameId+'" />');if(typeof secureUri=='boolean'){io.src='javascript:false';} -else if(typeof secureURI=='string'){io.src=secureUri;}} -else{var io=document.createElement('iframe');io.id=frameId;io.name=frameId;} -io.style.position='absolute';io.style.top='-1000px';io.style.left='-1000px';document.body.appendChild(io);},appendPostData:function(postData) -{var formElements=[];var postMessage=postData.split('&');for(var i=0;i<postMessage.length;i++){var delimitPos=postMessage[i].indexOf('=');if(delimitPos!=-1){formElements[i]=document.createElement('input');formElements[i].type='hidden';formElements[i].name=postMessage[i].substring(0,delimitPos);formElements[i].value=postMessage[i].substring(delimitPos+1);this._formNode.appendChild(formElements[i]);}} -return formElements;},uploadFile:function(id,callback,uri,postData){var frameId='yuiIO'+id;var uploadEncoding='multipart/form-data';var io=document.getElementById(frameId);this._formNode.action=uri;this._formNode.method='POST';this._formNode.target=frameId;if(this._formNode.encoding){this._formNode.encoding=uploadEncoding;} -else{this._formNode.enctype=uploadEncoding;} -if(postData){var oElements=this.appendPostData(postData);} -this._formNode.submit();if(oElements&&oElements.length>0){for(var i=0;i<oElements.length;i++){this._formNode.removeChild(oElements[i]);}} -this.resetFormState();var uploadCallback=function() -{var obj={};obj.tId=id;obj.argument=callback.argument;try -{obj.responseText=io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:null;obj.responseXML=io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document;} -catch(e){} -if(callback&&callback.upload){if(!callback.scope){callback.upload(obj);} -else{callback.upload.apply(callback.scope,[obj]);}} -if(YAHOO.util.Event){YAHOO.util.Event.removeListener(io,"load",uploadCallback);} -else if(window.detachEvent){io.detachEvent('onload',uploadCallback);} -else{io.removeEventListener('load',uploadCallback,false);} -setTimeout(function(){document.body.removeChild(io);},100);};if(YAHOO.util.Event){YAHOO.util.Event.addListener(io,"load",uploadCallback);} -else if(window.attachEvent){io.attachEvent('onload',uploadCallback);} -else{io.addEventListener('load',uploadCallback,false);}},abort:function(o,callback,isTimeout) -{if(this.isCallInProgress(o)){o.conn.abort();window.clearInterval(this._poll[o.tId]);delete this._poll[o.tId];if(isTimeout){delete this._timeOut[o.tId];} -this.handleTransactionResponse(o,callback,true);return true;} -else{return false;}},isCallInProgress:function(o) -{if(o.conn){return o.conn.readyState!=4&&o.conn.readyState!=0;} -else{return false;}},releaseObject:function(o) -{o.conn=null;o=null;}};YAHOO.register("connection",YAHOO.widget.Module,{version:"2.2.0",build:"127"}); - -YAHOO.util.Anim=function(el,attributes,duration,method){if(el){this.init(el,attributes,duration,method);}};YAHOO.util.Anim.prototype={toString:function(){var el=this.getEl();var id=el.id||el.tagName;return("Anim "+id);},patterns:{noNegatives:/width|height|opacity|padding/i,offsetAttribute:/^((width|height)|(top|left))$/,defaultUnit:/width|height|top$|bottom$|left$|right$/i,offsetUnit:/\d+(em|%|en|ex|pt|in|cm|mm|pc)$/i},doMethod:function(attr,start,end){return this.method(this.currentFrame,start,end-start,this.totalFrames);},setAttribute:function(attr,val,unit){if(this.patterns.noNegatives.test(attr)){val=(val>0)?val:0;} -YAHOO.util.Dom.setStyle(this.getEl(),attr,val+unit);},getAttribute:function(attr){var el=this.getEl();var val=YAHOO.util.Dom.getStyle(el,attr);if(val!=='auto'&&!this.patterns.offsetUnit.test(val)){return parseFloat(val);} -var a=this.patterns.offsetAttribute.exec(attr)||[];var pos=!!(a[3]);var box=!!(a[2]);if(box||(YAHOO.util.Dom.getStyle(el,'position')=='absolute'&&pos)){val=el['offset'+a[0].charAt(0).toUpperCase()+a[0].substr(1)];}else{val=0;} -return val;},getDefaultUnit:function(attr){if(this.patterns.defaultUnit.test(attr)){return'px';} -return'';},setRuntimeAttribute:function(attr){var start;var end;var attributes=this.attributes;this.runtimeAttributes[attr]={};var isset=function(prop){return(typeof prop!=='undefined');};if(!isset(attributes[attr]['to'])&&!isset(attributes[attr]['by'])){return false;} -start=(isset(attributes[attr]['from']))?attributes[attr]['from']:this.getAttribute(attr);if(isset(attributes[attr]['to'])){end=attributes[attr]['to'];}else if(isset(attributes[attr]['by'])){if(start.constructor==Array){end=[];for(var i=0,len=start.length;i<len;++i){end[i]=start[i]+attributes[attr]['by'][i];}}else{end=start+attributes[attr]['by'];}} -this.runtimeAttributes[attr].start=start;this.runtimeAttributes[attr].end=end;this.runtimeAttributes[attr].unit=(isset(attributes[attr].unit))?attributes[attr]['unit']:this.getDefaultUnit(attr);},init:function(el,attributes,duration,method){var isAnimated=false;var startTime=null;var actualFrames=0;el=YAHOO.util.Dom.get(el);this.attributes=attributes||{};this.duration=duration||1;this.method=method||YAHOO.util.Easing.easeNone;this.useSeconds=true;this.currentFrame=0;this.totalFrames=YAHOO.util.AnimMgr.fps;this.getEl=function(){return el;};this.isAnimated=function(){return isAnimated;};this.getStartTime=function(){return startTime;};this.runtimeAttributes={};this.animate=function(){if(this.isAnimated()){return false;} -this.currentFrame=0;this.totalFrames=(this.useSeconds)?Math.ceil(YAHOO.util.AnimMgr.fps*this.duration):this.duration;YAHOO.util.AnimMgr.registerElement(this);};this.stop=function(finish){if(finish){this.currentFrame=this.totalFrames;this._onTween.fire();} -YAHOO.util.AnimMgr.stop(this);};var onStart=function(){this.onStart.fire();this.runtimeAttributes={};for(var attr in this.attributes){this.setRuntimeAttribute(attr);} -isAnimated=true;actualFrames=0;startTime=new Date();};var onTween=function(){var data={duration:new Date()-this.getStartTime(),currentFrame:this.currentFrame};data.toString=function(){return('duration: '+data.duration+', currentFrame: '+data.currentFrame);};this.onTween.fire(data);var runtimeAttributes=this.runtimeAttributes;for(var attr in runtimeAttributes){this.setAttribute(attr,this.doMethod(attr,runtimeAttributes[attr].start,runtimeAttributes[attr].end),runtimeAttributes[attr].unit);} -actualFrames+=1;};var onComplete=function(){var actual_duration=(new Date()-startTime)/1000;var data={duration:actual_duration,frames:actualFrames,fps:actualFrames/actual_duration};data.toString=function(){return('duration: '+data.duration+', frames: '+data.frames+', fps: '+data.fps);};isAnimated=false;actualFrames=0;this.onComplete.fire(data);};this._onStart=new YAHOO.util.CustomEvent('_start',this,true);this.onStart=new YAHOO.util.CustomEvent('start',this);this.onTween=new YAHOO.util.CustomEvent('tween',this);this._onTween=new YAHOO.util.CustomEvent('_tween',this,true);this.onComplete=new YAHOO.util.CustomEvent('complete',this);this._onComplete=new YAHOO.util.CustomEvent('_complete',this,true);this._onStart.subscribe(onStart);this._onTween.subscribe(onTween);this._onComplete.subscribe(onComplete);}};YAHOO.util.AnimMgr=new function(){var thread=null;var queue=[];var tweenCount=0;this.fps=1000;this.delay=1;this.registerElement=function(tween){queue[queue.length]=tween;tweenCount+=1;tween._onStart.fire();this.start();};this.unRegister=function(tween,index){tween._onComplete.fire();index=index||getIndex(tween);if(index!=-1){queue.splice(index,1);} -tweenCount-=1;if(tweenCount<=0){this.stop();}};this.start=function(){if(thread===null){thread=setInterval(this.run,this.delay);}};this.stop=function(tween){if(!tween){clearInterval(thread);for(var i=0,len=queue.length;i<len;++i){if(queue[0].isAnimated()){this.unRegister(queue[0],0);}} -queue=[];thread=null;tweenCount=0;} -else{this.unRegister(tween);}};this.run=function(){for(var i=0,len=queue.length;i<len;++i){var tween=queue[i];if(!tween||!tween.isAnimated()){continue;} -if(tween.currentFrame<tween.totalFrames||tween.totalFrames===null) -{tween.currentFrame+=1;if(tween.useSeconds){correctFrame(tween);} -tween._onTween.fire();} -else{YAHOO.util.AnimMgr.stop(tween,i);}}};var getIndex=function(anim){for(var i=0,len=queue.length;i<len;++i){if(queue[i]==anim){return i;}} -return-1;};var correctFrame=function(tween){var frames=tween.totalFrames;var frame=tween.currentFrame;var expected=(tween.currentFrame*tween.duration*1000/tween.totalFrames);var elapsed=(new Date()-tween.getStartTime());var tweak=0;if(elapsed<tween.duration*1000){tweak=Math.round((elapsed/expected-1)*tween.currentFrame);}else{tweak=frames-(frame+1);} -if(tweak>0&&isFinite(tweak)){if(tween.currentFrame+tweak>=frames){tweak=frames-(frame+1);} -tween.currentFrame+=tweak;}};};YAHOO.util.Bezier=new function(){this.getPosition=function(points,t){var n=points.length;var tmp=[];for(var i=0;i<n;++i){tmp[i]=[points[i][0],points[i][1]];} -for(var j=1;j<n;++j){for(i=0;i<n-j;++i){tmp[i][0]=(1-t)*tmp[i][0]+t*tmp[parseInt(i+1,10)][0];tmp[i][1]=(1-t)*tmp[i][1]+t*tmp[parseInt(i+1,10)][1];}} -return[tmp[0][0],tmp[0][1]];};};(function(){YAHOO.util.ColorAnim=function(el,attributes,duration,method){YAHOO.util.ColorAnim.superclass.constructor.call(this,el,attributes,duration,method);};YAHOO.extend(YAHOO.util.ColorAnim,YAHOO.util.Anim);var Y=YAHOO.util;var superclass=Y.ColorAnim.superclass;var proto=Y.ColorAnim.prototype;proto.toString=function(){var el=this.getEl();var id=el.id||el.tagName;return("ColorAnim "+id);};proto.patterns.color=/color$/i;proto.patterns.rgb=/^rgb\(([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\)$/i;proto.patterns.hex=/^#?([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})$/i;proto.patterns.hex3=/^#?([0-9A-F]{1})([0-9A-F]{1})([0-9A-F]{1})$/i;proto.patterns.transparent=/^transparent|rgba\(0, 0, 0, 0\)$/;proto.parseColor=function(s){if(s.length==3){return s;} -var c=this.patterns.hex.exec(s);if(c&&c.length==4){return[parseInt(c[1],16),parseInt(c[2],16),parseInt(c[3],16)];} -c=this.patterns.rgb.exec(s);if(c&&c.length==4){return[parseInt(c[1],10),parseInt(c[2],10),parseInt(c[3],10)];} -c=this.patterns.hex3.exec(s);if(c&&c.length==4){return[parseInt(c[1]+c[1],16),parseInt(c[2]+c[2],16),parseInt(c[3]+c[3],16)];} -return null;};proto.getAttribute=function(attr){var el=this.getEl();if(this.patterns.color.test(attr)){var val=YAHOO.util.Dom.getStyle(el,attr);if(this.patterns.transparent.test(val)){var parent=el.parentNode;val=Y.Dom.getStyle(parent,attr);while(parent&&this.patterns.transparent.test(val)){parent=parent.parentNode;val=Y.Dom.getStyle(parent,attr);if(parent.tagName.toUpperCase()=='HTML'){val='#fff';}}}}else{val=superclass.getAttribute.call(this,attr);} -return val;};proto.doMethod=function(attr,start,end){var val;if(this.patterns.color.test(attr)){val=[];for(var i=0,len=start.length;i<len;++i){val[i]=superclass.doMethod.call(this,attr,start[i],end[i]);} -val='rgb('+Math.floor(val[0])+','+Math.floor(val[1])+','+Math.floor(val[2])+')';} -else{val=superclass.doMethod.call(this,attr,start,end);} -return val;};proto.setRuntimeAttribute=function(attr){superclass.setRuntimeAttribute.call(this,attr);if(this.patterns.color.test(attr)){var attributes=this.attributes;var start=this.parseColor(this.runtimeAttributes[attr].start);var end=this.parseColor(this.runtimeAttributes[attr].end);if(typeof attributes[attr]['to']==='undefined'&&typeof attributes[attr]['by']!=='undefined'){end=this.parseColor(attributes[attr].by);for(var i=0,len=start.length;i<len;++i){end[i]=start[i]+end[i];}} -this.runtimeAttributes[attr].start=start;this.runtimeAttributes[attr].end=end;}};})();YAHOO.util.Easing={easeNone:function(t,b,c,d){return c*t/d+b;},easeIn:function(t,b,c,d){return c*(t/=d)*t+b;},easeOut:function(t,b,c,d){return-c*(t/=d)*(t-2)+b;},easeBoth:function(t,b,c,d){if((t/=d/2)<1){return c/2*t*t+b;} -return-c/2*((--t)*(t-2)-1)+b;},easeInStrong:function(t,b,c,d){return c*(t/=d)*t*t*t+b;},easeOutStrong:function(t,b,c,d){return-c*((t=t/d-1)*t*t*t-1)+b;},easeBothStrong:function(t,b,c,d){if((t/=d/2)<1){return c/2*t*t*t*t+b;} -return-c/2*((t-=2)*t*t*t-2)+b;},elasticIn:function(t,b,c,d,a,p){if(t==0){return b;} -if((t/=d)==1){return b+c;} -if(!p){p=d*.3;} -if(!a||a<Math.abs(c)){a=c;var s=p/4;} -else{var s=p/(2*Math.PI)*Math.asin(c/a);} -return-(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;},elasticOut:function(t,b,c,d,a,p){if(t==0){return b;} -if((t/=d)==1){return b+c;} -if(!p){p=d*.3;} -if(!a||a<Math.abs(c)){a=c;var s=p/4;} -else{var s=p/(2*Math.PI)*Math.asin(c/a);} -return a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b;},elasticBoth:function(t,b,c,d,a,p){if(t==0){return b;} -if((t/=d/2)==2){return b+c;} -if(!p){p=d*(.3*1.5);} -if(!a||a<Math.abs(c)){a=c;var s=p/4;} -else{var s=p/(2*Math.PI)*Math.asin(c/a);} -if(t<1){return-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;} -return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b;},backIn:function(t,b,c,d,s){if(typeof s=='undefined'){s=1.70158;} -return c*(t/=d)*t*((s+1)*t-s)+b;},backOut:function(t,b,c,d,s){if(typeof s=='undefined'){s=1.70158;} -return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b;},backBoth:function(t,b,c,d,s){if(typeof s=='undefined'){s=1.70158;} -if((t/=d/2)<1){return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;} -return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b;},bounceIn:function(t,b,c,d){return c-YAHOO.util.Easing.bounceOut(d-t,0,c,d)+b;},bounceOut:function(t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b;}else if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+.75)+b;}else if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+.9375)+b;} -return c*(7.5625*(t-=(2.625/2.75))*t+.984375)+b;},bounceBoth:function(t,b,c,d){if(t<d/2){return YAHOO.util.Easing.bounceIn(t*2,0,c,d)*.5+b;} -return YAHOO.util.Easing.bounceOut(t*2-d,0,c,d)*.5+c*.5+b;}};(function(){YAHOO.util.Motion=function(el,attributes,duration,method){if(el){YAHOO.util.Motion.superclass.constructor.call(this,el,attributes,duration,method);}};YAHOO.extend(YAHOO.util.Motion,YAHOO.util.ColorAnim);var Y=YAHOO.util;var superclass=Y.Motion.superclass;var proto=Y.Motion.prototype;proto.toString=function(){var el=this.getEl();var id=el.id||el.tagName;return("Motion "+id);};proto.patterns.points=/^points$/i;proto.setAttribute=function(attr,val,unit){if(this.patterns.points.test(attr)){unit=unit||'px';superclass.setAttribute.call(this,'left',val[0],unit);superclass.setAttribute.call(this,'top',val[1],unit);}else{superclass.setAttribute.call(this,attr,val,unit);}};proto.getAttribute=function(attr){if(this.patterns.points.test(attr)){var val=[superclass.getAttribute.call(this,'left'),superclass.getAttribute.call(this,'top')];}else{val=superclass.getAttribute.call(this,attr);} -return val;};proto.doMethod=function(attr,start,end){var val=null;if(this.patterns.points.test(attr)){var t=this.method(this.currentFrame,0,100,this.totalFrames)/100;val=Y.Bezier.getPosition(this.runtimeAttributes[attr],t);}else{val=superclass.doMethod.call(this,attr,start,end);} -return val;};proto.setRuntimeAttribute=function(attr){if(this.patterns.points.test(attr)){var el=this.getEl();var attributes=this.attributes;var start;var control=attributes['points']['control']||[];var end;var i,len;if(control.length>0&&!(control[0]instanceof Array)){control=[control];}else{var tmp=[];for(i=0,len=control.length;i<len;++i){tmp[i]=control[i];} -control=tmp;} -if(Y.Dom.getStyle(el,'position')=='static'){Y.Dom.setStyle(el,'position','relative');} -if(isset(attributes['points']['from'])){Y.Dom.setXY(el,attributes['points']['from']);} -else{Y.Dom.setXY(el,Y.Dom.getXY(el));} -start=this.getAttribute('points');if(isset(attributes['points']['to'])){end=translateValues.call(this,attributes['points']['to'],start);var pageXY=Y.Dom.getXY(this.getEl());for(i=0,len=control.length;i<len;++i){control[i]=translateValues.call(this,control[i],start);}}else if(isset(attributes['points']['by'])){end=[start[0]+attributes['points']['by'][0],start[1]+attributes['points']['by'][1]];for(i=0,len=control.length;i<len;++i){control[i]=[start[0]+control[i][0],start[1]+control[i][1]];}} -this.runtimeAttributes[attr]=[start];if(control.length>0){this.runtimeAttributes[attr]=this.runtimeAttributes[attr].concat(control);} -this.runtimeAttributes[attr][this.runtimeAttributes[attr].length]=end;} -else{superclass.setRuntimeAttribute.call(this,attr);}};var translateValues=function(val,start){var pageXY=Y.Dom.getXY(this.getEl());val=[val[0]-pageXY[0]+start[0],val[1]-pageXY[1]+start[1]];return val;};var isset=function(prop){return(typeof prop!=='undefined');};})();(function(){YAHOO.util.Scroll=function(el,attributes,duration,method){if(el){YAHOO.util.Scroll.superclass.constructor.call(this,el,attributes,duration,method);}};YAHOO.extend(YAHOO.util.Scroll,YAHOO.util.ColorAnim);var Y=YAHOO.util;var superclass=Y.Scroll.superclass;var proto=Y.Scroll.prototype;proto.toString=function(){var el=this.getEl();var id=el.id||el.tagName;return("Scroll "+id);};proto.doMethod=function(attr,start,end){var val=null;if(attr=='scroll'){val=[this.method(this.currentFrame,start[0],end[0]-start[0],this.totalFrames),this.method(this.currentFrame,start[1],end[1]-start[1],this.totalFrames)];}else{val=superclass.doMethod.call(this,attr,start,end);} -return val;};proto.getAttribute=function(attr){var val=null;var el=this.getEl();if(attr=='scroll'){val=[el.scrollLeft,el.scrollTop];}else{val=superclass.getAttribute.call(this,attr);} -return val;};proto.setAttribute=function(attr,val,unit){var el=this.getEl();if(attr=='scroll'){el.scrollLeft=val[0];el.scrollTop=val[1];}else{superclass.setAttribute.call(this,attr,val,unit);}};})();YAHOO.register("animation",YAHOO.util.Anim,{version:"2.2.0",build:"127"}); diff --git a/lib/web/extjs/css/README.txt b/lib/web/extjs/css/README.txt deleted file mode 100644 index 7eaae4405a6850c6f53eba3f57d4ec8510b06e0c..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/README.txt +++ /dev/null @@ -1,3 +0,0 @@ -2006-11-21 jvs: -ext-all.css contains all of the other css files combined and stripped of comments (except themes). - diff --git a/lib/web/extjs/css/basic-dialog.css b/lib/web/extjs/css/basic-dialog.css deleted file mode 100644 index 8af8459fcc3fe76d7194874579568bf33ea5b2a3..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/basic-dialog.css +++ /dev/null @@ -1,286 +0,0 @@ -/* - * Ext JS Library 2.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-dlg-proxy { - background-image: url(../images/default/gradient-bg.gif); - background-color:#c3daf9; - border:1px solid #6593cf; - z-index:10001; - overflow:hidden; - position:absolute; - left:0;top:0; -} -.x-dlg-shadow{ - background:#aaaaaa; - position:absolute; - left:0;top:0; -} -.x-dlg-focus{ - -moz-outline:0 none; - outline:0 none; - width:0; - height:0; - overflow:hidden; - position:absolute; - top:0; - left:0; -} -.x-dlg-mask{ - z-index:10000; - display:none; - position:absolute; - top:0; - left:0; - -moz-opacity: 0.5; - opacity:.50; - filter: alpha(opacity=50); - background-color:#CCC; -} -body.x-body-masked select { - visibility:hidden; -} -body.x-body-masked .x-dlg select { - visibility:visible; -} -.x-dlg{ - z-index:10001; - overflow:hidden; - position:absolute; - left:300;top:0; -} -.x-dlg .x-dlg-hd { - background: url(../images/default/basic-dialog/hd-sprite.gif) repeat-x 0 -82px; - background-color:navy; - color:#FFF; - font:bold 12px "sans serif", tahoma, verdana, helvetica; - overflow:hidden; - padding:5px; - white-space: nowrap; -} -.x-dlg .x-dlg-hd-left { - background: url(../images/default/basic-dialog/hd-sprite.gif) no-repeat 0 -41px; - padding-left:3px; - margin:0; -} -.x-dlg .x-dlg-hd-right { - background: url(../images/default/basic-dialog/hd-sprite.gif) no-repeat right 0; - padding-right:3px; -} -.x-dlg .x-dlg-dlg-body{ - background:url(../images/default/layout/gradient-bg.gif); - border:1px solid #6593cf; - border-top:0 none; - padding:10px; - position:absolute; - top:24px;left:0; - z-index:1; - overflow:hidden; -} -.x-dlg-collapsed .x-resizable-handle{ - display:none; -} -.x-dlg .x-dlg-bd{ - overflow:hidden; -} -.x-dlg .x-dlg-ft{ - overflow:hidden; - padding:5px; - padding-bottom:0; -} - -.x-dlg .x-tabs-body{ - background:white; - overflow:auto; -} -.x-dlg .x-tabs-top .x-tabs-body{ - border:1px solid #6593cf; - border-top:0 none; -} -.x-dlg .x-tabs-bottom .x-tabs-body{ - border:1px solid #6593cf; - border-bottom:0 none; -} -.x-dlg .x-layout-container .x-tabs-body{ - border:0 none; -} -.x-dlg .inner-tab{ - margin:5px; -} -.x-dlg .x-dlg-ft .x-btn{ - margin-right:5px; - float:right; - clear:none; -} -.x-dlg .x-dlg-ft .x-dlg-btns td { - border:0; - padding:0; -} -.x-dlg .x-dlg-ft .x-dlg-btns-right table{ - float:right; - clear:none; -} -.x-dlg .x-dlg-ft .x-dlg-btns-left table{ - float:left; - clear:none; -} -.x-dlg .x-dlg-ft .x-dlg-btns-center{ - text-align:center; /*ie*/ -} -.x-dlg .x-dlg-ft .x-dlg-btns-center table{ - margin:0 auto; /*everyone else*/ -} - - -.x-dlg .x-dlg-ft .x-dlg-btns .x-btn-focus .x-btn-left{ - background-position:0 -147px; -} -.x-dlg .x-dlg-ft .x-dlg-btns .x-btn-focus .x-btn-right{ - background-position:0 -168px; -} -.x-dlg .x-dlg-ft .x-dlg-btns .x-btn-focus .x-btn-center{ - background-position:0 -189px; -} - -.x-dlg .x-dlg-ft .x-dlg-btns .x-btn-click .x-btn-center{ - background-position:0 -126px; -} -.x-dlg .x-dlg-ft .x-dlg-btns .x-btn-click .x-btn-right{ - background-position:0 -84px; -} -.x-dlg .x-dlg-ft .x-dlg-btns .x-btn-click .x-btn-left{ - background-position:0 -63px; -} - -.x-dlg-draggable .x-dlg-hd{ - cursor:move; -} -.x-dlg-closable .x-dlg-hd{ - padding-right:22px; -} -.x-dlg-toolbox { - position:absolute; - top:4px; - right:4px; - z-index:6; - width:40px; - cursor:default; - height:15px; - background:transparent; -} -.x-dlg .x-dlg-close, .x-dlg .x-dlg-collapse { - float:right; - height:15px; - width:15px; - margin:0; - margin-left:2px; - padding:0; - line-height:1px; - font-size:1px; - background-repeat:no-repeat; - cursor:pointer; - visibility:inherit; -} -.x-dlg .x-dlg-close { - background-image:url(../images/default/basic-dialog/close.gif); -} -.x-dlg .x-dlg-collapse { - background-image:url(../images/default/basic-dialog/collapse.gif); -} -.x-dlg-collapsed .x-dlg-collapse { - background-image:url(../images/default/basic-dialog/expand.gif); -} -.x-dlg .x-dlg-close-over, .x-dlg .x-dlg-collapse-over { - -} -.x-dlg div.x-resizable-handle-east{ - background-image:url(../images/default/basic-dialog/e-handle.gif); - border:0; - background-position:right; - margin-right:0; -} -.x-dlg div.x-resizable-handle-south{ - background-image:url(../images/default/sizer/s-handle-dark.gif); - border:0; - height:6px; -} -.x-dlg div.x-resizable-handle-west{ - background-image:url(../images/default/basic-dialog/e-handle.gif); - border:0; - background-position:1px; -} -.x-dlg div.x-resizable-handle-north{ - background-image:url(../images/default/s.gif); - border:0; -} -.x-dlg div.x-resizable-handle-northeast, .ytheme-gray .x-dlg div.x-resizable-handle-northeast{ - background-image:url(../images/default/s.gif); - border:0; -} -.x-dlg div.x-resizable-handle-northwest, .ytheme-gray .x-dlg div.x-resizable-handle-northwest{ - background-image:url(../images/default/s.gif); - border:0; -} -.x-dlg div.x-resizable-handle-southeast{ - background-image:url(../images/default/basic-dialog/se-handle.gif); - background-position: bottom right; - width:8px; - height:8px; - border:0; -} -.x-dlg div.x-resizable-handle-southwest{ - background-image:url(../images/default/sizer/sw-handle-dark.gif); - background-position: top right; - margin-left:1px; - margin-bottom:1px; - border:0; -} - -#x-msg-box .x-dlg-ft .x-btn{ - float:none; - clear:none; - margin:0 3px; -} - -#x-msg-box .x-dlg-bd { - padding:5px; - overflow:hidden !important; - font:normal 13px verdana,tahoma,sans-serif; -} -#x-msg-box .ext-mb-input { - margin-top:4px; - width:95%; -} -#x-msg-box .ext-mb-textarea { - margin-top:4px; - font:normal 13px verdana,tahoma,sans-serif; -} -#x-msg-box .ext-mb-progress-wrap { - margin-top:4px; - border:1px solid #6593cf; -} -#x-msg-box .ext-mb-progress { - height:18px; - background: #e0e8f3 url(../images/default/qtip/bg.gif) repeat-x; -} -#x-msg-box .ext-mb-progress-bar { - height:18px; - overflow:hidden; - width:0; - background:#8BB8F3; - border-top:1px solid #B2D0F7; - border-bottom:1px solid #65A1EF; - border-right:1px solid #65A1EF; -} - -#x-msg-box .x-msg-box-wait { - background: transparent url(../images/default/grid/loading.gif) no-repeat left; - display:block; - width:300px; - padding-left:18px; - line-height:18px; -} \ No newline at end of file diff --git a/lib/web/extjs/css/box.css b/lib/web/extjs/css/box.css deleted file mode 100644 index a4b02133867c931972d6bafb262aad64ffd08af0..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/box.css +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Ext JS Library 2.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -/* - Creates rounded, raised boxes like on the Ext website - the markup isn't pretty: - <div class="x-box-blue"> - <div class="x-box-tl"><div class="x-box-tr"><div class="x-box-tc"></div></div></div> - <div class="x-box-ml"><div class="x-box-mr"><div class="x-box-mc"> - <h3>YOUR TITLE HERE (optional)</h3> - <div>YOUR CONTENT HERE</div> - </div></div></div> - <div class="x-box-bl"><div class="x-box-br"><div class="x-box-bc"></div></div></div> - </div> - */ - -.x-box-tl { - background: transparent url(../images/default/box/corners.gif) no-repeat 0 0; - zoom:1; -} - -.x-box-tc { - height: 8px; - background: transparent url(../images/default/box/tb.gif) repeat-x 0 0; - overflow: hidden; -} - -.x-box-tr { - background: transparent url(../images/default/box/corners.gif) no-repeat right -8px; -} - -.x-box-ml { - background: transparent url(../images/default/box/l.gif) repeat-y 0; - padding-left: 4px; - overflow: hidden; - zoom:1; -} - -.x-box-mc { - background: #eee url(../images/default/box/tb.gif) repeat-x 0 -16px; - padding: 4px 10px; - font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif; - color: #393939; - font-size: 12px; -} - -.x-box-mc h3 { - font-size: 14px; - font-weight: bold; - margin: 0 0 4 0; - zoom:1; -} - -.x-box-mr { - background: transparent url(../images/default/box/r.gif) repeat-y right; - padding-right: 4px; - overflow: hidden; -} - -.x-box-bl { - background: transparent url(../images/default/box/corners.gif) no-repeat 0 -16px; - zoom:1; -} - -.x-box-bc { - background: transparent url(../images/default/box/tb.gif) repeat-x 0 -8px; - height: 8px; - overflow: hidden; -} - -.x-box-br { - background: transparent url(../images/default/box/corners.gif) no-repeat right -24px; -} - -.x-box-tl, .x-box-bl { - padding-left: 8px; - overflow: hidden; -} - -.x-box-tr, .x-box-br { - padding-right: 8px; - overflow: hidden; -} - -.x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr { - background-image: url(../images/default/box/corners-blue.gif); -} - -.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc { - background-image: url(../images/default/box/tb-blue.gif); -} - -.x-box-blue .x-box-mc { - background-color: #c3daf9; -} - -.x-box-blue .x-box-mc h3 { - color: #17385b; -} - -.x-box-blue .x-box-ml { - background-image: url(../images/default/box/l-blue.gif); -} - -.x-box-blue .x-box-mr { - background-image: url(../images/default/box/r-blue.gif); -} \ No newline at end of file diff --git a/lib/web/extjs/css/button.css b/lib/web/extjs/css/button.css deleted file mode 100644 index 614918e69e2e46c4e9664ee2cec31bf9af28253b..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/button.css +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Ext JS Library 2.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-btn{ - font:normal 11px tahoma, verdana, helvetica; - cursor:pointer; - white-space: nowrap; -} -.x-btn button{ - border:0 none; - background:transparent; - font:normal 11px tahoma,verdana,helvetica; - padding-left:3px; - padding-right:3px; - cursor:pointer; - margin:0; - overflow:visible; - width:auto; - -moz-outline:0 none; - outline:0 none; -} -* html .ext-ie .x-btn button { - width:1px; -} -.ext-gecko .x-btn button { - padding-left:0; - padding-right:0; -} -.ext-ie .x-btn button { - padding-top:2px; -} -/* - Predefined css class for buttons with only icon. Add this class (x-btn-icon) and a class with a background-image - to your button for a button with just an icon. - e.g. - .my-class .x-btn-text { background-image: url(foo.gif); } - */ - -.x-btn-icon .x-btn-center .x-btn-text{ - background-position: center; - background-repeat: no-repeat; - height: 16px; - width: 16px; - cursor:pointer; - white-space: nowrap; - padding:0; -} -.x-btn-icon .x-btn-center{ - padding:1px; -} -.x-btn em { - font-style:normal; - font-weight:normal; -} -/* - Button class for icon and text. Add this class (x-btn-text-icon) and a class with a background-image - to your button for both text and icon. -*/ - -.x-btn-text-icon .x-btn-center .x-btn-text{ - background-position: 0 2px; - background-repeat: no-repeat; - padding-left:18px; - padding-top:3px; - padding-bottom:3px; - padding-right:0; -} - -.x-btn-left, .x-btn-right{ - font-size:1px; - line-height:1px; -} -.x-btn-left{ - width:3px; - height:21px; - background:url(../images/default/basic-dialog/btn-sprite.gif) no-repeat 0 0; -} -.x-btn-right{ - width:3px; - height:21px; - background:url(../images/default/basic-dialog/btn-sprite.gif) no-repeat 0 -21px; -} -.x-btn-left i, .x-btn-right i{ - display:block; - width:3px; - overflow:hidden; - font-size:1px; - line-height:1px; -} -.x-btn-center{ - background:url(../images/default/basic-dialog/btn-sprite.gif) repeat-x 0 -42px; - vertical-align: middle; - text-align:center; - padding:0 5px; - cursor:pointer; - white-space:nowrap; -} -.x-btn-over .x-btn-left{ - background-position:0 -63px; -} -.x-btn-over .x-btn-right{ - background-position:0 -84px; -} -.x-btn-over .x-btn-center{ - background-position:0 -105px; -} -.x-btn-click .x-btn-center, .x-btn-menu-active .x-btn-center{ - background-position:0 -126px; -} -.x-btn-disabled *{ - color:gray !important; - cursor:default !important; -} -.x-btn-menu-text-wrap .x-btn-center { - padding:0 3px; -} -.ext-gecko .x-btn-menu-text-wrap .x-btn-center { - padding:0 1px; -} -.x-btn-menu-arrow-wrap .x-btn-center { - padding:0; -} -.x-btn-menu-arrow-wrap .x-btn-center button { - width:12px !important; - height:21px; - padding:0 !important; - display:block; - background:transparent url(../images/default/basic-dialog/btn-arrow.gif) no-repeat left 3px; -} -.x-btn-with-menu .x-btn-center { - padding-right:2px !important; -} -.x-btn-with-menu .x-btn-center em { - display:block; - background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat right 0; - padding-right:10px; -} - -.x-btn-text-icon .x-btn-with-menu .x-btn-center em { - display:block; - background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat right 3px; - padding-right:10px; -} \ No newline at end of file diff --git a/lib/web/extjs/css/combo.css b/lib/web/extjs/css/combo.css deleted file mode 100644 index cb550c05426cf00495fd8f2e07d63206fb0a3ae4..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/combo.css +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Ext JS Library 2.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-combo-list { - border:1px solid #98c0f4; - background:#ddecfe; - zoom:1; - overflow:hidden; -} -.x-combo-list-inner { - overflow:auto; - background:white; - position:relative; /* for calculating scroll offsets */ - zoom:1; - overflow-x:hidden; -} -.x-combo-list-hd { - font:bold 11px tahoma, arial, helvetica, sans-serif; - color:#15428b; - background-image: url(../images/default/layout/panel-title-light-bg.gif); - border-bottom:1px solid #98c0f4; - padding:3px; -} -.x-resizable-pinned .x-combo-list-inner { - border-bottom:1px solid #98c0f4; -} -.x-combo-list-item { - font:normal 12px tahoma, arial, helvetica, sans-serif; - padding:2px; - border:1px solid #fff; - white-space: nowrap; - overflow:hidden; - text-overflow: ellipsis; -} -.x-combo-list .x-combo-selected{ - background-color: #c3daf9 !important; - cursor:pointer; - border:1px solid #336699; -} -.x-combo-noedit{ - cursor:pointer; -} \ No newline at end of file diff --git a/lib/web/extjs/css/core.css b/lib/web/extjs/css/core.css deleted file mode 100644 index e0ef50d5144bf97b26b3d4bf29eaabe8c246e1b2..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/core.css +++ /dev/null @@ -1,292 +0,0 @@ -/* - * Ext JS Library 2.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.ext-el-mask { - z-index: 20000; - position: absolute; - top: 0; - left: 0; - -moz-opacity: 0.5; - opacity: .50; - filter: alpha(opacity=50); - background-color: #CCC; - width: 100%; - height: 100%; - zoom: 1; -} -.ext-el-mask-msg { - z-index: 20001; - position: absolute; - top: 0; - left: 0; - border:1px solid #6593cf; - background: #c3daf9 url(../images/default/box/tb-blue.gif) repeat-x 0 -16px; - padding:2px; -} -.ext-el-mask-msg div { - padding:5px 10px 5px 10px; - background: #eee; - border:1px solid #a3bad9; - color:#333; - font:normal 12px tahoma, arial, helvetica, sans-serif; - cursor:wait; -} - -.ext-shim { - position:absolute; - visibility:hidden; - left:0; - top:0; - overflow:hidden; -} -.ext-ie .ext-shim { - filter: alpha(opacity=0); -} - -.x-mask-loading div { - padding:5px 10px 5px 25px; - background: #eee url( '../images/default/grid/loading.gif' ) no-repeat 5px 5px; - line-height: 16px; -} - -/* class for hiding elements without using display:none */ -.x-hidden { - position:absolute; - left:-2000px; - top:-2000px; - visibility:hidden; -} - -.x-masked { - overflow: hidden !important; -} - -.x-masked select, .x-masked object, .x-masked embed { - visibility: hidden; -} - -.x-layer { - visibility: hidden; -} - -.x-unselectable, .x-unselectable * { - -moz-user-select: none; - -khtml-user-select: none; -} - -.x-repaint { - zoom: 1; - background-color: transparent; - -moz-outline: none; -} - -.x-item-disabled { - color: gray; - cursor: default; - opacity: .6; - -moz-opacity: .6; - filter: alpha(opacity=60); -} - -.x-item-disabled * { - color: gray; - cursor: default !important; -} - -.x-splitbar-proxy { - position: absolute; - visibility: hidden; - z-index: 20001; - background: #aaa; - zoom: 1; - line-height: 1px; - font-size: 1px; - overflow: hidden; -} - -.x-splitbar-h, .x-splitbar-proxy-h { - cursor: e-resize; - cursor: col-resize; -} - -.x-splitbar-v, .x-splitbar-proxy-v { - cursor: s-resize; - cursor: row-resize; -} - -.x-color-palette { - width: 150px; - height: 92px; - cursor: pointer; -} - -.x-color-palette a { - border: 1px solid #fff; - float: left; - padding: 2px; - text-decoration: none; - -moz-outline: 0 none; - outline: 0 none; - cursor: pointer; -} - -.x-color-palette a:hover, .x-color-palette a.x-color-palette-sel { - border: 1px solid #8BB8F3; - background: #deecfd; -} - -.x-color-palette em { - display: block; - border: 1px solid #ACA899; -} - -.x-color-palette em span { - cursor: pointer; - display: block; - height: 10px; - line-height: 10px; - width: 10px; -} - -.x-ie-shadow { - display: none; - position: absolute; - overflow: hidden; - left:0; - top:0; - background:#777; - zoom:1; -} - -.x-shadow { - display: none; - position: absolute; - overflow: hidden; - left:0; - top:0; -} - -.x-shadow * { - overflow: hidden; -} - -.x-shadow * { - padding: 0; - border: 0; - margin: 0; - clear: none; - zoom: 1; -} - -/* top bottom */ -.x-shadow .xstc, .x-shadow .xsbc { - height: 6px; - float: left; -} - -/* corners */ -.x-shadow .xstl, .x-shadow .xstr, .x-shadow .xsbl, .x-shadow .xsbr { - width: 6px; - height: 6px; - float: left; -} - -/* sides */ -.x-shadow .xsc { - width: 100%; -} - -.x-shadow .xsml, .x-shadow .xsmr { - width: 6px; - float: left; - height: 100%; -} - -.x-shadow .xsmc { - float: left; - height: 100%; - background: transparent url( ../images/default/shadow-c.png ); -} - -.x-shadow .xst, .x-shadow .xsb { - height: 6px; - overflow: hidden; - width: 100%; -} - -.x-shadow .xsml { - background: transparent url( ../images/default/shadow-lr.png ) repeat-y 0 0; -} - -.x-shadow .xsmr { - background: transparent url( ../images/default/shadow-lr.png ) repeat-y -6px 0; -} - -.x-shadow .xstl { - background: transparent url( ../images/default/shadow.png ) no-repeat 0 0; -} - -.x-shadow .xstc { - background: transparent url( ../images/default/shadow.png ) repeat-x 0 -30px; -} - -.x-shadow .xstr { - background: transparent url( ../images/default/shadow.png ) repeat-x 0 -18px; -} - -.x-shadow .xsbl { - background: transparent url( ../images/default/shadow.png ) no-repeat 0 -12px; -} - -.x-shadow .xsbc { - background: transparent url( ../images/default/shadow.png ) repeat-x 0 -36px; -} - -.x-shadow .xsbr { - background: transparent url( ../images/default/shadow.png ) repeat-x 0 -6px; -} - -.loading-indicator { - font-size: 11px; - background-image: url( '../images/default/grid/loading.gif' ); - background-repeat: no-repeat; - background-position: left; - padding-left: 20px; - line-height: 16px; - margin: 3px; -} - -.x-text-resize { - position: absolute; - left: -1000px; - top: -1000px; - visibility: hidden; - zoom: 1; -} - -.x-drag-overlay { - width: 100%; - height: 100%; - display: none; - position: absolute; - left: 0; - top: 0; - background: white; - z-index: 20000; - -moz-opacity: 0; - opacity: 0; - filter: alpha(opacity=0); -} - -.x-clear { - clear:both; - height:0; - overflow:hidden; - line-height:0; - font-size:0; -} diff --git a/lib/web/extjs/css/date-picker.css b/lib/web/extjs/css/date-picker.css deleted file mode 100644 index b31141a201024f2b9a4152274e9d98b537c30add..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/date-picker.css +++ /dev/null @@ -1,246 +0,0 @@ -/* - * Ext JS Library 2.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-date-picker { - border: 1px solid #1b376c; - border-top:0 none; - background:#fff; - position:relative; -} -.x-date-picker a { - -moz-outline:0 none; - outline:0 none; -} -.x-date-inner, .x-date-inner td, .x-date-inner th{ - border-collapse:separate; -} -.x-date-middle,.x-date-left,.x-date-right { - background: url(../images/default/basic-dialog/hd-sprite.gif) repeat-x 0 -83px; - color:#FFF; - font:bold 11px "sans serif", tahoma, verdana, helvetica; - overflow:hidden; -} - -.x-date-middle .x-btn-left,.x-date-middle .x-btn-center,.x-date-middle .x-btn-right{ - background:transparent !important; - vertical-align:middle; -} -.x-date-middle .x-btn .x-btn-text { - color:#fff; -} -.x-date-middle .x-btn-with-menu .x-btn-center em { - background:transparent url(../images/default/toolbar/btn-arrow-light.gif) no-repeat right 0; -} -.x-date-right, .x-date-left { - width:18px; -} -.x-date-right{ - text-align:right; -} -.x-date-middle { - padding-top:2px;padding-bottom:2px; -} -.x-date-right a, .x-date-left a{ - display:block; - width:16px; - height:16px; - background-position: center; - background-repeat: no-repeat; - cursor:pointer; - -moz-opacity: 0.6; - opacity:.6; - filter: alpha(opacity=60); -} -.x-date-right a:hover, .x-date-left a:hover{ - -moz-opacity: 1; - opacity:1; - filter: alpha(opacity=100); -} -.x-date-right a { - background-image: url(../images/default/shared/right-btn.gif); - margin-right:2px; - text-decoration:none !important; -} -.x-date-left a{ - background-image: url(../images/default/shared/left-btn.gif); - margin-left:2px; - text-decoration:none !important; -} -table.x-date-inner { - width:100%; - table-layout:fixed; -} -.x-date-inner th { - width:25px; -} -.x-date-inner th { - background: #dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top; - text-align:right !important; - border-bottom: 1px solid #a3bad9; - font:normal 10px arial, helvetica,tahoma,sans-serif; - color:#233d6d; - cursor:default; - padding:0; - border-collapse:separate; -} -.x-date-inner th span { - display:block; - padding:2px; - padding-right:7px; -} -.x-date-inner td { - border: 1px solid #fff; - text-align:right; - padding:0; -} -.x-date-inner a { - padding:2px 5px; - display:block; - font:normal 11px arial, helvetica,tahoma,sans-serif; - text-decoration:none; - color:black; - text-align:right; - zoom:1; -} -.x-date-inner .x-date-active{ - cursor:pointer; - color:black; -} -.x-date-inner .x-date-selected a{ - background: #dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top; - border:1px solid #8db2e3; - padding:1px 4px; -} -.x-date-inner .x-date-today a{ - border: 1px solid darkred; - padding:1px 4px; -} -.x-date-inner .x-date-selected span{ - font-weight:bold; -} -.x-date-inner .x-date-prevday a,.x-date-inner .x-date-nextday a { - color:#aaaaaa; - text-decoration:none !important; -} -.x-date-bottom { - padding:4px; - border-top: 1px solid #a3bad9; - background: #dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top; -} - -.x-date-inner a:hover, .x-date-inner .x-date-disabled a:hover{ - text-decoration:none !important; - color:black; - background: #ddecfe; -} - -.x-date-inner .x-date-disabled a { - cursor:default; - background:#eeeeee; - color:#bbbbbb; -} -.x-date-mmenu{ - background:#eeeeee !important; -} -.x-date-mmenu .x-menu-item { - font-size:10px; - padding:1px 24px 1px 4px; - white-space: nowrap; - color:#000; -} -.x-date-mmenu .x-menu-item .x-menu-item-icon { - width:10px;height:10px;margin-right:5px; - background-position:center -4px !important; -} - -.x-date-mp { - position:absolute; - left:0; - top:0; - background:white; - display:none; -} -.x-date-mp td { - padding:2px; - font:normal 11px arial, helvetica,tahoma,sans-serif; -} -td.x-date-mp-month,td.x-date-mp-year,td.x-date-mp-ybtn { - border: 0 none; - text-align:center; - vertical-align: middle; - width:25%; -} -.x-date-mp-ok { - margin-right:3px; -} -.x-date-mp-btns button { - text-decoration:none; - text-align:center; - text-decoration:none !important; - background:#083772; - color:white; - border:1px solid; - border-color: #3366cc #000055 #000055 #3366cc; - padding:1px 3px 1px; - font:normal 11px arial, helvetica,tahoma,sans-serif; - cursor:pointer; -} -.x-date-mp-btns { - background: #dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top; -} -.x-date-mp-btns td { - border-top: 1px solid #c5d2df; - text-align:center; -} -td.x-date-mp-month a,td.x-date-mp-year a { - display:block; - padding:2px 4px; - text-decoration:none; - text-align:center; - color:#15428b; -} - -td.x-date-mp-month a:hover,td.x-date-mp-year a:hover { - color:#15428b; - text-decoration:none; - cursor:pointer; - background: #ddecfe; -} - -td.x-date-mp-sel a { - padding:1px 3px; - background: #dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top; - border:1px solid #8db2e3; -} -.x-date-mp-ybtn a { - overflow:hidden; - width:15px; - height:15px; - cursor:pointer; - background:transparent url(../images/default/panel/tool-sprites.gif) no-repeat; - display:block; - margin:0 auto; -} -.x-date-mp-ybtn a.x-date-mp-next { - background-position:0 -120px; -} -.x-date-mp-ybtn a.x-date-mp-next:hover { - background-position:-15px -120px; -} -.x-date-mp-ybtn a.x-date-mp-prev { - background-position:0 -105px; -} -.x-date-mp-ybtn a.x-date-mp-prev:hover { - background-position:-15px -105px; -} -.x-date-mp-ybtn { - text-align:center; -} -td.x-date-mp-sep { - border-right:1px solid #c5d2df; -} \ No newline at end of file diff --git a/lib/web/extjs/css/dd.css b/lib/web/extjs/css/dd.css deleted file mode 100644 index 08bbcc6a8b2daf27118bf8ae797559ae4fa52923..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/dd.css +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Ext JS Library 2.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-dd-drag-proxy{ - position:absolute; - left:0;top:0; - visibility:hidden; - z-index:15000; -} -.x-dd-drag-ghost{ - color: black; - font: normal 11px arial, helvetica, sans-serif; - -moz-opacity: 0.85; - opacity:.85; - filter: alpha(opacity=85); - border-top:1px solid #dddddd; - border-left:1px solid #dddddd; - border-right:1px solid #bbbbbb; - border-bottom:1px solid #bbbbbb; - padding:3px; - padding-left:20px; - background-color:white; - white-space:nowrap; -} -.x-dd-drag-repair .x-dd-drag-ghost{ - -moz-opacity: 0.4; - opacity:.4; - filter: alpha(opacity=40); - border:0 none; - padding:0; - background-color:transparent; -} -.x-dd-drag-repair .x-dd-drop-icon{ - visibility:hidden; -} -.x-dd-drop-icon{ - position:absolute; - top:3px; - left:3px; - display:block; - width:16px; - height:16px; - background-color:transparent; - background-position: center; - background-repeat: no-repeat; - z-index:1; -} -.x-dd-drop-nodrop .x-dd-drop-icon{ - background-image: url(../images/default/dd/drop-no.gif); -} -.x-dd-drop-ok .x-dd-drop-icon{ - background-image: url(../images/default/dd/drop-yes.gif); -} -.x-dd-drop-ok-add .x-dd-drop-icon{ - background-image: url(../images/default/dd/drop-add.gif); -} \ No newline at end of file diff --git a/lib/web/extjs/css/debug.css b/lib/web/extjs/css/debug.css deleted file mode 100644 index 07de9e630313ba8d7a0afb375f43c84020d3d6f7..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/debug.css +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Ext JS Library 2.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -#x-debug-browser .x-tree .x-tree-node a span { - color:#222297; - font-size:12px; - padding-top:2px; - font-family:"courier","courier new"; - line-height:18px; -} -#x-debug-browser .x-tree a i { - color:#FF4545; - font-style:normal; -} -#x-debug-browser .x-tree a em { - color:#999; -} -#x-debug-browser .x-tree .x-tree-node .x-tree-selected a span{ - background:#c3daf9; -} -#x-debug-browser pre, .x-debug-browser pre xmp { - font:normal 11px tahoma, arial, helvetica, sans-serif !important; - white-space: -moz-pre-wrap; - white-space: -pre-wrap; - white-space: -o-pre-wrap; - word-wrap: break-word; -} -#x-debug-browser pre { - display:block; - padding:5px !important; - border-bottom:1px solid #eeeeee !important; -} -#x-debug-browser pre xmp { - padding:0 !important; - margin:0 !important; -} -#x-debug-console .x-layout-panel-center, #x-debug-inspector .x-layout-panel-center { - border-right:1px solid #98c0f4; -} -#x-debug-console textarea { - border: 0 none; - font-size:12px; - font-family:"courier","courier new"; - padding-top:4px; - padding-left:4px; -} -.x-debug-frame { - background:#eeeeee; - border:1px dashed #aaaaaa; -} \ No newline at end of file diff --git a/lib/web/extjs/css/editor.css b/lib/web/extjs/css/editor.css deleted file mode 100644 index b0fc6f565ccde0b3ef4d2cef3200cce993145b0a..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/editor.css +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Ext JS Library 2.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-html-editor-wrap { - border:1px solid #a9bfd3; - background:white; -} -.x-html-editor-tb .x-btn-text { - background:transparent url(../images/default/editor/tb-sprite.gif) no-repeat; -} -.x-html-editor-tb .x-edit-bold .x-btn-text { - background-position:0 0; -} -.x-html-editor-tb .x-edit-italic .x-btn-text { - background-position:-16px 0; -} -.x-html-editor-tb .x-edit-underline .x-btn-text { - background-position:-32px 0; -} -.x-html-editor-tb .x-edit-forecolor .x-btn-text { - background-position:-160px 0; -} -.x-html-editor-tb .x-edit-backcolor .x-btn-text { - background-position:-176px 0; -} -.x-html-editor-tb .x-edit-justifyleft .x-btn-text { - background-position:-112px 0; -} -.x-html-editor-tb .x-edit-justifycenter .x-btn-text { - background-position:-128px 0; -} -.x-html-editor-tb .x-edit-justifyright .x-btn-text { - background-position:-144px 0; -} -.x-html-editor-tb .x-edit-insertorderedlist .x-btn-text { - background-position:-80px 0; -} -.x-html-editor-tb .x-edit-insertunorderedlist .x-btn-text { - background-position:-96px 0; -} -.x-html-editor-tb .x-edit-increasefontsize .x-btn-text { - background-position:-48px 0; -} -.x-html-editor-tb .x-edit-decreasefontsize .x-btn-text { - background-position:-64px 0; -} -.x-html-editor-tb .x-edit-sourceedit .x-btn-text { - background-position:-192px 0; -} - -.x-html-editor-tip .x-tip-bd .x-tip-bd-inner { - padding:5px; - padding-bottom:1px; -} \ No newline at end of file diff --git a/lib/web/extjs/css/ext-all.css b/lib/web/extjs/css/ext-all.css deleted file mode 100644 index b9d7fa3d05cf1c0487e4beb8d6eb9bc4281a9f8d..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/ext-all.css +++ /dev/null @@ -1,3446 +0,0 @@ -/* - * Ext JS Library 2.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td{margin:0;padding:0;}img,body,html{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}ol,ul {list-style:none;}caption,th {text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;}q:before,q:after{content:'';} -.ext-el-mask { - z-index: 20000; - position: absolute; - top: 0; - left: 0; - -moz-opacity: 0.5; - opacity: .50; - filter: alpha(opacity=50); - background-color: #CCC; - width: 100%; - height: 100%; - zoom: 1; -} -.ext-el-mask-msg { - z-index: 20001; - position: absolute; - top: 0; - left: 0; - border:1px solid #6593cf; - background: #c3daf9 url(../images/default/box/tb-blue.gif) repeat-x 0 -16px; - padding:2px; -} -.ext-el-mask-msg div { - padding:5px 10px 5px 10px; - background: #eee; - border:1px solid #a3bad9; - color:#333; - font:normal 12px tahoma, arial, helvetica, sans-serif; - cursor:wait; -} - -.ext-shim { - position:absolute; - visibility:hidden; - left:0; - top:0; - overflow:hidden; -} -.ext-ie .ext-shim { - filter: alpha(opacity=0); -} - -.x-mask-loading div { - padding:5px 10px 5px 25px; - background: #eee url( '../images/default/grid/loading.gif' ) no-repeat 5px 5px; - line-height: 16px; -} - - -.x-hidden { - position:absolute; - left:-2000px; - top:-2000px; - visibility:hidden; -} - -.x-masked { - overflow: hidden !important; -} - -.x-masked select, .x-masked object, .x-masked embed { - visibility: hidden; -} - -.x-layer { - visibility: hidden; -} - -.x-unselectable, .x-unselectable * { - -moz-user-select: none; - -khtml-user-select: none; -} - -.x-repaint { - zoom: 1; - background-color: transparent; - -moz-outline: none; -} - -.x-item-disabled { - color: gray; - cursor: default; - opacity: .6; - -moz-opacity: .6; - filter: alpha(opacity=60); -} - -.x-item-disabled * { - color: gray; - cursor: default !important; -} - -.x-splitbar-proxy { - position: absolute; - visibility: hidden; - z-index: 20001; - background: #aaa; - zoom: 1; - line-height: 1px; - font-size: 1px; - overflow: hidden; -} - -.x-splitbar-h, .x-splitbar-proxy-h { - cursor: e-resize; - cursor: col-resize; -} - -.x-splitbar-v, .x-splitbar-proxy-v { - cursor: s-resize; - cursor: row-resize; -} - -.x-color-palette { - width: 150px; - height: 92px; - cursor: pointer; -} - -.x-color-palette a { - border: 1px solid #fff; - float: left; - padding: 2px; - text-decoration: none; - -moz-outline: 0 none; - outline: 0 none; - cursor: pointer; -} - -.x-color-palette a:hover, .x-color-palette a.x-color-palette-sel { - border: 1px solid #8BB8F3; - background: #deecfd; -} - -.x-color-palette em { - display: block; - border: 1px solid #ACA899; -} - -.x-color-palette em span { - cursor: pointer; - display: block; - height: 10px; - line-height: 10px; - width: 10px; -} - -.x-ie-shadow { - display: none; - position: absolute; - overflow: hidden; - left:0; - top:0; - background:#777; - zoom:1; -} - -.x-shadow { - display: none; - position: absolute; - overflow: hidden; - left:0; - top:0; -} - -.x-shadow * { - overflow: hidden; -} - -.x-shadow * { - padding: 0; - border: 0; - margin: 0; - clear: none; - zoom: 1; -} - - -.x-shadow .xstc, .x-shadow .xsbc { - height: 6px; - float: left; -} - - -.x-shadow .xstl, .x-shadow .xstr, .x-shadow .xsbl, .x-shadow .xsbr { - width: 6px; - height: 6px; - float: left; -} - - -.x-shadow .xsc { - width: 100%; -} - -.x-shadow .xsml, .x-shadow .xsmr { - width: 6px; - float: left; - height: 100%; -} - -.x-shadow .xsmc { - float: left; - height: 100%; - background: transparent url( ../images/default/shadow-c.png ); -} - -.x-shadow .xst, .x-shadow .xsb { - height: 6px; - overflow: hidden; - width: 100%; -} - -.x-shadow .xsml { - background: transparent url( ../images/default/shadow-lr.png ) repeat-y 0 0; -} - -.x-shadow .xsmr { - background: transparent url( ../images/default/shadow-lr.png ) repeat-y -6px 0; -} - -.x-shadow .xstl { - background: transparent url( ../images/default/shadow.png ) no-repeat 0 0; -} - -.x-shadow .xstc { - background: transparent url( ../images/default/shadow.png ) repeat-x 0 -30px; -} - -.x-shadow .xstr { - background: transparent url( ../images/default/shadow.png ) repeat-x 0 -18px; -} - -.x-shadow .xsbl { - background: transparent url( ../images/default/shadow.png ) no-repeat 0 -12px; -} - -.x-shadow .xsbc { - background: transparent url( ../images/default/shadow.png ) repeat-x 0 -36px; -} - -.x-shadow .xsbr { - background: transparent url( ../images/default/shadow.png ) repeat-x 0 -6px; -} - -.loading-indicator { - font-size: 11px; - background-image: url( '../images/default/grid/loading.gif' ); - background-repeat: no-repeat; - background-position: left; - padding-left: 20px; - line-height: 16px; - margin: 3px; -} - -.x-text-resize { - position: absolute; - left: -1000px; - top: -1000px; - visibility: hidden; - zoom: 1; -} - -.x-drag-overlay { - width: 100%; - height: 100%; - display: none; - position: absolute; - left: 0; - top: 0; - background: white; - z-index: 20000; - -moz-opacity: 0; - opacity: 0; - filter: alpha(opacity=0); -} - -.x-clear { - clear:both; - height:0; - overflow:hidden; - line-height:0; - font-size:0; -} - -.x-tabs-wrap { - border-bottom:1px solid #6593cf; - padding-top:2px; -} -.x-tabs-strip-wrap{ - width:100%; -} -.x-tabs-wrap table{ - position:relative; - top:0; left:0; -} -.x-tabs-strip td{ - padding:0; - padding-left:2px; -} -.x-tabs-strip a, .x-tabs-strip span, .x-tabs-strip em { - display:block; -} -.x-tabs-strip a { - text-decoration:none !important; - -moz-outline: none; - outline: none; - cursor:pointer; -} -.x-tabs-strip .x-tabs-text { - font:bold 11px tahoma,arial,helvetica; - color:#666; - overflow:hidden; - white-space: nowrap; - cursor:pointer; - text-overflow: ellipsis; -} -.x-tabs-strip .on .x-tabs-text { - cursor:default; - color:#083772; -} -.x-tabs-strip .disabled .x-tabs-text { - cursor:default; - color:#aaaaaa; -} -.x-tabs-strip .x-tabs-inner { - padding:4px 10px; -} - -.x-tabs-strip .on .x-tabs-right { - background: url(../images/default/tabs/tab-sprite.gif) no-repeat right 0; -} -.x-tabs-strip .on .x-tabs-left { - background: url(../images/default/tabs/tab-sprite.gif) no-repeat 0 -100px; -} -.x-tabs-strip .x-tabs-right { - background: url(../images/default/tabs/tab-sprite.gif) no-repeat right -50px; -} -.x-tabs-strip .x-tabs-left { - background: url(../images/default/tabs/tab-sprite.gif) no-repeat 0 -150px; -} - -.x-tabs-strip a { - position:relative; - top:1px; left:0; -} -.x-tabs-strip .on a { - position:relative; -} -.x-tabs-strip .on .x-tabs-inner { - padding-bottom:5px; -} - -.x-tabs-strip .x-tabs-closable .x-tabs-inner{ - padding-right:22px; - position:relative; -} -.x-tabs-strip .x-tabs-closable .close-icon{ - line-height: 1px; - font-size:1px; - background-image:url(../images/default/layout/tab-close.gif); - display:block; - position:absolute; - right:5px;top:4px; - width:11px;height:11px; - cursor:pointer; -} -.x-tabs-strip .on .close-icon{ - background-image:url(../images/default/layout/tab-close-on.gif); -} -.x-tabs-strip .x-tabs-closable .close-over{ - background-image:url(../images/default/layout/tab-close-on.gif); -} -.x-tabs-body { - border:1px solid #6593cf; - border-top:0 none; -} -.x-tabs-bottom .x-tabs-wrap { - border-top:1px solid #6593cf; - border-bottom:0 none; - padding-top:0; - padding-bottom:2px; -} -.x-tabs-bottom .x-tabs-strip .x-tabs-right { - background: url(../images/default/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom left; -} -.x-tabs-bottom .x-tabs-strip .x-tabs-left { - background: url(../images/default/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom right; -} -.x-tabs-bottom .x-tabs-strip .on .x-tabs-right { - background: url(../images/default/tabs/tab-btm-right-bg.gif) no-repeat bottom left; -} -.x-tabs-bottom .x-tabs-strip .on .x-tabs-left { - background: url(../images/default/tabs/tab-btm-left-bg.gif) no-repeat bottom right; -} -.x-tabs-bottom .x-tabs-strip a { - position:relative; - top:0; left:0; -} -.x-tabs-bottom .x-tabs-strip .on a { - margin-top:-1px; -} -.x-tabs-bottom .x-tabs-strip .on .x-tabs-inner { - padding-top:5px; -} - -.x-tabs-bottom .x-tabs-body { - border:1px solid #6593cf; - border-bottom:0 none; -} - - - -.x-form-field{ - margin: 0 0 0 0; - font:normal 12px tahoma, arial, helvetica, sans-serif; -} - - -.x-form-text, textarea.x-form-field{ - padding: 1px 3px; - background:#fff url(../images/default/form/text-bg.gif) repeat-x 0 0; - border: 1px solid #B5B8C8; -} -.x-form-text { - height:22px; - line-height:18px; - vertical-align:middle; -} -.ext-ie .x-form-text { - margin-top:-1px; - margin-bottom:-1px; - height:22px; - line-height:18px; -} -.ext-strict .x-form-text { - height:18px; -} -.ext-safari .x-form-text { - height:20px; -} -.ext-gecko .x-form-text { - padding-top:2px; - padding-bottom:0; -} - - -.x-form-select-one { - height:20px; - line-height:18px; - vertical-align:middle; - background-color:#fff; - border: 1px solid #B5B8C8; -} - - - - - - - - - - - - - - - - -.x-form-field-wrap { - position:relative; - zoom:1; - white-space: nowrap; -} - -.x-editor .x-form-check-wrap { - background:#fff; -} -.x-form-field-wrap .x-form-trigger{ - width:17px; - height:21px; - border:0; - background:transparent url(../images/default/form/trigger.gif) no-repeat 0 0; - cursor:pointer; - border-bottom: 1px solid #B5B8C8; - position:absolute; - top:0; -} -.ext-safari .x-form-field-wrap .x-form-trigger{ - height:19px; -} -.x-form-field-wrap .x-form-date-trigger{ - background:transparent url(../images/default/form/date-trigger.gif) no-repeat 0 0 !important; - cursor:pointer; -} -.x-form-field-wrap .x-form-clear-trigger{ - background:transparent url(../images/default/form/clear-trigger.gif) no-repeat; - cursor:pointer; -} -.x-form-field-wrap .x-form-search-trigger{ - background:transparent url(../images/default/form/search-trigger.gif) no-repeat 0 0; - cursor:pointer; -} -.ext-safari .x-form-field-wrap .x-form-trigger{ - right:0; -} -.x-form-field-wrap .x-form-twin-triggers{ - -} -.x-form-field-wrap .x-form-twin-triggers .x-form-trigger{ - position:static; - top:auto; - vertical-align:top; -} - - -.x-form-field-wrap .x-form-trigger-over{ - background-position:-17px 0; -} -.x-form-field-wrap .x-form-trigger-click{ - background-position:-34px 0; -} -.x-item-disabled .x-form-trigger-over{ - background-position:0 0 !important; -} -.x-item-disabled .x-form-trigger-click{ - background-position:0 0 !important; -} - - -.x-form-focus, textarea.x-form-focus{ - border: 1px solid #7eadd9; -} - - -.x-form-invalid, textarea.x-form-invalid{ - background:#fff url(../images/default/grid/invalid_line.gif) repeat-x bottom; - border: 1px solid #dd7870; -} -.ext-safari .x-form-invalid{ - background-color:#ffeeee; - border: 1px solid #ff7870; -} - - - -.x-editor { - visibility:hidden; - padding:0; - margin:0; -} -.x-form-check-wrap { - line-height:18px; -} -.ext-ie .x-form-check-wrap input { - width:15px; - height:15px; -} -.x-editor .x-form-check-wrap { - padding:3px; -} -.x-editor .x-form-checkbox { - height:13px; - border: 0 none; -} - -.x-form-grow-sizer { - font:normal 12px tahoma, arial, helvetica, sans-serif; - left: -10000px; - padding: 8px 3px; - position: absolute; - visibility:hidden; - top: -10000px; - white-space: pre-wrap; - white-space: -moz-pre-wrap; - white-space: -pre-wrap; - white-space: -o-pre-wrap; - word-wrap: break-word; - zoom:1; -} -.x-form-grow-sizer p { - margin:0 !important; - border:0 none !important; - padding:0 !important; -} - - -.x-form-item { - font:normal 12px tahoma, arial, helvetica, sans-serif; - display:block; - margin-bottom:4px; -} - -.x-form-item label { - display:block; - float:left; - width:100px; - padding:3px; - padding-left:0; - clear:left; - z-index:2; - position:relative; -} - -.x-form-element { - padding-left:105px; - position:relative; -} - -.x-form-invalid-msg { - color:#ee0000; - padding:2px; - padding-left:18px; - font:normal 11px tahoma, arial, helvetica, sans-serif; - background: transparent url(../images/default/shared/warning.gif) no-repeat 0 2px; - line-height:16px; - width:200px; -} - -.x-form-label-right label { - text-align:right; -} - -.x-form-label-top .x-form-item label { - width:auto; - float:none; - clear:none; - display:inline; - margin-bottom:4px; - position:static; -} -.x-form-label-top .x-form-element { - padding-left:0; - padding-top:4px; -} -.x-form-label-top .x-form-item { - padding-bottom:4px; -} -.x-form fieldset { - border:1px solid #B5B8C8; - padding:10px 10px 5px 10px; - margin-bottom:10px; -} -.x-form fieldset legend { - font:bold 11px tahoma, arial, helvetica, sans-serif; - color:#15428b; -} -.ext-ie .x-form fieldset legend { - margin-bottom:10px; -} -.ext-ie .x-form fieldset { - padding-top: 0; -} -.x-form-empty-field { - color:gray; -} - -.x-small-editor .x-form-field { - font:normal 11px arial, tahoma, helvetica, sans-serif; -} -.x-small-editor .x-form-text { - height:20px; - line-height:16px; - vertical-align:middle; -} -.ext-ie .x-small-editor .x-form-text { - margin-top:-1px !important; - margin-bottom:-1px !important; - height:20px !important; - line-height:16px !important; -} -.ext-strict .x-small-editor .x-form-text { - height:16px !important; -} -.ext-safari .x-small-editor .x-form-field { - - font:normal 12px arial, tahoma, helvetica, sans-serif; -} -.ext-ie .x-small-editor .x-form-text { - height:20px; - line-height:16px; -} -.ext-border-box .x-small-editor .x-form-text { - height:20px; -} - -.x-small-editor .x-form-select-one { - height:20px; - line-height:16px; - vertical-align:middle; -} -.x-small-editor .x-form-num-field { - text-align:right; -} -.x-small-editor .x-form-field-wrap .x-form-trigger{ - height:19px; -} - - -.x-form-clear { - clear:both; - height:0; - overflow:hidden; - line-height:0; - font-size:0; -} -.x-form-clear-left { - clear:left; - height:0; - overflow:hidden; - line-height:0; - font-size:0; -} - -.x-form-cb-label { - width:'auto' !important; - float:none !important; - clear:none !important; - display:inline !important; - margin-left:4px; -} - -.x-form-column { - float:left; - padding:0; - margin:0; - width:48%; - overflow:hidden; - zoom:1; -} - - -.x-form .x-form-btns-ct .x-btn{ - float:right; - clear:none; -} -.x-form .x-form-btns-ct .x-form-btns td { - border:0; - padding:0; -} -.x-form .x-form-btns-ct .x-form-btns-right table{ - float:right; - clear:none; -} -.x-form .x-form-btns-ct .x-form-btns-left table{ - float:left; - clear:none; -} -.x-form .x-form-btns-ct .x-form-btns-center{ - text-align:center; -} -.x-form .x-form-btns-ct .x-form-btns-center table{ - margin:0 auto; -} -.x-form .x-form-btns-ct table td.x-form-btn-td{ - padding:3px; -} - -.x-form .x-form-btns-ct .x-btn-focus .x-btn-left{ - background-position:0 -147px; -} -.x-form .x-form-btns-ct .x-btn-focus .x-btn-right{ - background-position:0 -168px; -} -.x-form .x-form-btns-ct .x-btn-focus .x-btn-center{ - background-position:0 -189px; -} - -.x-form .x-form-btns-ct .x-btn-click .x-btn-center{ - background-position:0 -126px; -} -.x-form .x-form-btns-ct .x-btn-click .x-btn-right{ - background-position:0 -84px; -} -.x-form .x-form-btns-ct .x-btn-click .x-btn-left{ - background-position:0 -63px; -} -.x-form-invalid-icon { - width:16px; - height:18px; - visibility:hidden; - position:absolute; - left:0; - top:0; - display:block; - background:transparent url(../images/default/form/exclamation.gif) no-repeat 0 2px; -} -.x-btn{ - font:normal 11px tahoma, verdana, helvetica; - cursor:pointer; - white-space: nowrap; -} -.x-btn button{ - border:0 none; - background:transparent; - font:normal 11px tahoma,verdana,helvetica; - padding-left:3px; - padding-right:3px; - cursor:pointer; - margin:0; - overflow:visible; - width:auto; - -moz-outline:0 none; - outline:0 none; -} -* html .ext-ie .x-btn button { - width:1px; -} -.ext-gecko .x-btn button { - padding-left:0; - padding-right:0; -} -.ext-ie .x-btn button { - padding-top:2px; -} - - -.x-btn-icon .x-btn-center .x-btn-text{ - background-position: center; - background-repeat: no-repeat; - height: 16px; - width: 16px; - cursor:pointer; - white-space: nowrap; - padding:0; -} -.x-btn-icon .x-btn-center{ - padding:1px; -} -.x-btn em { - font-style:normal; - font-weight:normal; -} - - -.x-btn-text-icon .x-btn-center .x-btn-text{ - background-position: 0 2px; - background-repeat: no-repeat; - padding-left:18px; - padding-top:3px; - padding-bottom:3px; - padding-right:0; -} - -.x-btn-left, .x-btn-right{ - font-size:1px; - line-height:1px; -} -.x-btn-left{ - width:3px; - height:21px; - background:url(../images/default/basic-dialog/btn-sprite.gif) no-repeat 0 0; -} -.x-btn-right{ - width:3px; - height:21px; - background:url(../images/default/basic-dialog/btn-sprite.gif) no-repeat 0 -21px; -} -.x-btn-left i, .x-btn-right i{ - display:block; - width:3px; - overflow:hidden; - font-size:1px; - line-height:1px; -} -.x-btn-center{ - background:url(../images/default/basic-dialog/btn-sprite.gif) repeat-x 0 -42px; - vertical-align: middle; - text-align:center; - padding:0 5px; - cursor:pointer; - white-space:nowrap; -} -.x-btn-over .x-btn-left{ - background-position:0 -63px; -} -.x-btn-over .x-btn-right{ - background-position:0 -84px; -} -.x-btn-over .x-btn-center{ - background-position:0 -105px; -} -.x-btn-click .x-btn-center, .x-btn-menu-active .x-btn-center{ - background-position:0 -126px; -} -.x-btn-disabled *{ - color:gray !important; - cursor:default !important; -} -.x-btn-menu-text-wrap .x-btn-center { - padding:0 3px; -} -.ext-gecko .x-btn-menu-text-wrap .x-btn-center { - padding:0 1px; -} -.x-btn-menu-arrow-wrap .x-btn-center { - padding:0; -} -.x-btn-menu-arrow-wrap .x-btn-center button { - width:12px !important; - height:21px; - padding:0 !important; - display:block; - background:transparent url(../images/default/basic-dialog/btn-arrow.gif) no-repeat left 3px; -} -.x-btn-with-menu .x-btn-center { - padding-right:2px !important; -} -.x-btn-with-menu .x-btn-center em { - display:block; - background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat right 0; - padding-right:10px; -} - -.x-btn-text-icon .x-btn-with-menu .x-btn-center em { - display:block; - background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat right 3px; - padding-right:10px; -} -.x-toolbar{ - border-top: 1px solid #eaf0f7; - border-bottom: 1px solid #a9bfd3; - display: block; - padding:2px; - background:#d0def0 url(../images/default/layout/panel-title-light-bg.gif) repeat-x; -} -.x-toolbar .x-item-disabled .x-btn-icon { - opacity: .35; - -moz-opacity: .35; - filter: alpha(opacity=35); -} -.x-toolbar td { - vertical-align:middle; -} -.mso .x-toolbar, .x-grid-mso .x-toolbar{ - border: 0 none; - background: url(../images/default/grid/mso-hd.gif); -} -.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{ - white-space: nowrap; - font:normal 11px tahoma, arial, helvetica, sans-serif; -} -.x-toolbar .x-item-disabled { - color:gray; - cursor:default; - opacity:.6; - -moz-opacity:.6; - filter:alpha(opacity=60); -} -.x-toolbar .x-item-disabled * { - color:gray; - cursor:default; -} -.x-toolbar .x-btn-left{ - background:none; -} -.x-toolbar .x-btn-right{ - background:none; -} -.x-toolbar .x-btn-center{ - background:none; - padding:0 0; -} - -.x-toolbar .x-btn-menu-text-wrap .x-btn-center button{ - padding-right:2px; -} -.ext-gecko .x-toolbar .x-btn-menu-text-wrap .x-btn-center button{ - padding-right:0; -} -.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button{ - padding:0 2px; -} -.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button { - width:12px; - background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat 0 3px; -} -.x-toolbar .x-btn-text-icon .x-btn-menu-arrow-wrap .x-btn-center button { - width:12px; - background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat 0 3px; -} -.x-toolbar .x-btn-over .x-btn-menu-arrow-wrap .x-btn-center button { - background-position: 0 -47px; -} -.x-toolbar .x-btn-over .x-btn-left{ - background:url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 0; -} -.x-toolbar .x-btn-over .x-btn-right{ - background:url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -21px; -} -.x-toolbar .x-btn-over .x-btn-center{ - background:url(../images/default/toolbar/tb-btn-sprite.gif) repeat-x 0 -42px; -} - -.x-toolbar .x-btn-click .x-btn-left, .x-toolbar .x-btn-pressed .x-btn-left, .x-toolbar .x-btn-menu-active .x-btn-left{ - background:url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -63px; -} -.x-toolbar .x-btn-click .x-btn-right, .x-toolbar .x-btn-pressed .x-btn-right, .x-toolbar .x-btn-menu-active .x-btn-right{ - background:url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -84px; -} -.x-toolbar .x-btn-click .x-btn-center, .x-toolbar .x-btn-pressed .x-btn-center, .x-toolbar .x-btn-menu-active .x-btn-center{ - background:url(../images/default/toolbar/tb-btn-sprite.gif) repeat-x 0 -105px; -} - -.x-toolbar .x-btn-with-menu .x-btn-center em{ - padding-right:8px; -} - -.x-toolbar .ytb-text{ - padding:2px; -} -.x-toolbar .ytb-sep { - background-image: url(../images/default/grid/grid-split.gif); - background-position: center; - background-repeat: no-repeat; - display: block; - font-size: 1px; - height: 16px; - width:4px; - overflow: hidden; - cursor:default; - margin: 0 2px 0; - border:0; -} -.x-toolbar .ytb-spacer { - width:2px; -} -.mso .x-toolbar .ytb-sep, .x-grid-mso .x-toolbar .ytb-sep{ - background-image: url(../images/default/grid/grid-blue-split.gif); -} - - -.ext-ie .x-toolbar .x-form-field-wrap { - padding-bottom:1px; -} -.ext-ie .x-toolbar .x-form-field-wrap .x-form-trigger { - top:1px; -} -.ext-ie .x-toolbar .x-form-field-wrap .x-form-twin-triggers img { - margin-top:1px; -} - - - -.x-grid-page-number{ - width:24px; - height:14px; -} -.x-grid-page-first .x-btn-text{ - background-image: url(../images/default/grid/page-first.gif); -} -.x-grid-loading .x-btn-text{ - background-image: url(../images/default/grid/done.gif); -} -.x-grid-page-last .x-btn-text{ - background-image: url(../images/default/grid/page-last.gif); -} -.x-grid-page-next .x-btn-text{ - background-image: url(../images/default/grid/page-next.gif); -} -.x-grid-page-prev .x-btn-text{ - background-image: url(../images/default/grid/page-prev.gif); -} -.x-item-disabled .x-grid-loading .x-btn-text{ - background-image: url(../images/default/grid/loading.gif); -} -.x-item-disabled .x-grid-page-first .x-btn-text{ - background-image: url(../images/default/grid/page-first-disabled.gif); -} -.x-item-disabled .x-grid-page-last .x-btn-text{ - background-image: url(../images/default/grid/page-last-disabled.gif); -} -.x-item-disabled .x-grid-page-next .x-btn-text{ - background-image: url(../images/default/grid/page-next-disabled.gif); -} -.x-item-disabled .x-grid-page-prev .x-btn-text{ - background-image: url(../images/default/grid/page-prev-disabled.gif); -} -.x-paging-info { - position:absolute; - top:8px; - right: 8px; - color:#15428b; -} - -.x-resizable-handle { - position:absolute; - z-index:100; - - font-size:1px; - line-height:6px; - overflow:hidden; - background:white; - filter:alpha(opacity=0); - opacity:0; - zoom:1; -} -.x-resizable-handle-east{ - width:6px; - cursor:e-resize; - right:0; - top:0; - height:100%; -} -.ext-ie .x-resizable-handle-east { - margin-right:-1px; -} -.x-resizable-handle-south{ - width:100%; - cursor:s-resize; - left:0; - bottom:0; - height:6px; -} -.ext-ie .x-resizable-handle-south { - margin-bottom:-1px; -} -.x-resizable-handle-west{ - width:6px; - cursor:w-resize; - left:0; - top:0; - height:100%; -} -.x-resizable-handle-north{ - width:100%; - cursor:n-resize; - left:0; - top:0; - height:6px; -} -.x-resizable-handle-southeast{ - width:6px; - cursor:se-resize; - right:0; - bottom:0; - height:6px; - z-index:101; -} -.x-resizable-handle-northwest{ - width:6px; - cursor:nw-resize; - left:0; - top:0; - height:6px; - z-index:101; -} -.x-resizable-handle-northeast{ - width:6px; - cursor:ne-resize; - right:0; - top:0; - height:6px; - z-index:101; -} -.x-resizable-handle-southwest{ - width:6px; - cursor:sw-resize; - left:0; - bottom:0; - height:6px; - z-index:101; -} -.x-resizable-over .x-resizable-handle, .x-resizable-pinned .x-resizable-handle{ - filter:alpha(opacity=100); - opacity:1; -} -.x-resizable-over .x-resizable-handle-east, .x-resizable-pinned .x-resizable-handle-east{ - background:url(../images/default/sizer/e-handle.gif); - background-position: left; -} -.x-resizable-over .x-resizable-handle-west, .x-resizable-pinned .x-resizable-handle-west{ - background:url(../images/default/sizer/e-handle.gif); - background-position: left; -} -.x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-south{ - background:url(../images/default/sizer/s-handle.gif); - background-position: top; -} -.x-resizable-over .x-resizable-handle-north, .x-resizable-pinned .x-resizable-handle-north{ - background:url(../images/default/sizer/s-handle.gif); - background-position: top; -} -.x-resizable-over .x-resizable-handle-southeast, .x-resizable-pinned .x-resizable-handle-southeast{ - background:url(../images/default/sizer/se-handle.gif); - background-position: top left; -} -.x-resizable-over .x-resizable-handle-northwest, .x-resizable-pinned .x-resizable-handle-northwest{ - background:url(../images/default/sizer/nw-handle.gif); - background-position:bottom right; -} -.x-resizable-over .x-resizable-handle-northeast, .x-resizable-pinned .x-resizable-handle-northeast{ - background:url(../images/default/sizer/ne-handle.gif); - background-position: bottom left; -} -.x-resizable-over .x-resizable-handle-southwest, .x-resizable-pinned .x-resizable-handle-southwest{ - background:url(../images/default/sizer/sw-handle.gif); - background-position: top right; -} -.x-resizable-proxy{ - border: 1px dashed #6593cf; - position:absolute; - overflow:hidden; - display:none; - left:0;top:0; - z-index:50000; -} -.x-resizable-overlay{ - width:100%; - height:100%; - display:none; - position:absolute; - left:0; - top:0; - background:white; - z-index:200000; - -moz-opacity: 0; - opacity:0; - filter: alpha(opacity=0); -} - - -.x-grid3 { - position:relative; - overflow:hidden; - background-color:#fff; -} -.ext-ie .x-grid3 table { - table-layout:fixed; -} -.x-grid3-viewport{ - overflow:hidden; -} -.x-grid3-hd-row td, .x-grid3-row td{ - font:normal 11px arial, tahoma, helvetica, sans-serif; - -moz-outline: none; - -moz-user-focus: normal; -} -.x-grid3-row td { - line-height:13px; - vertical-align: top; - padding-left:1px; - padding-right:1px; - -moz-user-select: none; -} -.x-grid3-hd-row td { - line-height:15px; - vertical-align:middle; - border-left:1px solid #eee; - border-right:1px solid #d0d0d0; -} - -.x-grid3-hd-row .x-grid3-marker-hd { - padding:3px; -} - -.x-grid3-row .x-grid3-marker { - padding:3px; -} - -.x-grid3-cell-inner, .x-grid3-hd-inner{ - overflow:hidden; - -o-text-overflow: ellipsis; - text-overflow: ellipsis; - padding:3px 3px 3px 5px; - white-space: nowrap; -} - -.x-grid3-hd-inner { - position:relative; - cursor:inherit; - padding:4px 3px 4px 5px; -} - -.x-grid3-row-body { - white-space:normal; -} - - -.ext-ie .x-grid3-cell-inner, .ext-ie .x-grid3-hd-inner{ - width:100%; -} - -.ext-strict .x-grid3-cell-inner, .ext-strict .x-grid3-hd-inner{ - width:auto; -} - -.x-grid3-col { - -} - -.x-grid3-row { - cursor: default; - border:1px solid #ededed; - border-top-color:#fff; - - width:100%; -} -.x-grid3-row-alt{ - -} - -.x-grid3-row-over { - border:1px solid #dddddd; - background: #efefef url(../images/default/grid/row-over.gif) repeat-x left top; -} - -.x-grid3-resize-proxy { - width:3px; - background-color:#cccccc; - cursor: e-resize; - cursor: col-resize; - position:absolute; - top:0; - height:100px; - overflow:hidden; - visibility:hidden; - border:0 none; - z-index:7; -} -.x-grid3-focus { - position:absolute; - top:0; - -moz-outline:0 none; - outline:0 none; - -moz-user-select: normal; - -khtml-user-select: normal; -} - - -.x-grid3-header{ - background: #f9f9f9 url(../images/default/grid/grid3-hrow.gif) repeat-x 0 bottom; - cursor:default; - zoom:1; - padding:1px 0 0 0; -} - -.x-grid3-header-pop { - border-left:1px solid #d0d0d0; - float:right; - clear:none; -} -.x-grid3-header-pop-inner { - border-left:1px solid #eee; - width:14px; - height:19px; - background: transparent url(../images/default/grid/hd-pop.gif) no-repeat center center; -} -.ext-ie .x-grid3-header-pop-inner { - width:15px; -} -.ext-strict .x-grid3-header-pop-inner { - width:14px; -} -.x-grid3-header-inner { - overflow:hidden; - zoom:1; - float:left; -} -.x-grid3-header-offset { - padding-left:1px; - width:10000px; -} - - - -td.x-grid3-hd-over, td.sort-desc, td.sort-asc, td.x-grid3-hd-menu-open { - border-left:1px solid #aaccf6; - border-right:1px solid #aaccf6; -} -td.x-grid3-hd-over .x-grid3-hd-inner, td.sort-desc .x-grid3-hd-inner, td.sort-asc .x-grid3-hd-inner, td.x-grid3-hd-menu-open .x-grid3-hd-inner { - background: #ebf3fd url(../images/default/grid/grid3-hrow-over.gif) repeat-x left bottom; - -} -.x-grid3-sort-icon{ - background-repeat: no-repeat; - display: none; - height: 4px; - width: 13px; - margin-left:3px; - vertical-align: middle; -} -.sort-asc .x-grid3-sort-icon { - background-image: url(../images/aero/grid/sort_asc.gif); - display: inline; -} -.sort-desc .x-grid3-sort-icon { - background-image: url(../images/aero/grid/sort_desc.gif); - display: inline; -} - - -.x-grid3-body { - overflow:auto; -} -.x-grid3-body-inner { - overflow:auto; -} -.x-grid3-cell-text, .x-grid3-hd-text { - display: block; - padding: 3px 5px 3px 5px; - -moz-user-select: none; - -khtml-user-select: none; - color:black; -} -.x-grid3-split { - background-image: url(../images/default/grid/grid-split.gif); - background-position: center; - background-repeat: no-repeat; - cursor: e-resize; - cursor: col-resize; - display: block; - font-size: 1px; - height: 16px; - overflow: hidden; - position: absolute; - top: 2px; - width: 6px; - z-index: 3; -} - -.x-grid3-hd-text { - color:#15428b; -} - -.x-dd-drag-proxy .x-grid3-hd-inner{ - background: #ebf3fd url(../images/default/grid/grid3-hrow-over.gif) repeat-x left bottom; - width:120px; - padding:3px; - border:1px solid #aaccf6; - overflow:hidden; -} - -.col-move-top, .col-move-bottom{ - width:9px; - height:9px; - position:absolute; - top:0; - line-height:1px; - font-size:1px; - overflow:hidden; - visibility:hidden; - z-index:20000; -} -.col-move-top{ - background:transparent url(../images/default/grid/col-move-top.gif) no-repeat left top; -} -.col-move-bottom{ - background:transparent url(../images/default/grid/col-move-bottom.gif) no-repeat left top; -} - - -.x-grid3-row-selected { - background: #d9e8fb url(../images/default/grid/row-sel.gif) repeat-x left top; - border:1px solid #99bbe8; -} -.x-grid3-row-selected span, .x-grid3-row-selected b, .x-grid3-row-selected div, .x-grid3-row-selected strong, .x-grid3-row-selected i{ - -} -.x-grid3-cell-selected{ - background-color: #316ac5 !important; - color: white; -} -.x-grid3-cell-selected span{ - color: white !important; -} -.x-grid3-cell-selected .x-grid3-cell-text{ - color: white; -} - -.x-grid3-locked td.x-grid3-row-marker, .x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker{ - background: #ebeadb url(../images/default/grid/grid-hrow.gif) repeat-x 0 bottom !important; - vertical-align:middle !important; - color:black; - padding:0; - border-top:1px solid white; - border-bottom:none !important; - border-right:1px solid #6fa0df !important; - text-align:center; -} -.x-grid3-locked td.x-grid3-row-marker div, .x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker div{ - padding:0 4px; - color:#15428b !important; - text-align:center; -} - - -.x-grid3-dirty-cell { - background: transparent url(../images/default/grid/dirty.gif) no-repeat 0 0; -} - - -.x-grid3-topbar, .x-grid3-bottombar{ - font:normal 11px arial, tahoma, helvetica, sans-serif; - overflow:hidden; - display:none; - zoom:1; - position:relative; -} -.x-grid3-topbar .x-toolbar{ - border-right:0 none; -} -.x-grid3-bottombar .x-toolbar{ - border-right:0 none; - border-bottom:0 none; - border-top:1px solid #a9bfd3; -} - -.x-props-grid .x-grid3-cell-selected .x-grid3-cell-text{ - background-color: #316ac5 !important; -} -.x-props-grid .x-grid3-col-value .x-grid3-cell-text{ - background-color: white; -} -.x-props-grid .x-grid3-col-name{ - background-color: #c3daf9; -} -.x-props-grid .x-grid3-col-name .x-grid3-cell-text{ - background-color: white; - margin-left:10px; -} -.x-props-grid .x-grid3-split-value { - visibility:hidden; -} - - -.xg-hmenu-sort-asc .x-menu-item-icon{ - background-image: url(../images/default/grid/hmenu-asc.gif); -} -.xg-hmenu-sort-desc .x-menu-item-icon{ - background-image: url(../images/default/grid/hmenu-desc.gif); -} -.xg-hmenu-lock .x-menu-item-icon{ - background-image: url(../images/default/grid/hmenu-lock.gif); -} -.xg-hmenu-unlock .x-menu-item-icon{ - background-image: url(../images/default/grid/hmenu-unlock.gif); -} - - -.x-grid3-col-dd { - border:0 none; - padding:0; - background:transparent; -} - -.x-dd-drag-ghost .x-grid3-dd-wrap { - padding:1px 3px 3px 1px; -} - -.x-grid3-hd-btn { - display:none; - position:absolute; - width:14px; - background:#c3daf9 url(../images/default/grid/grid3-hd-btn.gif) no-repeat left center; - right:0; - top:0; - z-index:2; - cursor:pointer; -} - -.x-grid3-hd-over .x-grid3-hd-btn, .x-grid3-hd-menu-open .x-grid3-hd-btn { - display:block; -} - -a.x-grid3-hd-btn:hover { - background-position:-14px center; -} - - - -.x-grid3-body .x-grid3-td-expander { - background:transparent url(../images/default/grid/grid3-special-col-bg.gif) repeat-y right; -} -.x-grid3-body .x-grid3-td-expander .x-grid3-cell-inner { - padding:0 !important; - height:100%; -} -.x-grid3-row-expander { - width:100%; - height:18px; - background-position:4px 2px; - background-repeat:no-repeat; - background-color:transparent; - background-image:url(../images/default/grid/row-expand-sprite.gif); -} -.x-grid3-row-collapsed .x-grid3-row-expander { - background-position:4px 2px; -} -.x-grid3-row-expanded .x-grid3-row-expander { - background-position:-21px 2px; -} -.x-grid3-row-collapsed .x-grid3-row-body { - display:none !important; -} -.x-grid3-row-expanded .x-grid3-row-body { - display:block !important; -} - - - -.x-grid3-body .x-grid3-td-checker { - background:transparent url(../images/default/grid/grid3-special-col-bg.gif) repeat-y right; -} - -.x-grid3-body .x-grid3-td-checker .x-grid3-cell-inner, .x-grid3-header .x-grid3-td-checker .x-grid3-hd-inner { - padding:0 !important; - height:100%; -} - -.x-grid3-row-checker, .x-grid3-hd-checker { - width:100%; - height:18px; - background-position:2px 2px; - background-repeat:no-repeat; - background-color:transparent; - background-image:url(../images/default/grid/row-check-sprite.gif); -} -.x-grid3-row .x-grid3-row-checker { - background-position:2px 2px; -} -.x-grid3-row-selected .x-grid3-row-checker, .x-grid3-hd-checker-on .x-grid3-hd-checker { - background-position:-23px 2px; -} -.x-grid3-hd-checker { - background-position:2px 3px; -} -.x-grid3-hd-checker-on .x-grid3-hd-checker { - background-position:-23px 3px; -} - - - -.x-grid3-body .x-grid3-td-numberer { - background:transparent url(../images/default/grid/grid3-special-col-bg.gif) repeat-y right; -} -.x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner { - padding:3px 5px 0 0 !important; - text-align:right; - color:#444; -} - - - -.x-grid3-body .x-grid3-row-selected .x-grid3-td-numberer, -.x-grid3-body .x-grid3-row-selected .x-grid3-td-checker, -.x-grid3-body .x-grid3-row-selected .x-grid3-td-expander { - background:transparent url(../images/default/grid/grid3-special-col-sel-bg.gif) repeat-y right; -} - - -.x-layout-container{ - width:100%; - height:100%; - overflow:hidden; - background-color:#c3daf9; -} -.x-layout-container .x-layout-tabs-body{ - border:0 none; -} -.x-layout-collapsed{ - position:absolute; - left:-10000px; - top:-10000px; - visibility:hidden; - background-color:#c3daf9; - width:20px; - height:20px; - overflow:hidden; - border:1px solid #98c0f4; - z-index:20; -} -.ext-border-box .x-layout-collapsed{ - width:22px; - height:22px; -} -.x-layout-collapsed-over{ - cursor:pointer; - background-color:#d9e8fb; -} -.x-layout-collapsed-west .x-layout-collapsed-tools, .x-layout-collapsed-east .x-layout-collapsed-tools{ - position:absolute; - top:0; - left:0; - width:20px; - height:20px; -} -.x-layout-collapsed-north .x-layout-collapsed-tools, .x-layout-collapsed-south .x-layout-collapsed-tools{ - position:absolute; - top:0; - right:0; - width:20px; - height:20px; -} -.x-layout-collapsed .x-layout-tools-button{ - margin:0; -} -.x-layout-collapsed .x-layout-tools-button-inner{ - width:16px; - height:16px; -} -.x-layout-inactive-content{ - position:absolute; - left:-10000px; - top:-10000px; - visibility:hidden; -} -.x-layout-active-content{ - visibility:visible; -} -.x-layout-panel{ - position:absolute;border:1px solid #98c0f4;overflow:hidden;background-color:white; -} -.x-layout-panel-east, .x-layout-panel-west { - z-index:10; -} -.x-layout-panel-north, .x-layout-panel-south { - z-index:11; -} -.x-layout-collapsed-north, .x-layout-collapsed-south, .x-layout-collapsed-east, .x-layout-collapsed-west { - z-index:12; -} -.x-layout-panel-body{ - overflow:hidden; -} -.x-layout-grid-wrapper{ - -} -.x-layout-split{ - position:absolute; - height:5px; - width:5px; - line-height:1px; - font-size:1px; - z-index:3; - background-color:#c3daf9; -} -.x-layout-panel-hd{ - background-image: url(../images/default/layout/panel-title-light-bg.gif); - color: black; - border-bottom:1px solid #98c0f4; - position:relative; -} -.x-layout-panel-hd-text{ - font:normal 11px tahoma, verdana, helvetica; - padding: 4px; - padding-left: 4px; - display:block; - white-space:nowrap; -} -.x-layout-panel-hd-tools{ - position:absolute; - right:0; - top:0; - text-align:right; - padding-top:2px; - padding-right:2px; - width:60px; -} -.x-layout-tools-button{ - z-index:6; - padding:2px; - cursor:pointer; - float:right; -} -.x-layout-tools-button-over{ - padding:1px; - border:1px solid #98c0f4; - background-color:white; -} -.x-layout-tools-button-inner{ - height:12px; - width:12px; - line-height:1px; - font-size:1px; - background-repeat:no-repeat; - background-position:center; -} -.x-layout-close{ - background-image:url(../images/default/layout/panel-close.gif); -} -.x-layout-stick{ - background-image:url(../images/default/layout/stick.gif); -} -.x-layout-collapse-west,.x-layout-expand-east{ - background-image:url(../images/default/layout/collapse.gif); -} -.x-layout-expand-west,.x-layout-collapse-east{ - background-image:url(../images/default/layout/expand.gif); -} -.x-layout-collapse-north,.x-layout-expand-south{ - background-image:url(../images/default/layout/ns-collapse.gif); -} -.x-layout-expand-north,.x-layout-collapse-south{ - background-image:url(../images/default/layout/ns-expand.gif); -} -.x-layout-split-h{ - background-image:url(../images/default/sizer/e-handle.gif); - background-position: left; -} -.x-layout-split-v{ - background-image:url(../images/default/sizer/s-handle.gif); - background-position: top; -} -.x-layout-panel .x-tabs-wrap{ - background:url(../images/default/layout/gradient-bg.gif); -} -.x-layout-panel .x-tabs-body { - background-color:white; - overflow:auto;height:100%; -} -.x-layout-component-panel, .x-layout-nested-layout { - position:relative; - padding:0; - overflow:hidden; - width:200px; - height:200px; -} -.x-layout-nested-layout .x-layout-panel { - border:0 none; -} -.x-layout-nested-layout .x-layout-panel-north { - border-bottom:1px solid #98c0f4; -} -.x-layout-nested-layout .x-layout-panel-south { - border-top:1px solid #98c0f4; -} -.x-layout-nested-layout .x-layout-panel-east { - border-left:1px solid #98c0f4; -} -.x-layout-nested-layout .x-layout-panel-west { - border-right:1px solid #98c0f4; -} - -.x-layout-panel-dragover { - border: 2px solid #6593cf; -} -.x-layout-panel-proxy { - background-image: url(../images/default/layout/gradient-bg.gif); - background-color:#c3daf9; - border:1px dashed #6593cf; - z-index:10001; - overflow:hidden; - position:absolute; - left:0;top:0; -} -.x-layout-slider { - z-index:15; - overflow:hidden; - position:absolute; -} - -.x-scroller-up, .x-scroller-down { - background-color:#c3daf9; - border: 1px solid #6593cf; - border-top-color: #fff; - border-left-color: #fff; - border-right:0 none; - cursor:pointer; - overflow:hidden; - line-height:16px; -} -.x-scroller-down { - border-bottom: 0 none; - border-top: 1px solid #6593cf; -} -.x-scroller-btn-over { - background-color: #d9e8f8; -} -.x-scroller-btn-click { - background-color: #AECEF7; -} -.x-scroller-btn-disabled { - cursor:default; - background-color: #c3daf9; - -moz-opacity: 0.3; - opacity:.30; - filter: alpha(opacity=30); -} - - - -.x-reader .x-layout-panel-north { - border:0 none; -} -.x-reader .x-layout-panel-center{ - border:0 none; -} -.x-reader .x-layout-nested-layout .x-layout-panel-center{ - border:1px solid #99bbe8; - border-top:0 none; -} -.x-reader .x-layout-nested-layout .x-layout-panel-south{ - border:1px solid #99bbe8; -} -.x-dlg-proxy { - background-image: url(../images/default/gradient-bg.gif); - background-color:#c3daf9; - border:1px solid #6593cf; - z-index:10001; - overflow:hidden; - position:absolute; - left:0;top:0; -} -.x-dlg-shadow{ - background:#aaaaaa; - position:absolute; - left:0;top:0; -} -.x-dlg-focus{ - -moz-outline:0 none; - outline:0 none; - width:0; - height:0; - overflow:hidden; - position:absolute; - top:0; - left:0; -} -.x-dlg-mask{ - z-index:10000; - display:none; - position:absolute; - top:0; - left:0; - -moz-opacity: 0.5; - opacity:.50; - filter: alpha(opacity=50); - background-color:#CCC; -} -body.x-body-masked select { - visibility:hidden; -} -body.x-body-masked .x-dlg select { - visibility:visible; -} -.x-dlg{ - z-index:10001; - overflow:hidden; - position:absolute; - left:300;top:0; -} -.x-dlg .x-dlg-hd { - background: url(../images/default/basic-dialog/hd-sprite.gif) repeat-x 0 -82px; - background-color:navy; - color:#FFF; - font:bold 12px "sans serif", tahoma, verdana, helvetica; - overflow:hidden; - padding:5px; - white-space: nowrap; -} -.x-dlg .x-dlg-hd-left { - background: url(../images/default/basic-dialog/hd-sprite.gif) no-repeat 0 -41px; - padding-left:3px; - margin:0; -} -.x-dlg .x-dlg-hd-right { - background: url(../images/default/basic-dialog/hd-sprite.gif) no-repeat right 0; - padding-right:3px; -} -.x-dlg .x-dlg-dlg-body{ - background:url(../images/default/layout/gradient-bg.gif); - border:1px solid #6593cf; - border-top:0 none; - padding:10px; - position:absolute; - top:24px;left:0; - z-index:1; - overflow:hidden; -} -.x-dlg-collapsed .x-resizable-handle{ - display:none; -} -.x-dlg .x-dlg-bd{ - overflow:hidden; -} -.x-dlg .x-dlg-ft{ - overflow:hidden; - padding:5px; - padding-bottom:0; -} - -.x-dlg .x-tabs-body{ - background:white; - overflow:auto; -} -.x-dlg .x-tabs-top .x-tabs-body{ - border:1px solid #6593cf; - border-top:0 none; -} -.x-dlg .x-tabs-bottom .x-tabs-body{ - border:1px solid #6593cf; - border-bottom:0 none; -} -.x-dlg .x-layout-container .x-tabs-body{ - border:0 none; -} -.x-dlg .inner-tab{ - margin:5px; -} -.x-dlg .x-dlg-ft .x-btn{ - margin-right:5px; - float:right; - clear:none; -} -.x-dlg .x-dlg-ft .x-dlg-btns td { - border:0; - padding:0; -} -.x-dlg .x-dlg-ft .x-dlg-btns-right table{ - float:right; - clear:none; -} -.x-dlg .x-dlg-ft .x-dlg-btns-left table{ - float:left; - clear:none; -} -.x-dlg .x-dlg-ft .x-dlg-btns-center{ - text-align:center; -} -.x-dlg .x-dlg-ft .x-dlg-btns-center table{ - margin:0 auto; -} - - -.x-dlg .x-dlg-ft .x-dlg-btns .x-btn-focus .x-btn-left{ - background-position:0 -147px; -} -.x-dlg .x-dlg-ft .x-dlg-btns .x-btn-focus .x-btn-right{ - background-position:0 -168px; -} -.x-dlg .x-dlg-ft .x-dlg-btns .x-btn-focus .x-btn-center{ - background-position:0 -189px; -} - -.x-dlg .x-dlg-ft .x-dlg-btns .x-btn-click .x-btn-center{ - background-position:0 -126px; -} -.x-dlg .x-dlg-ft .x-dlg-btns .x-btn-click .x-btn-right{ - background-position:0 -84px; -} -.x-dlg .x-dlg-ft .x-dlg-btns .x-btn-click .x-btn-left{ - background-position:0 -63px; -} - -.x-dlg-draggable .x-dlg-hd{ - cursor:move; -} -.x-dlg-closable .x-dlg-hd{ - padding-right:22px; -} -.x-dlg-toolbox { - position:absolute; - top:4px; - right:4px; - z-index:6; - width:40px; - cursor:default; - height:15px; - background:transparent; -} -.x-dlg .x-dlg-close, .x-dlg .x-dlg-collapse { - float:right; - height:15px; - width:15px; - margin:0; - margin-left:2px; - padding:0; - line-height:1px; - font-size:1px; - background-repeat:no-repeat; - cursor:pointer; - visibility:inherit; -} -.x-dlg .x-dlg-close { - background-image:url(../images/default/basic-dialog/close.gif); -} -.x-dlg .x-dlg-collapse { - background-image:url(../images/default/basic-dialog/collapse.gif); -} -.x-dlg-collapsed .x-dlg-collapse { - background-image:url(../images/default/basic-dialog/expand.gif); -} -.x-dlg .x-dlg-close-over, .x-dlg .x-dlg-collapse-over { - -} -.x-dlg div.x-resizable-handle-east{ - background-image:url(../images/default/basic-dialog/e-handle.gif); - border:0; - background-position:right; - margin-right:0; -} -.x-dlg div.x-resizable-handle-south{ - background-image:url(../images/default/sizer/s-handle-dark.gif); - border:0; - height:6px; -} -.x-dlg div.x-resizable-handle-west{ - background-image:url(../images/default/basic-dialog/e-handle.gif); - border:0; - background-position:1px; -} -.x-dlg div.x-resizable-handle-north{ - background-image:url(../images/default/s.gif); - border:0; -} -.x-dlg div.x-resizable-handle-northeast, .ytheme-gray .x-dlg div.x-resizable-handle-northeast{ - background-image:url(../images/default/s.gif); - border:0; -} -.x-dlg div.x-resizable-handle-northwest, .ytheme-gray .x-dlg div.x-resizable-handle-northwest{ - background-image:url(../images/default/s.gif); - border:0; -} -.x-dlg div.x-resizable-handle-southeast{ - background-image:url(../images/default/basic-dialog/se-handle.gif); - background-position: bottom right; - width:8px; - height:8px; - border:0; -} -.x-dlg div.x-resizable-handle-southwest{ - background-image:url(../images/default/sizer/sw-handle-dark.gif); - background-position: top right; - margin-left:1px; - margin-bottom:1px; - border:0; -} - -#x-msg-box .x-dlg-ft .x-btn{ - float:none; - clear:none; - margin:0 3px; -} - -#x-msg-box .x-dlg-bd { - padding:5px; - overflow:hidden !important; - font:normal 13px verdana,tahoma,sans-serif; -} -#x-msg-box .ext-mb-input { - margin-top:4px; - width:95%; -} -#x-msg-box .ext-mb-textarea { - margin-top:4px; - font:normal 13px verdana,tahoma,sans-serif; -} -#x-msg-box .ext-mb-progress-wrap { - margin-top:4px; - border:1px solid #6593cf; -} -#x-msg-box .ext-mb-progress { - height:18px; - background: #e0e8f3 url(../images/default/qtip/bg.gif) repeat-x; -} -#x-msg-box .ext-mb-progress-bar { - height:18px; - overflow:hidden; - width:0; - background:#8BB8F3; - border-top:1px solid #B2D0F7; - border-bottom:1px solid #65A1EF; - border-right:1px solid #65A1EF; -} - -#x-msg-box .x-msg-box-wait { - background: transparent url(../images/default/grid/loading.gif) no-repeat left; - display:block; - width:300px; - padding-left:18px; - line-height:18px; -} -.x-dd-drag-proxy{ - position:absolute; - left:0;top:0; - visibility:hidden; - z-index:15000; -} -.x-dd-drag-ghost{ - color: black; - font: normal 11px arial, helvetica, sans-serif; - -moz-opacity: 0.85; - opacity:.85; - filter: alpha(opacity=85); - border-top:1px solid #dddddd; - border-left:1px solid #dddddd; - border-right:1px solid #bbbbbb; - border-bottom:1px solid #bbbbbb; - padding:3px; - padding-left:20px; - background-color:white; - white-space:nowrap; -} -.x-dd-drag-repair .x-dd-drag-ghost{ - -moz-opacity: 0.4; - opacity:.4; - filter: alpha(opacity=40); - border:0 none; - padding:0; - background-color:transparent; -} -.x-dd-drag-repair .x-dd-drop-icon{ - visibility:hidden; -} -.x-dd-drop-icon{ - position:absolute; - top:3px; - left:3px; - display:block; - width:16px; - height:16px; - background-color:transparent; - background-position: center; - background-repeat: no-repeat; - z-index:1; -} -.x-dd-drop-nodrop .x-dd-drop-icon{ - background-image: url(../images/default/dd/drop-no.gif); -} -.x-dd-drop-ok .x-dd-drop-icon{ - background-image: url(../images/default/dd/drop-yes.gif); -} -.x-dd-drop-ok-add .x-dd-drop-icon{ - background-image: url(../images/default/dd/drop-add.gif); -} -.x-tree-icon, .x-tree-ec-icon, .x-tree-elbow-line, .x-tree-elbow, .x-tree-elbow-end, .x-tree-elbow-plus, .x-tree-elbow-minus, .x-tree-elbow-end-plus, .x-tree-elbow-end-minus{ - border: 0 none; - height: 18px; - margin: 0; - padding: 0; - vertical-align: middle; - width: 16px; - background-repeat: no-repeat; -} -.x-tree-node-collapsed .x-tree-node-icon, .x-tree-node-expanded .x-tree-node-icon, .x-tree-node-leaf .x-tree-node-icon{ - border: 0 none; - height: 18px; - margin: 0; - padding: 0; - vertical-align: middle; - width: 16px; - background-position:center; - background-repeat: no-repeat; -} - - -.x-tree-node-collapsed .x-tree-node-icon{ - background-image:url(../images/default/tree/folder.gif); -} -.x-tree-node-expanded .x-tree-node-icon{ - background-image:url(../images/default/tree/folder-open.gif); -} -.x-tree-node-leaf .x-tree-node-icon{ - background-image:url(../images/default/tree/leaf.gif); -} - -.x-tree-noicon .x-tree-node-icon{ - width:0; height:0; -} - -.x-tree-node-loading .x-tree-node-icon{ - background-image:url(../images/default/tree/loading.gif) !important; -} -.x-tree-node-loading a span{ - font-style: italic; - color:#444444; -} - - -.x-tree-lines .x-tree-elbow{ - background-image:url(../images/default/tree/elbow.gif); -} -.x-tree-lines .x-tree-elbow-plus{ - background-image:url(../images/default/tree/elbow-plus.gif); -} -.x-tree-lines .x-tree-elbow-minus{ - background-image:url(../images/default/tree/elbow-minus.gif); -} -.x-tree-lines .x-tree-elbow-end{ - background-image:url(../images/default/tree/elbow-end.gif); -} -.x-tree-lines .x-tree-elbow-end-plus{ - background-image:url(../images/default/tree/elbow-end-plus.gif); -} -.x-tree-lines .x-tree-elbow-end-minus{ - background-image:url(../images/default/tree/elbow-end-minus.gif); -} -.x-tree-lines .x-tree-elbow-line{ - background-image:url(../images/default/tree/elbow-line.gif); -} - - -.x-tree-no-lines .x-tree-elbow{ - background:transparent; -} -.x-tree-no-lines .x-tree-elbow-plus{ - background-image:url(../images/default/tree/elbow-plus-nl.gif); -} -.x-tree-no-lines .x-tree-elbow-minus{ - background-image:url(../images/default/tree/elbow-minus-nl.gif); -} -.x-tree-no-lines .x-tree-elbow-end{ - background:transparent; -} -.x-tree-no-lines .x-tree-elbow-end-plus{ - background-image:url(../images/default/tree/elbow-end-plus-nl.gif); -} -.x-tree-no-lines .x-tree-elbow-end-minus{ - background-image:url(../images/default/tree/elbow-end-minus-nl.gif); -} -.x-tree-no-lines .x-tree-elbow-line{ - background:transparent; -} - -.x-tree-elbow-plus, .x-tree-elbow-minus, .x-tree-elbow-end-plus, .x-tree-elbow-end-minus{ - cursor:pointer; -} -.ext-ie ul.x-tree-node-ct{ - font-size:0; - line-height:0; -} -.x-tree-node{ - color: black; - font: normal 11px arial, tahoma, helvetica, sans-serif; - white-space: nowrap; -} -.x-tree-node a, .x-dd-drag-ghost a{ - text-decoration:none; - color:black; - -khtml-user-select:none; - -moz-user-select:none; - -kthml-user-focus:normal; - -moz-user-focus:normal; - -moz-outline: 0 none; - outline:0 none; -} -.x-tree-node a span, .x-dd-drag-ghost a span{ - text-decoration:none; - color:black; - padding:1px 3px 1px 2px; -} -.x-tree-node .x-tree-node-disabled a span{ - color:gray !important; -} -.x-tree-node .x-tree-node-disabled .x-tree-node-icon{ - -moz-opacity: 0.5; - opacity:.5; - filter: alpha(opacity=50); -} -.x-tree-node .x-tree-node-inline-icon{ - background:transparent; -} -.x-tree-node a:hover, .x-dd-drag-ghost a:hover{ - text-decoration:none; -} -.x-tree-node div.x-tree-drag-insert-below{ - border-bottom:1px dotted #3366cc; -} -.x-tree-node div.x-tree-drag-insert-above{ - border-top:1px dotted #3366cc; -} -.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below{ - border-bottom:0 none; -} -.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above{ - border-top:0 none; -} -.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below a{ - border-bottom:2px solid #3366cc; -} -.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above a{ - border-top:2px solid #3366cc; -} -.x-tree-node .x-tree-drag-append a span{ - background:#dddddd; - border:1px dotted gray; -} -.x-tree-node .x-tree-selected a span{ - background:#3366cc; - color:white; -} -.x-dd-drag-ghost .x-tree-node-indent, .x-dd-drag-ghost .x-tree-ec-icon{ - display:none !important; -} -.x-tree-drop-ok-append .x-dd-drop-icon{ - background-image: url(../images/default/tree/drop-add.gif); -} -.x-tree-drop-ok-above .x-dd-drop-icon{ - background-image: url(../images/default/tree/drop-over.gif); -} -.x-tree-drop-ok-below .x-dd-drop-icon{ - background-image: url(../images/default/tree/drop-under.gif); -} -.x-tree-drop-ok-between .x-dd-drop-icon{ - background-image: url(../images/default/tree/drop-between.gif); -} - -.x-tip{ - position: absolute; - top: 0; - left:0; - visibility: hidden; - z-index: 20000; - border:0 none; -} -.x-tip .x-tip-close{ - background-image: url(../images/default/qtip/close.gif); - height: 15px; - float:right; - width: 15px; - margin:0 0 2px 2px; - cursor:pointer; - display:none; -} -.x-tip .x-tip-top { - background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -12px; - height:6px; - overflow:hidden; -} -.x-tip .x-tip-top-left { - background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 0; - padding-left:6px; - zoom:1; -} -.x-tip .x-tip-top-right { - background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat right 0; - padding-right:6px; - zoom:1; -} -.x-tip .x-tip-ft { - background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -18px; - height:6px; - overflow:hidden; -} -.x-tip .x-tip-ft-left { - background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -6px; - padding-left:6px; - zoom:1; -} -.x-tip .x-tip-ft-right { - background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat right -6px; - padding-right:6px; - zoom:1; -} -.x-tip .x-tip-bd { - border:0 none; - font: normal 11px tahoma,arial,helvetica,sans-serif; -} -.x-tip .x-tip-bd-left { - background: #fff url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -24px; - padding-left:6px; - zoom:1; -} -.x-tip .x-tip-bd-right { - background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat right -24px; - padding-right:6px; - zoom:1; -} - -.x-tip h3 { - font: bold 11px tahoma,arial,helvetica,sans-serif; - margin:0; - padding:2px 0; - color:#444; -} -.x-tip .x-tip-bd-inner { - font: normal 11px tahoma,arial,helvetica,sans-serif; - margin:0 !important; - line-height:14px; - color:#444; - padding:0; - float:left; -} - - -.x-form-invalid-tip { -} - -.x-form-invalid-tip .x-tip-top { - background-image: url(../images/default/form/error-tip-corners.gif); -} -.x-form-invalid-tip .x-tip-top-left { - background-image: url(../images/default/form/error-tip-corners.gif); -} -.x-form-invalid-tip .x-tip-top-right { - background-image: url(../images/default/form/error-tip-corners.gif); -} -.x-form-invalid-tip .x-tip-ft { - background-image: url(../images/default/form/error-tip-corners.gif); -} -.x-form-invalid-tip .x-tip-ft-left { - background-image: url(../images/default/form/error-tip-corners.gif); -} -.x-form-invalid-tip .x-tip-ft-right { - background-image: url(../images/default/form/error-tip-corners.gif); -} -.x-form-invalid-tip .x-tip-bd-left { - background-image: url(../images/default/form/error-tip-corners.gif); -} -.x-form-invalid-tip .x-tip-bd-right { - background-image: url(../images/default/form/error-tip-corners.gif); -} -.x-form-invalid-tip .x-tip-bd .x-tip-bd-inner { - padding-left:24px; - background:transparent url(../images/default/form/exclamation.gif) no-repeat 2px 2px; -} -.x-form-invalid-tip .x-tip-bd-inner { - padding:2px; -} -.x-date-picker { - border: 1px solid #1b376c; - border-top:0 none; - background:#fff; - position:relative; -} -.x-date-picker a { - -moz-outline:0 none; - outline:0 none; -} -.x-date-inner, .x-date-inner td, .x-date-inner th{ - border-collapse:separate; -} -.x-date-middle,.x-date-left,.x-date-right { - background: url(../images/default/basic-dialog/hd-sprite.gif) repeat-x 0 -83px; - color:#FFF; - font:bold 11px "sans serif", tahoma, verdana, helvetica; - overflow:hidden; -} - -.x-date-middle .x-btn-left,.x-date-middle .x-btn-center,.x-date-middle .x-btn-right{ - background:transparent !important; - vertical-align:middle; -} -.x-date-middle .x-btn .x-btn-text { - color:#fff; -} -.x-date-middle .x-btn-with-menu .x-btn-center em { - background:transparent url(../images/default/toolbar/btn-arrow-light.gif) no-repeat right 0; -} -.x-date-right, .x-date-left { - width:18px; -} -.x-date-right{ - text-align:right; -} -.x-date-middle { - padding-top:2px;padding-bottom:2px; -} -.x-date-right a, .x-date-left a{ - display:block; - width:16px; - height:16px; - background-position: center; - background-repeat: no-repeat; - cursor:pointer; - -moz-opacity: 0.6; - opacity:.6; - filter: alpha(opacity=60); -} -.x-date-right a:hover, .x-date-left a:hover{ - -moz-opacity: 1; - opacity:1; - filter: alpha(opacity=100); -} -.x-date-right a { - background-image: url(../images/default/shared/right-btn.gif); - margin-right:2px; - text-decoration:none !important; -} -.x-date-left a{ - background-image: url(../images/default/shared/left-btn.gif); - margin-left:2px; - text-decoration:none !important; -} -table.x-date-inner { - width:100%; - table-layout:fixed; -} -.x-date-inner th { - width:25px; -} -.x-date-inner th { - background: #dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top; - text-align:right !important; - border-bottom: 1px solid #a3bad9; - font:normal 10px arial, helvetica,tahoma,sans-serif; - color:#233d6d; - cursor:default; - padding:0; - border-collapse:separate; -} -.x-date-inner th span { - display:block; - padding:2px; - padding-right:7px; -} -.x-date-inner td { - border: 1px solid #fff; - text-align:right; - padding:0; -} -.x-date-inner a { - padding:2px 5px; - display:block; - font:normal 11px arial, helvetica,tahoma,sans-serif; - text-decoration:none; - color:black; - text-align:right; - zoom:1; -} -.x-date-inner .x-date-active{ - cursor:pointer; - color:black; -} -.x-date-inner .x-date-selected a{ - background: #dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top; - border:1px solid #8db2e3; - padding:1px 4px; -} -.x-date-inner .x-date-today a{ - border: 1px solid darkred; - padding:1px 4px; -} -.x-date-inner .x-date-selected span{ - font-weight:bold; -} -.x-date-inner .x-date-prevday a,.x-date-inner .x-date-nextday a { - color:#aaaaaa; - text-decoration:none !important; -} -.x-date-bottom { - padding:4px; - border-top: 1px solid #a3bad9; - background: #dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top; -} - -.x-date-inner a:hover, .x-date-inner .x-date-disabled a:hover{ - text-decoration:none !important; - color:black; - background: #ddecfe; -} - -.x-date-inner .x-date-disabled a { - cursor:default; - background:#eeeeee; - color:#bbbbbb; -} -.x-date-mmenu{ - background:#eeeeee !important; -} -.x-date-mmenu .x-menu-item { - font-size:10px; - padding:1px 24px 1px 4px; - white-space: nowrap; - color:#000; -} -.x-date-mmenu .x-menu-item .x-menu-item-icon { - width:10px;height:10px;margin-right:5px; - background-position:center -4px !important; -} - -.x-date-mp { - position:absolute; - left:0; - top:0; - background:white; - display:none; -} -.x-date-mp td { - padding:2px; - font:normal 11px arial, helvetica,tahoma,sans-serif; -} -td.x-date-mp-month,td.x-date-mp-year,td.x-date-mp-ybtn { - border: 0 none; - text-align:center; - vertical-align: middle; - width:25%; -} -.x-date-mp-ok { - margin-right:3px; -} -.x-date-mp-btns button { - text-decoration:none; - text-align:center; - text-decoration:none !important; - background:#083772; - color:white; - border:1px solid; - border-color: #3366cc #000055 #000055 #3366cc; - padding:1px 3px 1px; - font:normal 11px arial, helvetica,tahoma,sans-serif; - cursor:pointer; -} -.x-date-mp-btns { - background: #dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top; -} -.x-date-mp-btns td { - border-top: 1px solid #c5d2df; - text-align:center; -} -td.x-date-mp-month a,td.x-date-mp-year a { - display:block; - padding:2px 4px; - text-decoration:none; - text-align:center; - color:#15428b; -} - -td.x-date-mp-month a:hover,td.x-date-mp-year a:hover { - color:#15428b; - text-decoration:none; - cursor:pointer; - background: #ddecfe; -} - -td.x-date-mp-sel a { - padding:1px 3px; - background: #dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top; - border:1px solid #8db2e3; -} -.x-date-mp-ybtn a { - overflow:hidden; - width:15px; - height:15px; - cursor:pointer; - background:transparent url(../images/default/panel/tool-sprites.gif) no-repeat; - display:block; - margin:0 auto; -} -.x-date-mp-ybtn a.x-date-mp-next { - background-position:0 -120px; -} -.x-date-mp-ybtn a.x-date-mp-next:hover { - background-position:-15px -120px; -} -.x-date-mp-ybtn a.x-date-mp-prev { - background-position:0 -105px; -} -.x-date-mp-ybtn a.x-date-mp-prev:hover { - background-position:-15px -105px; -} -.x-date-mp-ybtn { - text-align:center; -} -td.x-date-mp-sep { - border-right:1px solid #c5d2df; -} -.x-menu { - border:1px solid #718bb7; - z-index: 15000; - background: #fff url(../images/default/menu/menu.gif) repeat-y; -} -.ext-ie .x-menu { - zoom:1; - overflow:hidden; -} -.x-menu-list{ - border:1px solid #fff; -} -.x-menu li{ - line-height:100%; -} -.x-menu li.x-menu-sep-li{ - font-size:1px; - line-height:1px; -} -.x-menu-list-item{ - font:normal 11px tahoma,arial, sans-serif; - white-space: nowrap; - -moz-user-select: none; - -khtml-user-select: none; - display:block; - padding:1px; -} -.x-menu-item-arrow{ - background:transparent url(../images/default/menu/menu-parent.gif) no-repeat right; -} -.x-menu-sep { - display:block; - font-size:1px; - line-height:1px; - background:#c3daf9; - margin: 3px 3px 3px 32px; -} -.x-menu-focus { - position:absolute; - left:0; - top:-5px; - width:0; - height:0; - line-height:1px; -} -.x-menu-item { - display:block; - line-height:14px; - padding:3px 21px 3px 3px; - white-space: nowrap; - text-decoration:none; - color:#233d6d; - -moz-outline: 0 none; - outline: 0 none; - cursor:pointer; -} -.x-menu-item-active { - color:#233d6d; - background:#c3daf9; - border:1px solid #8BB8F3; - padding:0; -} -.x-menu-item-icon { - border: 0 none; - height: 16px; - padding: 0; - vertical-align: middle; - width: 16px; - margin: 0 11px 0 0; - background-position:center; -} - -.x-menu-check-item .x-menu-item-icon{ - background: transparent url(../images/default/menu/unchecked.gif) no-repeat center; -} - -.x-menu-item-checked .x-menu-item-icon{ - background-image:url(../images/default/menu/checked.gif); -} -.x-menu-group-item .x-menu-item-icon{ - background: transparent; -} - -.x-menu-item-checked .x-menu-group-item .x-menu-item-icon{ - background: transparent url(../images/default/menu/group-checked.gif) no-repeat center; -} - -.x-menu-plain { - background:#fff; -} -.x-menu-date-item{ - padding:0; -} - -.x-menu .x-color-palette, .x-menu .x-date-picker{ - margin-left:32px; - margin-right:4px; -} -.x-menu .x-date-picker{ - border:1px solid #a3bad9; - margin-top:2px; - margin-bottom:2px; -} -.x-menu-plain .x-color-palette, .x-menu-plain .x-date-picker{ - margin:0; - border:0 none; -} -.x-date-menu { - padding:0 !important; -} - - - -.x-box-tl { - background: transparent url(../images/default/box/corners.gif) no-repeat 0 0; - zoom:1; -} - -.x-box-tc { - height: 8px; - background: transparent url(../images/default/box/tb.gif) repeat-x 0 0; - overflow: hidden; -} - -.x-box-tr { - background: transparent url(../images/default/box/corners.gif) no-repeat right -8px; -} - -.x-box-ml { - background: transparent url(../images/default/box/l.gif) repeat-y 0; - padding-left: 4px; - overflow: hidden; - zoom:1; -} - -.x-box-mc { - background: #eee url(../images/default/box/tb.gif) repeat-x 0 -16px; - padding: 4px 10px; - font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif; - color: #393939; - font-size: 12px; -} - -.x-box-mc h3 { - font-size: 14px; - font-weight: bold; - margin: 0 0 4 0; - zoom:1; -} - -.x-box-mr { - background: transparent url(../images/default/box/r.gif) repeat-y right; - padding-right: 4px; - overflow: hidden; -} - -.x-box-bl { - background: transparent url(../images/default/box/corners.gif) no-repeat 0 -16px; - zoom:1; -} - -.x-box-bc { - background: transparent url(../images/default/box/tb.gif) repeat-x 0 -8px; - height: 8px; - overflow: hidden; -} - -.x-box-br { - background: transparent url(../images/default/box/corners.gif) no-repeat right -24px; -} - -.x-box-tl, .x-box-bl { - padding-left: 8px; - overflow: hidden; -} - -.x-box-tr, .x-box-br { - padding-right: 8px; - overflow: hidden; -} - -.x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr { - background-image: url(../images/default/box/corners-blue.gif); -} - -.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc { - background-image: url(../images/default/box/tb-blue.gif); -} - -.x-box-blue .x-box-mc { - background-color: #c3daf9; -} - -.x-box-blue .x-box-mc h3 { - color: #17385b; -} - -.x-box-blue .x-box-ml { - background-image: url(../images/default/box/l-blue.gif); -} - -.x-box-blue .x-box-mr { - background-image: url(../images/default/box/r-blue.gif); -} -#x-debug-browser .x-tree .x-tree-node a span { - color:#222297; - font-size:12px; - padding-top:2px; - font-family:"courier","courier new"; - line-height:18px; -} -#x-debug-browser .x-tree a i { - color:#FF4545; - font-style:normal; -} -#x-debug-browser .x-tree a em { - color:#999; -} -#x-debug-browser .x-tree .x-tree-node .x-tree-selected a span{ - background:#c3daf9; -} -#x-debug-browser pre, .x-debug-browser pre xmp { - font:normal 11px tahoma, arial, helvetica, sans-serif !important; - white-space: -moz-pre-wrap; - white-space: -pre-wrap; - white-space: -o-pre-wrap; - word-wrap: break-word; -} -#x-debug-browser pre { - display:block; - padding:5px !important; - border-bottom:1px solid #eeeeee !important; -} -#x-debug-browser pre xmp { - padding:0 !important; - margin:0 !important; -} -#x-debug-console .x-layout-panel-center, #x-debug-inspector .x-layout-panel-center { - border-right:1px solid #98c0f4; -} -#x-debug-console textarea { - border: 0 none; - font-size:12px; - font-family:"courier","courier new"; - padding-top:4px; - padding-left:4px; -} -.x-debug-frame { - background:#eeeeee; - border:1px dashed #aaaaaa; -} -.x-combo-list { - border:1px solid #98c0f4; - background:#ddecfe; - zoom:1; - overflow:hidden; -} -.x-combo-list-inner { - overflow:auto; - background:white; - position:relative; - zoom:1; - overflow-x:hidden; -} -.x-combo-list-hd { - font:bold 11px tahoma, arial, helvetica, sans-serif; - color:#15428b; - background-image: url(../images/default/layout/panel-title-light-bg.gif); - border-bottom:1px solid #98c0f4; - padding:3px; -} -.x-resizable-pinned .x-combo-list-inner { - border-bottom:1px solid #98c0f4; -} -.x-combo-list-item { - font:normal 12px tahoma, arial, helvetica, sans-serif; - padding:2px; - border:1px solid #fff; - white-space: nowrap; - overflow:hidden; - text-overflow: ellipsis; -} -.x-combo-list .x-combo-selected{ - background-color: #c3daf9 !important; - cursor:pointer; - border:1px solid #336699; -} -.x-combo-noedit{ - cursor:pointer; -} -.x-panel-header { - overflow:hidden; - zoom:1; - color:#15428b; - font:bold 11px tahoma,arial,verdana,sans-serif; - padding:5px 3px 4px 5px; - border:1px solid #99bbe8; - background: transparent url(../images/default/panel/white-top-bottom.gif) repeat-x 0 -1px; -} - -.x-panel-body { - border:1px solid #99bbe8; - border-top:0 none; - overflow:hidden; - background:white; -} -.x-panel-body-noheader { - border-top:1px solid #99bbe8; -} - -.x-panel-header { - overflow:hidden; - zoom:1; -} -.x-panel-tl .x-panel-header { - color:#15428b; - font:bold 11px tahoma,arial,verdana,sans-serif; - padding:5px 0 4px 0; - border:0 none; - background:transparent; -} -.x-panel-tl .x-panel-icon, .x-window-tl .x-panel-icon { - padding-left:20px !important; - background-repeat:no-repeat; - background-position:0 4px; - zoom:1; -} -.x-panel-inline-icon { - width:16px; - height:16px; - background-repeat:no-repeat; - background-position:0 0; - vertical-align:middle; - margin-right:4px; - margin-top:-1px; - margin-bottom:-1px; -} -.x-panel-tc { - background: transparent url(../images/default/panel/white-top-bottom.gif) repeat-x 0 0; - overflow:hidden; -} -.x-panel-tl { - background: transparent url(../images/default/panel/white-corners-sprite.gif) no-repeat 0 0; - padding-left:6px; - zoom:1; - border-bottom:1px solid #99bbe8; -} -.x-panel-tr { - background: transparent url(../images/default/panel/white-corners-sprite.gif) no-repeat right 0; - padding-right:6px; -} -.x-panel-bc { - background: transparent url(../images/default/panel/white-top-bottom.gif) repeat-x 0 bottom; - zoom:1; -} -.x-panel-bc .x-panel-footer { - padding-bottom:1px; - zoom:1; -} - -.x-panel-nofooter .x-panel-bc { - height:1px; -} -.x-panel-bl { - background: transparent url(../images/default/panel/white-corners-sprite.gif) no-repeat 0 bottom; - padding-left:1px; - zoom:1; -} -.x-panel-br { - background: transparent url(../images/default/panel/white-corners-sprite.gif) no-repeat right bottom; - padding-right:1px; - zoom:1; -} -.x-panel-mc { - border:0 none; - padding:0; - margin:0; - font: normal 11px tahoma,arial,helvetica,sans-serif; - background:white; -} -.x-panel-mc .x-panel-body { - background:transparent; - border:0 none; -} -.x-panel-ml { - background: #fff url(../images/default/panel/white-left-right.gif) repeat-y 0 0; - padding-left:1px; - zoom:1; -} -.x-panel-mr { - background: transparent url(../images/default/panel/white-left-right.gif) repeat-y right 0; - padding-right:1px; - zoom:1; -} -.x-panel-blue .x-panel-tl, .x-panel-blue .x-panel-tr, .x-panel-blue .x-panel-bl, .x-panel-blue .x-panel-br { - background-image:url(../images/default/panel/corners-sprite.gif); -} -.x-panel-blue .x-panel-tc, .x-panel-blue .x-panel-bc { - background-image:url(../images/default/panel/top-bottom.gif); -} -.x-panel-blue .x-panel-ml, .x-panel-blue .x-panel-mr { - background-image:url(../images/default/panel/left-right.gif); -} -.x-panel-blue .x-panel-mc{ - padding-top:6px; - background:#dfe8f6; -} - -.x-panel-blue .x-panel-tl { - padding-left:6px; -} -.x-panel-blue .x-panel-tr { - padding-right:6px; -} -.x-panel-blue .x-panel-bc .x-panel-footer { - padding-bottom:6px; -} -.x-panel-blue .x-panel-nofooter .x-panel-bc { - height:6px; -} -.x-panel-blue .x-panel-bl { - padding-left:6px; -} -.x-panel-blue .x-panel-br { - padding-right:6px; -} - -.x-panel-blue .x-panel-ml { - padding-left:6px; -} -.x-panel-blue .x-panel-mr { - padding-right:6px; -} - -.x-panel-bwrap { - overflow:hidden; -} -.x-panel-body { - overflow:hidden; -} - -.x-panel-collapsed .x-resizable-handle{ - display:none; -} - - -.x-tool { - overflow:hidden; - width:15px; - height:15px; - float:right; - cursor:pointer; - background:transparent url(../images/default/panel/tool-sprites.gif) no-repeat; - margin-left:2px; -} - - - -.x-tool-toggle { - background-position:0 -60px; -} -.x-tool-toggle-over { - background-position:-15px -60px; -} -.x-panel-collapsed .x-tool-toggle { - background-position:0 -75px; -} -.x-panel-collapsed .x-tool-toggle-over { - background-position:-15px -75px; -} - -.x-tool-close { - background-position:0 -0; -} -.x-tool-close-over { - background-position:-15px 0; -} - -.x-tool-minimize { - background-position:0 -15px; -} -.x-tool-minimize-over { - background-position:-15px -15px; -} - -.x-tool-maximize { - background-position:0 -30px; -} -.x-tool-maximize-over { - background-position:-15px -30px; -} - -.x-tool-restore { - background-position:0 -45px; -} -.x-tool-restore-over { - background-position:-15px -45px; -} - -.x-tool-gear { - background-position:0 -90px; -} -.x-tool-gear-over { - background-position:-15px -90px; -} - -.x-tool-pin { - background-position:0 -135px; -} -.x-tool-pin-over { - background-position:-15px -135px; -} -.x-tool-unpin { - background-position:0 -150px; -} -.x-tool-unpin-over { - background-position:-15px -150px; -} -.x-tool-right { - background-position:0 -165px; -} -.x-tool-right-over { - background-position:-15px -165px; -} -.x-tool-left { - background-position:0 -180px; -} -.x-tool-left-over { - background-position:-15px -180px; -} -.x-tool-up { - background-position:0 -210px; -} -.x-tool-up-over { - background-position:-15px -210px; -} -.x-tool-down { - background-position:0 -195px; -} -.x-tool-down-over { - background-position:-15px -195px; -} -.x-tool-refresh { - background-position:0 -225px; -} -.x-tool-refresh-over { - background-position:-15px -225px; -} - -.x-panel-ghost { - background:#cbddf3; - z-index:12000; - overflow:hidden; - position:absolute; - left:0;top:0; - opacity:.65; - -moz-opacity:.65; - filter:alpha(opacity=65); -} - -.x-panel-ghost ul { - margin:0; - padding:0; - overflow:hidden; - font-size:0; - line-height:0; - border:1px solid #84a0c4; - border-top:0 none; - display:block; -} - -.x-panel-ghost * { - cursor:move !important; -} - - - - -.x-panel-btns-ct { - padding:5px; -} - -.x-panel-btns-ct .x-btn{ - float:right; - clear:none; -} -.x-panel-btns-ct .x-panel-btns td { - border:0; - padding:0; -} -.x-panel-btns-ct .x-panel-btns-right table{ - float:right; - clear:none; -} -.x-panel-btns-ct .x-panel-btns-left table{ - float:left; - clear:none; -} -.x-panel-btns-ct .x-panel-btns-center{ - text-align:center; -} -.x-panel-btns-ct .x-panel-btns-center table{ - margin:0 auto; -} -.x-panel-btns-ct table td.x-panel-btn-td{ - padding:3px; -} - -.x-panel-btns-ct .x-btn-focus .x-btn-left{ - background-position:0 -147px; -} -.x-panel-btns-ct .x-btn-focus .x-btn-right{ - background-position:0 -168px; -} -.x-panel-btns-ct .x-btn-focus .x-btn-center{ - background-position:0 -189px; -} - -.x-panel-btns-ct .x-btn-over .x-btn-left{ - background-position:0 -63px; -} -.x-panel-btns-ct .x-btn-over .x-btn-right{ - background-position:0 -84px; -} -.x-panel-btns-ct .x-btn-over .x-btn-center{ - background-position:0 -105px; -} - -.x-panel-btns-ct .x-btn-click .x-btn-center{ - background-position:0 -126px; -} -.x-panel-btns-ct .x-btn-click .x-btn-right{ - background-position:0 -84px; -} -.x-panel-btns-ct .x-btn-click .x-btn-left{ - background-position:0 -63px; -} -.x-html-editor-wrap { - border:1px solid #a9bfd3; - background:white; -} -.x-html-editor-tb .x-btn-text { - background:transparent url(../images/default/editor/tb-sprite.gif) no-repeat; -} -.x-html-editor-tb .x-edit-bold .x-btn-text { - background-position:0 0; -} -.x-html-editor-tb .x-edit-italic .x-btn-text { - background-position:-16px 0; -} -.x-html-editor-tb .x-edit-underline .x-btn-text { - background-position:-32px 0; -} -.x-html-editor-tb .x-edit-forecolor .x-btn-text { - background-position:-160px 0; -} -.x-html-editor-tb .x-edit-backcolor .x-btn-text { - background-position:-176px 0; -} -.x-html-editor-tb .x-edit-justifyleft .x-btn-text { - background-position:-112px 0; -} -.x-html-editor-tb .x-edit-justifycenter .x-btn-text { - background-position:-128px 0; -} -.x-html-editor-tb .x-edit-justifyright .x-btn-text { - background-position:-144px 0; -} -.x-html-editor-tb .x-edit-insertorderedlist .x-btn-text { - background-position:-80px 0; -} -.x-html-editor-tb .x-edit-insertunorderedlist .x-btn-text { - background-position:-96px 0; -} -.x-html-editor-tb .x-edit-increasefontsize .x-btn-text { - background-position:-48px 0; -} -.x-html-editor-tb .x-edit-decreasefontsize .x-btn-text { - background-position:-64px 0; -} -.x-html-editor-tb .x-edit-sourceedit .x-btn-text { - background-position:-192px 0; -} - -.x-html-editor-tip .x-tip-bd .x-tip-bd-inner { - padding:5px; - padding-bottom:1px; -} diff --git a/lib/web/extjs/css/form.css b/lib/web/extjs/css/form.css deleted file mode 100644 index 8a6ca73ddf1da626ecd3b5663411c5a8b4026fc8..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/form.css +++ /dev/null @@ -1,384 +0,0 @@ -/* - * Ext JS Library 2.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -/* all fields */ -.x-form-field{ - margin: 0 0 0 0; - font:normal 12px tahoma, arial, helvetica, sans-serif; -} - -/* ---- text fields ---- */ -.x-form-text, textarea.x-form-field{ - padding: 1px 3px; - background:#fff url(../images/default/form/text-bg.gif) repeat-x 0 0; - border: 1px solid #B5B8C8; -} -.x-form-text { - height:22px; - line-height:18px; - vertical-align:middle; -} -.ext-ie .x-form-text { - margin-top:-1px; /* ie bogus margin bug */ - margin-bottom:-1px; - height:22px; /* ie quirks */ - line-height:18px; -} -.ext-strict .x-form-text { - height:18px; -} -.ext-safari .x-form-text { - height:20px; /* safari always same size */ -} -.ext-gecko .x-form-text { - padding-top:2px; /* FF won't center the text vertically */ - padding-bottom:0; -} -/* select boxes */ - -.x-form-select-one { - height:20px; - line-height:18px; - vertical-align:middle; - background-color:#fff; /* opera */ - border: 1px solid #B5B8C8; -} - -/* multi select boxes */ - -/* --- TODO --- */ - -/* checkboxes */ - -/* --- TODO --- */ - -/* radios */ - -/* --- TODO --- */ - - -/* wrapped fields and triggers */ - -.x-form-field-wrap { - position:relative; - zoom:1; - white-space: nowrap; -} - -.x-editor .x-form-check-wrap { - background:#fff; -} -.x-form-field-wrap .x-form-trigger{ - width:17px; - height:21px; - border:0; - background:transparent url(../images/default/form/trigger.gif) no-repeat 0 0; - cursor:pointer; - border-bottom: 1px solid #B5B8C8; - position:absolute; - top:0; -} -.ext-safari .x-form-field-wrap .x-form-trigger{ - height:19px; /* safari doesn't allow height adjustments to the fields, so adjust trigger */ -} -.x-form-field-wrap .x-form-date-trigger{ - background:transparent url(../images/default/form/date-trigger.gif) no-repeat 0 0 !important; - cursor:pointer; -} -.x-form-field-wrap .x-form-clear-trigger{ - background:transparent url(../images/default/form/clear-trigger.gif) no-repeat; - cursor:pointer; -} -.x-form-field-wrap .x-form-search-trigger{ - background:transparent url(../images/default/form/search-trigger.gif) no-repeat 0 0; - cursor:pointer; -} -.ext-safari .x-form-field-wrap .x-form-trigger{ - right:0; -} -.x-form-field-wrap .x-form-twin-triggers{ - -} -.x-form-field-wrap .x-form-twin-triggers .x-form-trigger{ - position:static; - top:auto; - vertical-align:top; -} - - -.x-form-field-wrap .x-form-trigger-over{ - background-position:-17px 0; -} -.x-form-field-wrap .x-form-trigger-click{ - background-position:-34px 0; -} -.x-item-disabled .x-form-trigger-over{ - background-position:0 0 !important; -} -.x-item-disabled .x-form-trigger-click{ - background-position:0 0 !important; -} - -/* field focus style */ -.x-form-focus, textarea.x-form-focus{ - border: 1px solid #7eadd9; -} - -/* invalid fields */ -.x-form-invalid, textarea.x-form-invalid{ - background:#fff url(../images/default/grid/invalid_line.gif) repeat-x bottom; - border: 1px solid #dd7870; -} -.ext-safari .x-form-invalid{ - background-color:#ffeeee; - border: 1px solid #ff7870; -} - -/* editors */ - -.x-editor { - visibility:hidden; - padding:0; - margin:0; -} -.x-form-check-wrap { - line-height:18px; -} -.ext-ie .x-form-check-wrap input { - width:15px; - height:15px; -} -.x-editor .x-form-check-wrap { - padding:3px; -} -.x-editor .x-form-checkbox { - height:13px; - border: 0 none; -} -/* If you override the default field font above, you would need to change this font as well */ -.x-form-grow-sizer { - font:normal 12px tahoma, arial, helvetica, sans-serif; - left: -10000px; - padding: 8px 3px; - position: absolute; - visibility:hidden; - top: -10000px; - white-space: pre-wrap; - white-space: -moz-pre-wrap; - white-space: -pre-wrap; - white-space: -o-pre-wrap; - word-wrap: break-word; - zoom:1; -} -.x-form-grow-sizer p { - margin:0 !important; - border:0 none !important; - padding:0 !important; -} -/* Form Items CSS */ - -.x-form-item { - font:normal 12px tahoma, arial, helvetica, sans-serif; - display:block; - margin-bottom:4px; -} - -.x-form-item label { - display:block; - float:left; - width:100px; - padding:3px; - padding-left:0; - clear:left; - z-index:2; - position:relative; -} - -.x-form-element { - padding-left:105px; - position:relative; -} - -.x-form-invalid-msg { - color:#ee0000; - padding:2px; - padding-left:18px; - font:normal 11px tahoma, arial, helvetica, sans-serif; - background: transparent url(../images/default/shared/warning.gif) no-repeat 0 2px; - line-height:16px; - width:200px; -} - -.x-form-label-right label { - text-align:right; -} - -.x-form-label-top .x-form-item label { - width:auto; - float:none; - clear:none; - display:inline; - margin-bottom:4px; - position:static; -} -.x-form-label-top .x-form-element { - padding-left:0; - padding-top:4px; -} -.x-form-label-top .x-form-item { - padding-bottom:4px; -} -.x-form fieldset { - border:1px solid #B5B8C8; - padding:10px 10px 5px 10px; - margin-bottom:10px; -} -.x-form fieldset legend { - font:bold 11px tahoma, arial, helvetica, sans-serif; - color:#15428b; -} -.ext-ie .x-form fieldset legend { - margin-bottom:10px; -} -.ext-ie .x-form fieldset { - padding-top: 0; -} -.x-form-empty-field { - color:gray; -} -/* Editor small font for grid, toolbar and tree */ -.x-small-editor .x-form-field { - font:normal 11px arial, tahoma, helvetica, sans-serif; -} -.x-small-editor .x-form-text { - height:20px; - line-height:16px; - vertical-align:middle; -} -.ext-ie .x-small-editor .x-form-text { - margin-top:-1px !important; /* ie bogus margin bug */ - margin-bottom:-1px !important; - height:20px !important; /* ie quirks */ - line-height:16px !important; -} -.ext-strict .x-small-editor .x-form-text { - height:16px !important; -} -.ext-safari .x-small-editor .x-form-field { - /* safari text field will not size so needs bigger font */ - font:normal 12px arial, tahoma, helvetica, sans-serif; -} -.ext-ie .x-small-editor .x-form-text { - height:20px; - line-height:16px; -} -.ext-border-box .x-small-editor .x-form-text { - height:20px; -} - -.x-small-editor .x-form-select-one { - height:20px; - line-height:16px; - vertical-align:middle; -} -.x-small-editor .x-form-num-field { - text-align:right; -} -.x-small-editor .x-form-field-wrap .x-form-trigger{ - height:19px; -} - - -.x-form-clear { - clear:both; - height:0; - overflow:hidden; - line-height:0; - font-size:0; -} -.x-form-clear-left { - clear:left; - height:0; - overflow:hidden; - line-height:0; - font-size:0; -} - -.x-form-cb-label { - width:'auto' !important; - float:none !important; - clear:none !important; - display:inline !important; - margin-left:4px; -} - -.x-form-column { - float:left; - padding:0; - margin:0; - width:48%; - overflow:hidden; - zoom:1; -} - -/* buttons */ -.x-form .x-form-btns-ct .x-btn{ - float:right; - clear:none; -} -.x-form .x-form-btns-ct .x-form-btns td { - border:0; - padding:0; -} -.x-form .x-form-btns-ct .x-form-btns-right table{ - float:right; - clear:none; -} -.x-form .x-form-btns-ct .x-form-btns-left table{ - float:left; - clear:none; -} -.x-form .x-form-btns-ct .x-form-btns-center{ - text-align:center; /*ie*/ -} -.x-form .x-form-btns-ct .x-form-btns-center table{ - margin:0 auto; /*everyone else*/ -} -.x-form .x-form-btns-ct table td.x-form-btn-td{ - padding:3px; -} - -.x-form .x-form-btns-ct .x-btn-focus .x-btn-left{ - background-position:0 -147px; -} -.x-form .x-form-btns-ct .x-btn-focus .x-btn-right{ - background-position:0 -168px; -} -.x-form .x-form-btns-ct .x-btn-focus .x-btn-center{ - background-position:0 -189px; -} - -.x-form .x-form-btns-ct .x-btn-click .x-btn-center{ - background-position:0 -126px; -} -.x-form .x-form-btns-ct .x-btn-click .x-btn-right{ - background-position:0 -84px; -} -.x-form .x-form-btns-ct .x-btn-click .x-btn-left{ - background-position:0 -63px; -} -.x-form-invalid-icon { - width:16px; - height:18px; - visibility:hidden; - position:absolute; - left:0; - top:0; - display:block; - background:transparent url(../images/default/form/exclamation.gif) no-repeat 0 2px; -} \ No newline at end of file diff --git a/lib/web/extjs/css/grid.css b/lib/web/extjs/css/grid.css deleted file mode 100644 index 10842ccd66f8c441e707e16d388687976f33b5f4..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/grid.css +++ /dev/null @@ -1,449 +0,0 @@ -/* - * Ext JS Library 2.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -/* Grid2 styles */ -.x-grid3 { - position:relative; - overflow:hidden; - background-color:#fff; -} -.ext-ie .x-grid3 table { - table-layout:fixed; -} -.x-grid3-viewport{ - overflow:hidden; -} -.x-grid3-hd-row td, .x-grid3-row td{ - font:normal 11px arial, tahoma, helvetica, sans-serif; - -moz-outline: none; - -moz-user-focus: normal; -} -.x-grid3-row td { - line-height:13px; - vertical-align: top; - padding-left:1px; - padding-right:1px; - -moz-user-select: none; -} -.x-grid3-hd-row td { - line-height:15px; - vertical-align:middle; - border-left:1px solid #eee; - border-right:1px solid #d0d0d0; -} - -.x-grid3-hd-row .x-grid3-marker-hd { - padding:3px; -} - -.x-grid3-row .x-grid3-marker { - padding:3px; -} - -.x-grid3-cell-inner, .x-grid3-hd-inner{ - overflow:hidden; - -o-text-overflow: ellipsis; - text-overflow: ellipsis; - padding:3px 3px 3px 5px; - white-space: nowrap; -} - -.x-grid3-hd-inner { - position:relative; - cursor:inherit; - padding:4px 3px 4px 5px; -} - -.x-grid3-row-body { - white-space:normal; -} - -/* IE Quirks to clip */ -.ext-ie .x-grid3-cell-inner, .ext-ie .x-grid3-hd-inner{ - width:100%; -} -/* reverse above in strict mode */ -.ext-strict .x-grid3-cell-inner, .ext-strict .x-grid3-hd-inner{ - width:auto; -} - -.x-grid3-col { - -} - -.x-grid3-row { - cursor: default; - border:1px solid #ededed; - border-top-color:#fff; - /*border-bottom: 1px solid #ededed;*/ - width:100%; -} -.x-grid3-row-alt{ - /*background-color:#f1f2f4;*/ -} - -.x-grid3-row-over { - border:1px solid #dddddd; - background: #efefef url(../images/default/grid/row-over.gif) repeat-x left top; -} - -.x-grid3-resize-proxy { - width:3px; - background-color:#cccccc; - cursor: e-resize; - cursor: col-resize; - position:absolute; - top:0; - height:100px; - overflow:hidden; - visibility:hidden; - border:0 none; - z-index:7; -} -.x-grid3-focus { - position:absolute; - top:0; - -moz-outline:0 none; - outline:0 none; - -moz-user-select: normal; - -khtml-user-select: normal; -} - -/* header styles */ -.x-grid3-header{ - background: #f9f9f9 url(../images/default/grid/grid3-hrow.gif) repeat-x 0 bottom; - cursor:default; - zoom:1; - padding:1px 0 0 0; -} - -.x-grid3-header-pop { - border-left:1px solid #d0d0d0; - float:right; - clear:none; -} -.x-grid3-header-pop-inner { - border-left:1px solid #eee; - width:14px; - height:19px; - background: transparent url(../images/default/grid/hd-pop.gif) no-repeat center center; -} -.ext-ie .x-grid3-header-pop-inner { - width:15px; -} -.ext-strict .x-grid3-header-pop-inner { - width:14px; -} -.x-grid3-header-inner { - overflow:hidden; - zoom:1; - float:left; -} -.x-grid3-header-offset { - padding-left:1px; - width:10000px; -} - -/* -.x-grid3-hd-over .x-grid3-hd-inner { - padding-bottom:2px; - border-bottom: 1px solid #c3daf9; - background-color: #fafafa; -} -td.x-grid3-hd-over .x-grid3-hd-text { - border-bottom: 1px solid #b3cae9; -}*/ - -td.x-grid3-hd-over, td.sort-desc, td.sort-asc, td.x-grid3-hd-menu-open { - border-left:1px solid #aaccf6; - border-right:1px solid #aaccf6; -} -td.x-grid3-hd-over .x-grid3-hd-inner, td.sort-desc .x-grid3-hd-inner, td.sort-asc .x-grid3-hd-inner, td.x-grid3-hd-menu-open .x-grid3-hd-inner { - background: #ebf3fd url(../images/default/grid/grid3-hrow-over.gif) repeat-x left bottom; - -} -.x-grid3-sort-icon{ - background-repeat: no-repeat; - display: none; - height: 4px; - width: 13px; - margin-left:3px; - vertical-align: middle; -} -.sort-asc .x-grid3-sort-icon { - background-image: url(../images/aero/grid/sort_asc.gif); - display: inline; -} -.sort-desc .x-grid3-sort-icon { - background-image: url(../images/aero/grid/sort_desc.gif); - display: inline; -} - -/* Body Styles */ -.x-grid3-body { - overflow:auto; -} -.x-grid3-body-inner { - overflow:auto; -} -.x-grid3-cell-text, .x-grid3-hd-text { - display: block; - padding: 3px 5px 3px 5px; - -moz-user-select: none; - -khtml-user-select: none; - color:black; -} -.x-grid3-split { - background-image: url(../images/default/grid/grid-split.gif); - background-position: center; - background-repeat: no-repeat; - cursor: e-resize; - cursor: col-resize; - display: block; - font-size: 1px; - height: 16px; - overflow: hidden; - position: absolute; - top: 2px; - width: 6px; - z-index: 3; -} - -.x-grid3-hd-text { - color:#15428b; -} -/* Column Reorder DD */ -.x-dd-drag-proxy .x-grid3-hd-inner{ - background: #ebf3fd url(../images/default/grid/grid3-hrow-over.gif) repeat-x left bottom; - width:120px; - padding:3px; - border:1px solid #aaccf6; - overflow:hidden; -} - -.col-move-top, .col-move-bottom{ - width:9px; - height:9px; - position:absolute; - top:0; - line-height:1px; - font-size:1px; - overflow:hidden; - visibility:hidden; - z-index:20000; -} -.col-move-top{ - background:transparent url(../images/default/grid/col-move-top.gif) no-repeat left top; -} -.col-move-bottom{ - background:transparent url(../images/default/grid/col-move-bottom.gif) no-repeat left top; -} - -/* Selection Styles */ -.x-grid3-row-selected { - background: #d9e8fb url(../images/default/grid/row-sel.gif) repeat-x left top; - border:1px solid #99bbe8; -}/* -.x-grid3-row-selected td { - border-left:1px solid #c3daf9; - border-right:1px solid #719ad5; -}*/ -.x-grid3-row-selected span, .x-grid3-row-selected b, .x-grid3-row-selected div, .x-grid3-row-selected strong, .x-grid3-row-selected i{ - -} -.x-grid3-cell-selected{ - background-color: #316ac5 !important; - color: white; -} -.x-grid3-cell-selected span{ - color: white !important; -} -.x-grid3-cell-selected .x-grid3-cell-text{ - color: white; -} - -.x-grid3-locked td.x-grid3-row-marker, .x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker{ - background: #ebeadb url(../images/default/grid/grid-hrow.gif) repeat-x 0 bottom !important; - vertical-align:middle !important; - color:black; - padding:0; - border-top:1px solid white; - border-bottom:none !important; - border-right:1px solid #6fa0df !important; - text-align:center; -} -.x-grid3-locked td.x-grid3-row-marker div, .x-grid3-locked .x-grid3-row-selected td.x-grid3-row-marker div{ - padding:0 4px; - color:#15428b !important; - text-align:center; -} - -/* dirty cells */ -.x-grid3-dirty-cell { - background: transparent url(../images/default/grid/dirty.gif) no-repeat 0 0; -} - -/* Grid Toolbars */ -.x-grid3-topbar, .x-grid3-bottombar{ - font:normal 11px arial, tahoma, helvetica, sans-serif; - overflow:hidden; - display:none; - zoom:1; - position:relative; -} -.x-grid3-topbar .x-toolbar{ - border-right:0 none; -} -.x-grid3-bottombar .x-toolbar{ - border-right:0 none; - border-bottom:0 none; - border-top:1px solid #a9bfd3; -} -/* Props Grid Styles */ -.x-props-grid .x-grid3-cell-selected .x-grid3-cell-text{ - background-color: #316ac5 !important; -} -.x-props-grid .x-grid3-col-value .x-grid3-cell-text{ - background-color: white; -} -.x-props-grid .x-grid3-col-name{ - background-color: #c3daf9; -} -.x-props-grid .x-grid3-col-name .x-grid3-cell-text{ - background-color: white; - margin-left:10px; -} -.x-props-grid .x-grid3-split-value { - visibility:hidden; -} - -/* header menu */ -.xg-hmenu-sort-asc .x-menu-item-icon{ - background-image: url(../images/default/grid/hmenu-asc.gif); -} -.xg-hmenu-sort-desc .x-menu-item-icon{ - background-image: url(../images/default/grid/hmenu-desc.gif); -} -.xg-hmenu-lock .x-menu-item-icon{ - background-image: url(../images/default/grid/hmenu-lock.gif); -} -.xg-hmenu-unlock .x-menu-item-icon{ - background-image: url(../images/default/grid/hmenu-unlock.gif); -} - -/* dd */ -.x-grid3-col-dd { - border:0 none; - padding:0; - background:transparent; -} - -.x-dd-drag-ghost .x-grid3-dd-wrap { - padding:1px 3px 3px 1px; -} - -.x-grid3-hd-btn { - display:none; - position:absolute; - width:14px; - background:#c3daf9 url(../images/default/grid/grid3-hd-btn.gif) no-repeat left center; - right:0; - top:0; - z-index:2; - cursor:pointer; -} - -.x-grid3-hd-over .x-grid3-hd-btn, .x-grid3-hd-menu-open .x-grid3-hd-btn { - display:block; -} - -a.x-grid3-hd-btn:hover { - background-position:-14px center; -} - -/* Expanders */ - -.x-grid3-body .x-grid3-td-expander { - background:transparent url(../images/default/grid/grid3-special-col-bg.gif) repeat-y right; -} -.x-grid3-body .x-grid3-td-expander .x-grid3-cell-inner { - padding:0 !important; - height:100%; -} -.x-grid3-row-expander { - width:100%; - height:18px; - background-position:4px 2px; - background-repeat:no-repeat; - background-color:transparent; - background-image:url(../images/default/grid/row-expand-sprite.gif); -} -.x-grid3-row-collapsed .x-grid3-row-expander { - background-position:4px 2px; -} -.x-grid3-row-expanded .x-grid3-row-expander { - background-position:-21px 2px; -} -.x-grid3-row-collapsed .x-grid3-row-body { - display:none !important; -} -.x-grid3-row-expanded .x-grid3-row-body { - display:block !important; -} - -/* Checkers */ - -.x-grid3-body .x-grid3-td-checker { - background:transparent url(../images/default/grid/grid3-special-col-bg.gif) repeat-y right; -} - -.x-grid3-body .x-grid3-td-checker .x-grid3-cell-inner, .x-grid3-header .x-grid3-td-checker .x-grid3-hd-inner { - padding:0 !important; - height:100%; -} - -.x-grid3-row-checker, .x-grid3-hd-checker { - width:100%; - height:18px; - background-position:2px 2px; - background-repeat:no-repeat; - background-color:transparent; - background-image:url(../images/default/grid/row-check-sprite.gif); -} -.x-grid3-row .x-grid3-row-checker { - background-position:2px 2px; -} -.x-grid3-row-selected .x-grid3-row-checker, .x-grid3-hd-checker-on .x-grid3-hd-checker { - background-position:-23px 2px; -} -.x-grid3-hd-checker { - background-position:2px 3px; -} -.x-grid3-hd-checker-on .x-grid3-hd-checker { - background-position:-23px 3px; -} - -/* Numberer */ - -.x-grid3-body .x-grid3-td-numberer { - background:transparent url(../images/default/grid/grid3-special-col-bg.gif) repeat-y right; -} -.x-grid3-body .x-grid3-td-numberer .x-grid3-cell-inner { - padding:3px 5px 0 0 !important; - text-align:right; - color:#444; -} - -/* All specials */ - -.x-grid3-body .x-grid3-row-selected .x-grid3-td-numberer, -.x-grid3-body .x-grid3-row-selected .x-grid3-td-checker, -.x-grid3-body .x-grid3-row-selected .x-grid3-td-expander { - background:transparent url(../images/default/grid/grid3-special-col-sel-bg.gif) repeat-y right; -} - diff --git a/lib/web/extjs/css/layout.css b/lib/web/extjs/css/layout.css deleted file mode 100644 index 9e67845abd50dcde2ae96a7ee049f5dc090a744b..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/layout.css +++ /dev/null @@ -1,252 +0,0 @@ -/* - * Ext JS Library 2.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-layout-container{ - width:100%; - height:100%; - overflow:hidden; - background-color:#c3daf9; -} -.x-layout-container .x-layout-tabs-body{ - border:0 none; -} -.x-layout-collapsed{ - position:absolute; - left:-10000px; - top:-10000px; - visibility:hidden; - background-color:#c3daf9; - width:20px; - height:20px; - overflow:hidden; - border:1px solid #98c0f4; - z-index:20; -} -.ext-border-box .x-layout-collapsed{ - width:22px; - height:22px; -} -.x-layout-collapsed-over{ - cursor:pointer; - background-color:#d9e8fb; -} -.x-layout-collapsed-west .x-layout-collapsed-tools, .x-layout-collapsed-east .x-layout-collapsed-tools{ - position:absolute; - top:0; - left:0; - width:20px; - height:20px; -} -.x-layout-collapsed-north .x-layout-collapsed-tools, .x-layout-collapsed-south .x-layout-collapsed-tools{ - position:absolute; - top:0; - right:0; - width:20px; - height:20px; -} -.x-layout-collapsed .x-layout-tools-button{ - margin:0; -} -.x-layout-collapsed .x-layout-tools-button-inner{ - width:16px; - height:16px; -} -.x-layout-inactive-content{ - position:absolute; - left:-10000px; - top:-10000px; - visibility:hidden; -} -.x-layout-active-content{ - visibility:visible; -} -.x-layout-panel{ - position:absolute;border:1px solid #98c0f4;overflow:hidden;background-color:white; -} -.x-layout-panel-east, .x-layout-panel-west { - z-index:10; -} -.x-layout-panel-north, .x-layout-panel-south { - z-index:11; -} -.x-layout-collapsed-north, .x-layout-collapsed-south, .x-layout-collapsed-east, .x-layout-collapsed-west { - z-index:12; -} -.x-layout-panel-body{ - overflow:hidden; -} -.x-layout-grid-wrapper{ - -} -.x-layout-split{ - position:absolute; - height:5px; - width:5px; - line-height:1px; - font-size:1px; - z-index:3; - background-color:#c3daf9; -} -.x-layout-panel-hd{ - background-image: url(../images/default/layout/panel-title-light-bg.gif); - color: black; - border-bottom:1px solid #98c0f4; - position:relative; -} -.x-layout-panel-hd-text{ - font:normal 11px tahoma, verdana, helvetica; - padding: 4px; - padding-left: 4px; - display:block; - white-space:nowrap; -} -.x-layout-panel-hd-tools{ - position:absolute; - right:0; - top:0; - text-align:right; - padding-top:2px; - padding-right:2px; - width:60px; -} -.x-layout-tools-button{ - z-index:6; - padding:2px; - cursor:pointer; - float:right; -} -.x-layout-tools-button-over{ - padding:1px; - border:1px solid #98c0f4; - background-color:white; -} -.x-layout-tools-button-inner{ - height:12px; - width:12px; - line-height:1px; - font-size:1px; - background-repeat:no-repeat; - background-position:center; -} -.x-layout-close{ - background-image:url(../images/default/layout/panel-close.gif); -} -.x-layout-stick{ - background-image:url(../images/default/layout/stick.gif); -} -.x-layout-collapse-west,.x-layout-expand-east{ - background-image:url(../images/default/layout/collapse.gif); -} -.x-layout-expand-west,.x-layout-collapse-east{ - background-image:url(../images/default/layout/expand.gif); -} -.x-layout-collapse-north,.x-layout-expand-south{ - background-image:url(../images/default/layout/ns-collapse.gif); -} -.x-layout-expand-north,.x-layout-collapse-south{ - background-image:url(../images/default/layout/ns-expand.gif); -} -.x-layout-split-h{ - background-image:url(../images/default/sizer/e-handle.gif); - background-position: left; -} -.x-layout-split-v{ - background-image:url(../images/default/sizer/s-handle.gif); - background-position: top; -} -.x-layout-panel .x-tabs-wrap{ - background:url(../images/default/layout/gradient-bg.gif); -} -.x-layout-panel .x-tabs-body { - background-color:white; - overflow:auto;height:100%; -} -.x-layout-component-panel, .x-layout-nested-layout { - position:relative; - padding:0; - overflow:hidden; - width:200px; - height:200px; -} -.x-layout-nested-layout .x-layout-panel { - border:0 none; -} -.x-layout-nested-layout .x-layout-panel-north { - border-bottom:1px solid #98c0f4; -} -.x-layout-nested-layout .x-layout-panel-south { - border-top:1px solid #98c0f4; -} -.x-layout-nested-layout .x-layout-panel-east { - border-left:1px solid #98c0f4; -} -.x-layout-nested-layout .x-layout-panel-west { - border-right:1px solid #98c0f4; -} - -.x-layout-panel-dragover { - border: 2px solid #6593cf; -} -.x-layout-panel-proxy { - background-image: url(../images/default/layout/gradient-bg.gif); - background-color:#c3daf9; - border:1px dashed #6593cf; - z-index:10001; - overflow:hidden; - position:absolute; - left:0;top:0; -} -.x-layout-slider { - z-index:15; - overflow:hidden; - position:absolute; -} - -.x-scroller-up, .x-scroller-down { - background-color:#c3daf9; - border: 1px solid #6593cf; - border-top-color: #fff; - border-left-color: #fff; - border-right:0 none; - cursor:pointer; - overflow:hidden; - line-height:16px; -} -.x-scroller-down { - border-bottom: 0 none; - border-top: 1px solid #6593cf; -} -.x-scroller-btn-over { - background-color: #d9e8f8; -} -.x-scroller-btn-click { - background-color: #AECEF7; -} -.x-scroller-btn-disabled { - cursor:default; - background-color: #c3daf9; - -moz-opacity: 0.3; - opacity:.30; - filter: alpha(opacity=30); -} - -/* Reader Layout */ - -.x-reader .x-layout-panel-north { - border:0 none; -} -.x-reader .x-layout-panel-center{ - border:0 none; -} -.x-reader .x-layout-nested-layout .x-layout-panel-center{ - border:1px solid #99bbe8; - border-top:0 none; -} -.x-reader .x-layout-nested-layout .x-layout-panel-south{ - border:1px solid #99bbe8; -} \ No newline at end of file diff --git a/lib/web/extjs/css/menu.css b/lib/web/extjs/css/menu.css deleted file mode 100644 index fee781054c1c9bcd655c5b86f96d1402ebe8543c..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/menu.css +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Ext JS Library 2.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-menu { - border:1px solid #718bb7; - z-index: 15000; - background: #fff url(../images/default/menu/menu.gif) repeat-y; -} -.ext-ie .x-menu { - zoom:1; - overflow:hidden; -} -.x-menu-list{ - border:1px solid #fff; -} -.x-menu li{ - line-height:100%; -} -.x-menu li.x-menu-sep-li{ - font-size:1px; - line-height:1px; -} -.x-menu-list-item{ - font:normal 11px tahoma,arial, sans-serif; - white-space: nowrap; - -moz-user-select: none; - -khtml-user-select: none; - display:block; - padding:1px; -} -.x-menu-item-arrow{ - background:transparent url(../images/default/menu/menu-parent.gif) no-repeat right; -} -.x-menu-sep { - display:block; - font-size:1px; - line-height:1px; - background:#c3daf9; - margin: 3px 3px 3px 32px; -} -.x-menu-focus { - position:absolute; - left:0; - top:-5px; - width:0; - height:0; - line-height:1px; -} -.x-menu-item { - display:block; - line-height:14px; - padding:3px 21px 3px 3px; - white-space: nowrap; - text-decoration:none; - color:#233d6d; - -moz-outline: 0 none; - outline: 0 none; - cursor:pointer; -} -.x-menu-item-active { - color:#233d6d; - background:#c3daf9; - border:1px solid #8BB8F3; - padding:0; -} -.x-menu-item-icon { - border: 0 none; - height: 16px; - padding: 0; - vertical-align: middle; - width: 16px; - margin: 0 11px 0 0; - background-position:center; -} - -.x-menu-check-item .x-menu-item-icon{ - background: transparent url(../images/default/menu/unchecked.gif) no-repeat center; -} - -.x-menu-item-checked .x-menu-item-icon{ - background-image:url(../images/default/menu/checked.gif); -} -.x-menu-group-item .x-menu-item-icon{ - background: transparent; -} - -.x-menu-item-checked .x-menu-group-item .x-menu-item-icon{ - background: transparent url(../images/default/menu/group-checked.gif) no-repeat center; -} - -.x-menu-plain { - background:#fff; -} -.x-menu-date-item{ - padding:0; -} - -.x-menu .x-color-palette, .x-menu .x-date-picker{ - margin-left:32px; - margin-right:4px; -} -.x-menu .x-date-picker{ - border:1px solid #a3bad9; - margin-top:2px; - margin-bottom:2px; -} -.x-menu-plain .x-color-palette, .x-menu-plain .x-date-picker{ - margin:0; - border:0 none; -} -.x-date-menu { - padding:0 !important; -} diff --git a/lib/web/extjs/css/panel.css b/lib/web/extjs/css/panel.css deleted file mode 100644 index 378878e6431bb0ce7178e4ddae183b0e1de71b5c..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/panel.css +++ /dev/null @@ -1,355 +0,0 @@ -/* - * Ext JS Library 2.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-panel-header { - overflow:hidden; - zoom:1; - color:#15428b; - font:bold 11px tahoma,arial,verdana,sans-serif; - padding:5px 3px 4px 5px; - border:1px solid #99bbe8; - background: transparent url(../images/default/panel/white-top-bottom.gif) repeat-x 0 -1px; -} - -.x-panel-body { - border:1px solid #99bbe8; - border-top:0 none; - overflow:hidden; - background:white; -} -.x-panel-body-noheader { - border-top:1px solid #99bbe8; -} - -.x-panel-header { - overflow:hidden; - zoom:1; -} -.x-panel-tl .x-panel-header { - color:#15428b; - font:bold 11px tahoma,arial,verdana,sans-serif; - padding:5px 0 4px 0; - border:0 none; - background:transparent; -} -.x-panel-tl .x-panel-icon, .x-window-tl .x-panel-icon { - padding-left:20px !important; - background-repeat:no-repeat; - background-position:0 4px; - zoom:1; -} -.x-panel-inline-icon { - width:16px; - height:16px; - background-repeat:no-repeat; - background-position:0 0; - vertical-align:middle; - margin-right:4px; - margin-top:-1px; - margin-bottom:-1px; -} -.x-panel-tc { - background: transparent url(../images/default/panel/white-top-bottom.gif) repeat-x 0 0; - overflow:hidden; -} -.x-panel-tl { - background: transparent url(../images/default/panel/white-corners-sprite.gif) no-repeat 0 0; - padding-left:6px; - zoom:1; - border-bottom:1px solid #99bbe8; -} -.x-panel-tr { - background: transparent url(../images/default/panel/white-corners-sprite.gif) no-repeat right 0; - padding-right:6px; -} -.x-panel-bc { - background: transparent url(../images/default/panel/white-top-bottom.gif) repeat-x 0 bottom; - zoom:1; -} -.x-panel-bc .x-panel-footer { - padding-bottom:1px; - zoom:1; -} - -.x-panel-nofooter .x-panel-bc { - height:1px; -} -.x-panel-bl { - background: transparent url(../images/default/panel/white-corners-sprite.gif) no-repeat 0 bottom; - padding-left:1px; - zoom:1; -} -.x-panel-br { - background: transparent url(../images/default/panel/white-corners-sprite.gif) no-repeat right bottom; - padding-right:1px; - zoom:1; -} -.x-panel-mc { - border:0 none; - padding:0; - margin:0; - font: normal 11px tahoma,arial,helvetica,sans-serif; - background:white; -} -.x-panel-mc .x-panel-body { - background:transparent; - border:0 none; -} -.x-panel-ml { - background: #fff url(../images/default/panel/white-left-right.gif) repeat-y 0 0; - padding-left:1px; - zoom:1; -} -.x-panel-mr { - background: transparent url(../images/default/panel/white-left-right.gif) repeat-y right 0; - padding-right:1px; - zoom:1; -} -.x-panel-blue .x-panel-tl, .x-panel-blue .x-panel-tr, .x-panel-blue .x-panel-bl, .x-panel-blue .x-panel-br { - background-image:url(../images/default/panel/corners-sprite.gif); -} -.x-panel-blue .x-panel-tc, .x-panel-blue .x-panel-bc { - background-image:url(../images/default/panel/top-bottom.gif); -} -.x-panel-blue .x-panel-ml, .x-panel-blue .x-panel-mr { - background-image:url(../images/default/panel/left-right.gif); -} -.x-panel-blue .x-panel-mc{ - padding-top:6px; - background:#dfe8f6; -} - -.x-panel-blue .x-panel-tl { - padding-left:6px; -} -.x-panel-blue .x-panel-tr { - padding-right:6px; -} -.x-panel-blue .x-panel-bc .x-panel-footer { - padding-bottom:6px; -} -.x-panel-blue .x-panel-nofooter .x-panel-bc { - height:6px; -} -.x-panel-blue .x-panel-bl { - padding-left:6px; -} -.x-panel-blue .x-panel-br { - padding-right:6px; -} - -.x-panel-blue .x-panel-ml { - padding-left:6px; -} -.x-panel-blue .x-panel-mr { - padding-right:6px; -} - -.x-panel-bwrap { - overflow:hidden; -} -.x-panel-body { - overflow:hidden; -} - -.x-panel-collapsed .x-resizable-handle{ - display:none; -} - -/* Tools */ -.x-tool { - overflow:hidden; - width:15px; - height:15px; - float:right; - cursor:pointer; - background:transparent url(../images/default/panel/tool-sprites.gif) no-repeat; - margin-left:2px; -} - - -/* expand / collapse tools */ -.x-tool-toggle { - background-position:0 -60px; -} -.x-tool-toggle-over { - background-position:-15px -60px; -} -.x-panel-collapsed .x-tool-toggle { - background-position:0 -75px; -} -.x-panel-collapsed .x-tool-toggle-over { - background-position:-15px -75px; -} - -.x-tool-close { - background-position:0 -0; -} -.x-tool-close-over { - background-position:-15px 0; -} - -.x-tool-minimize { - background-position:0 -15px; -} -.x-tool-minimize-over { - background-position:-15px -15px; -} - -.x-tool-maximize { - background-position:0 -30px; -} -.x-tool-maximize-over { - background-position:-15px -30px; -} - -.x-tool-restore { - background-position:0 -45px; -} -.x-tool-restore-over { - background-position:-15px -45px; -} - -.x-tool-gear { - background-position:0 -90px; -} -.x-tool-gear-over { - background-position:-15px -90px; -} - -.x-tool-pin { - background-position:0 -135px; -} -.x-tool-pin-over { - background-position:-15px -135px; -} -.x-tool-unpin { - background-position:0 -150px; -} -.x-tool-unpin-over { - background-position:-15px -150px; -} -.x-tool-right { - background-position:0 -165px; -} -.x-tool-right-over { - background-position:-15px -165px; -} -.x-tool-left { - background-position:0 -180px; -} -.x-tool-left-over { - background-position:-15px -180px; -} -.x-tool-up { - background-position:0 -210px; -} -.x-tool-up-over { - background-position:-15px -210px; -} -.x-tool-down { - background-position:0 -195px; -} -.x-tool-down-over { - background-position:-15px -195px; -} -.x-tool-refresh { - background-position:0 -225px; -} -.x-tool-refresh-over { - background-position:-15px -225px; -} -/* Ghosting */ -.x-panel-ghost { - background:#cbddf3; - z-index:12000; - overflow:hidden; - position:absolute; - left:0;top:0; - opacity:.65; - -moz-opacity:.65; - filter:alpha(opacity=65); -} - -.x-panel-ghost ul { - margin:0; - padding:0; - overflow:hidden; - font-size:0; - line-height:0; - border:1px solid #84a0c4; - border-top:0 none; - display:block; -} - -.x-panel-ghost * { - cursor:move !important; -} - - -/* Buttons */ - -.x-panel-btns-ct { - padding:5px; -} - -.x-panel-btns-ct .x-btn{ - float:right; - clear:none; -} -.x-panel-btns-ct .x-panel-btns td { - border:0; - padding:0; -} -.x-panel-btns-ct .x-panel-btns-right table{ - float:right; - clear:none; -} -.x-panel-btns-ct .x-panel-btns-left table{ - float:left; - clear:none; -} -.x-panel-btns-ct .x-panel-btns-center{ - text-align:center; /*ie*/ -} -.x-panel-btns-ct .x-panel-btns-center table{ - margin:0 auto; /*everyone else*/ -} -.x-panel-btns-ct table td.x-panel-btn-td{ - padding:3px; -} - -.x-panel-btns-ct .x-btn-focus .x-btn-left{ - background-position:0 -147px; -} -.x-panel-btns-ct .x-btn-focus .x-btn-right{ - background-position:0 -168px; -} -.x-panel-btns-ct .x-btn-focus .x-btn-center{ - background-position:0 -189px; -} - -.x-panel-btns-ct .x-btn-over .x-btn-left{ - background-position:0 -63px; -} -.x-panel-btns-ct .x-btn-over .x-btn-right{ - background-position:0 -84px; -} -.x-panel-btns-ct .x-btn-over .x-btn-center{ - background-position:0 -105px; -} - -.x-panel-btns-ct .x-btn-click .x-btn-center{ - background-position:0 -126px; -} -.x-panel-btns-ct .x-btn-click .x-btn-right{ - background-position:0 -84px; -} -.x-panel-btns-ct .x-btn-click .x-btn-left{ - background-position:0 -63px; -} \ No newline at end of file diff --git a/lib/web/extjs/css/qtips.css b/lib/web/extjs/css/qtips.css deleted file mode 100644 index b645aa6e864f23caf17fffadb1f80d4259bf134a..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/qtips.css +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Ext JS Library 2.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-tip{ - position: absolute; - top: 0; - left:0; - visibility: hidden; - z-index: 20000; - border:0 none; -} -.x-tip .x-tip-close{ - background-image: url(../images/default/qtip/close.gif); - height: 15px; - float:right; - width: 15px; - margin:0 0 2px 2px; - cursor:pointer; - display:none; -} -.x-tip .x-tip-top { - background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -12px; - height:6px; - overflow:hidden; -} -.x-tip .x-tip-top-left { - background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 0; - padding-left:6px; - zoom:1; -} -.x-tip .x-tip-top-right { - background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat right 0; - padding-right:6px; - zoom:1; -} -.x-tip .x-tip-ft { - background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -18px; - height:6px; - overflow:hidden; -} -.x-tip .x-tip-ft-left { - background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -6px; - padding-left:6px; - zoom:1; -} -.x-tip .x-tip-ft-right { - background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat right -6px; - padding-right:6px; - zoom:1; -} -.x-tip .x-tip-bd { - border:0 none; - font: normal 11px tahoma,arial,helvetica,sans-serif; -} -.x-tip .x-tip-bd-left { - background: #fff url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -24px; - padding-left:6px; - zoom:1; -} -.x-tip .x-tip-bd-right { - background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat right -24px; - padding-right:6px; - zoom:1; -} - -.x-tip h3 { - font: bold 11px tahoma,arial,helvetica,sans-serif; - margin:0; - padding:2px 0; - color:#444; -} -.x-tip .x-tip-bd-inner { - font: normal 11px tahoma,arial,helvetica,sans-serif; - margin:0 !important; - line-height:14px; - color:#444; - padding:0; - float:left; -} - - -.x-form-invalid-tip { -} - -.x-form-invalid-tip .x-tip-top { - background-image: url(../images/default/form/error-tip-corners.gif); -} -.x-form-invalid-tip .x-tip-top-left { - background-image: url(../images/default/form/error-tip-corners.gif); -} -.x-form-invalid-tip .x-tip-top-right { - background-image: url(../images/default/form/error-tip-corners.gif); -} -.x-form-invalid-tip .x-tip-ft { - background-image: url(../images/default/form/error-tip-corners.gif); -} -.x-form-invalid-tip .x-tip-ft-left { - background-image: url(../images/default/form/error-tip-corners.gif); -} -.x-form-invalid-tip .x-tip-ft-right { - background-image: url(../images/default/form/error-tip-corners.gif); -} -.x-form-invalid-tip .x-tip-bd-left { - background-image: url(../images/default/form/error-tip-corners.gif); -} -.x-form-invalid-tip .x-tip-bd-right { - background-image: url(../images/default/form/error-tip-corners.gif); -} -.x-form-invalid-tip .x-tip-bd .x-tip-bd-inner { - padding-left:24px; - background:transparent url(../images/default/form/exclamation.gif) no-repeat 2px 2px; -} -.x-form-invalid-tip .x-tip-bd-inner { - padding:2px; -} \ No newline at end of file diff --git a/lib/web/extjs/css/reset-min.css b/lib/web/extjs/css/reset-min.css deleted file mode 100644 index 655242130bc4414248d9a3954f8101469c43c093..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/reset-min.css +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Ext JS Library 2.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td{margin:0;padding:0;}img,body,html{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}ol,ul {list-style:none;}caption,th {text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;}q:before,q:after{content:'';} \ No newline at end of file diff --git a/lib/web/extjs/css/resizable.css b/lib/web/extjs/css/resizable.css deleted file mode 100644 index 5f380b7204f491c4267bf9b8d0d5863c334fc1f4..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/resizable.css +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Ext JS Library 2.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-resizable-handle { - position:absolute; - z-index:100; - /* ie needs these */ - font-size:1px; - line-height:6px; - overflow:hidden; - background:white; - filter:alpha(opacity=0); - opacity:0; - zoom:1; -} -.x-resizable-handle-east{ - width:6px; - cursor:e-resize; - right:0; - top:0; - height:100%; -} -.ext-ie .x-resizable-handle-east { - margin-right:-1px; /*IE rounding error*/ -} -.x-resizable-handle-south{ - width:100%; - cursor:s-resize; - left:0; - bottom:0; - height:6px; -} -.ext-ie .x-resizable-handle-south { - margin-bottom:-1px; /*IE rounding error*/ -} -.x-resizable-handle-west{ - width:6px; - cursor:w-resize; - left:0; - top:0; - height:100%; -} -.x-resizable-handle-north{ - width:100%; - cursor:n-resize; - left:0; - top:0; - height:6px; -} -.x-resizable-handle-southeast{ - width:6px; - cursor:se-resize; - right:0; - bottom:0; - height:6px; - z-index:101; -} -.x-resizable-handle-northwest{ - width:6px; - cursor:nw-resize; - left:0; - top:0; - height:6px; - z-index:101; -} -.x-resizable-handle-northeast{ - width:6px; - cursor:ne-resize; - right:0; - top:0; - height:6px; - z-index:101; -} -.x-resizable-handle-southwest{ - width:6px; - cursor:sw-resize; - left:0; - bottom:0; - height:6px; - z-index:101; -} -.x-resizable-over .x-resizable-handle, .x-resizable-pinned .x-resizable-handle{ - filter:alpha(opacity=100); - opacity:1; -} -.x-resizable-over .x-resizable-handle-east, .x-resizable-pinned .x-resizable-handle-east{ - background:url(../images/default/sizer/e-handle.gif); - background-position: left; -} -.x-resizable-over .x-resizable-handle-west, .x-resizable-pinned .x-resizable-handle-west{ - background:url(../images/default/sizer/e-handle.gif); - background-position: left; -} -.x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-south{ - background:url(../images/default/sizer/s-handle.gif); - background-position: top; -} -.x-resizable-over .x-resizable-handle-north, .x-resizable-pinned .x-resizable-handle-north{ - background:url(../images/default/sizer/s-handle.gif); - background-position: top; -} -.x-resizable-over .x-resizable-handle-southeast, .x-resizable-pinned .x-resizable-handle-southeast{ - background:url(../images/default/sizer/se-handle.gif); - background-position: top left; -} -.x-resizable-over .x-resizable-handle-northwest, .x-resizable-pinned .x-resizable-handle-northwest{ - background:url(../images/default/sizer/nw-handle.gif); - background-position:bottom right; -} -.x-resizable-over .x-resizable-handle-northeast, .x-resizable-pinned .x-resizable-handle-northeast{ - background:url(../images/default/sizer/ne-handle.gif); - background-position: bottom left; -} -.x-resizable-over .x-resizable-handle-southwest, .x-resizable-pinned .x-resizable-handle-southwest{ - background:url(../images/default/sizer/sw-handle.gif); - background-position: top right; -} -.x-resizable-proxy{ - border: 1px dashed #6593cf; - position:absolute; - overflow:hidden; - display:none; - left:0;top:0; - z-index:50000; -} -.x-resizable-overlay{ - width:100%; - height:100%; - display:none; - position:absolute; - left:0; - top:0; - background:white; - z-index:200000; - -moz-opacity: 0; - opacity:0; - filter: alpha(opacity=0); -} diff --git a/lib/web/extjs/css/tabs.css b/lib/web/extjs/css/tabs.css deleted file mode 100644 index 6e165f9ea6d4d32c907496e9289b5bfca1da2b22..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/tabs.css +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Ext JS Library 2.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-tabs-wrap { - border-bottom:1px solid #6593cf; - padding-top:2px; -} -.x-tabs-strip-wrap{ - width:100%; -} -.x-tabs-wrap table{ - position:relative; - top:0; left:0; -} -.x-tabs-strip td{ - padding:0; - padding-left:2px; -} -.x-tabs-strip a, .x-tabs-strip span, .x-tabs-strip em { - display:block; -} -.x-tabs-strip a { - text-decoration:none !important; - -moz-outline: none; - outline: none; - cursor:pointer; -} -.x-tabs-strip .x-tabs-text { - font:bold 11px tahoma,arial,helvetica; - color:#666; - overflow:hidden; - white-space: nowrap; - cursor:pointer; - text-overflow: ellipsis; -} -.x-tabs-strip .on .x-tabs-text { - cursor:default; - color:#083772; -} -.x-tabs-strip .disabled .x-tabs-text { - cursor:default; - color:#aaaaaa; -} -.x-tabs-strip .x-tabs-inner { - padding:4px 10px; -} - -.x-tabs-strip .on .x-tabs-right { - background: url(../images/default/tabs/tab-sprite.gif) no-repeat right 0; -} -.x-tabs-strip .on .x-tabs-left { - background: url(../images/default/tabs/tab-sprite.gif) no-repeat 0 -100px; -} -.x-tabs-strip .x-tabs-right { - background: url(../images/default/tabs/tab-sprite.gif) no-repeat right -50px; -} -.x-tabs-strip .x-tabs-left { - background: url(../images/default/tabs/tab-sprite.gif) no-repeat 0 -150px; -} - -.x-tabs-strip a { - position:relative; - top:1px; left:0; -} -.x-tabs-strip .on a { - position:relative; -} -.x-tabs-strip .on .x-tabs-inner { - padding-bottom:5px; -} -/** closable tabs */ -.x-tabs-strip .x-tabs-closable .x-tabs-inner{ - padding-right:22px; - position:relative; -} -.x-tabs-strip .x-tabs-closable .close-icon{ - line-height: 1px; - font-size:1px; - background-image:url(../images/default/layout/tab-close.gif); - display:block; - position:absolute; - right:5px;top:4px; - width:11px;height:11px; - cursor:pointer; -} -.x-tabs-strip .on .close-icon{ - background-image:url(../images/default/layout/tab-close-on.gif); -} -.x-tabs-strip .x-tabs-closable .close-over{ - background-image:url(../images/default/layout/tab-close-on.gif); -} -.x-tabs-body { - border:1px solid #6593cf; - border-top:0 none; -} -.x-tabs-bottom .x-tabs-wrap { - border-top:1px solid #6593cf; - border-bottom:0 none; - padding-top:0; - padding-bottom:2px; -} -.x-tabs-bottom .x-tabs-strip .x-tabs-right { - background: url(../images/default/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom left; -} -.x-tabs-bottom .x-tabs-strip .x-tabs-left { - background: url(../images/default/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom right; -} -.x-tabs-bottom .x-tabs-strip .on .x-tabs-right { - background: url(../images/default/tabs/tab-btm-right-bg.gif) no-repeat bottom left; -} -.x-tabs-bottom .x-tabs-strip .on .x-tabs-left { - background: url(../images/default/tabs/tab-btm-left-bg.gif) no-repeat bottom right; -} -.x-tabs-bottom .x-tabs-strip a { - position:relative; - top:0; left:0; -} -.x-tabs-bottom .x-tabs-strip .on a { - margin-top:-1px; -} -.x-tabs-bottom .x-tabs-strip .on .x-tabs-inner { - padding-top:5px; -} - -.x-tabs-bottom .x-tabs-body { - border:1px solid #6593cf; - border-bottom:0 none; -} - diff --git a/lib/web/extjs/css/toolbar.css b/lib/web/extjs/css/toolbar.css deleted file mode 100644 index 2107a2bc4376b1c936ad1dd5f88850f923cd4f90..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/toolbar.css +++ /dev/null @@ -1,173 +0,0 @@ -/* - * Ext JS Library 2.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-toolbar{ - border-top: 1px solid #eaf0f7; - border-bottom: 1px solid #a9bfd3; - display: block; - padding:2px; - background:#d0def0 url(../images/default/layout/panel-title-light-bg.gif) repeat-x; -} -.x-toolbar .x-item-disabled .x-btn-icon { - opacity: .35; - -moz-opacity: .35; - filter: alpha(opacity=35); -} -.x-toolbar td { - vertical-align:middle; -} -.mso .x-toolbar, .x-grid-mso .x-toolbar{ - border: 0 none; - background: url(../images/default/grid/mso-hd.gif); -} -.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{ - white-space: nowrap; - font:normal 11px tahoma, arial, helvetica, sans-serif; -} -.x-toolbar .x-item-disabled { - color:gray; - cursor:default; - opacity:.6; - -moz-opacity:.6; - filter:alpha(opacity=60); -} -.x-toolbar .x-item-disabled * { - color:gray; - cursor:default; -} -.x-toolbar .x-btn-left{ - background:none; -} -.x-toolbar .x-btn-right{ - background:none; -} -.x-toolbar .x-btn-center{ - background:none; - padding:0 0; -} - -.x-toolbar .x-btn-menu-text-wrap .x-btn-center button{ - padding-right:2px; -} -.ext-gecko .x-toolbar .x-btn-menu-text-wrap .x-btn-center button{ - padding-right:0; -} -.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button{ - padding:0 2px; -} -.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button { - width:12px; - background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat 0 3px; -} -.x-toolbar .x-btn-text-icon .x-btn-menu-arrow-wrap .x-btn-center button { - width:12px; - background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat 0 3px; -} -.x-toolbar .x-btn-over .x-btn-menu-arrow-wrap .x-btn-center button { - background-position: 0 -47px; -} -.x-toolbar .x-btn-over .x-btn-left{ - background:url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 0; -} -.x-toolbar .x-btn-over .x-btn-right{ - background:url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -21px; -} -.x-toolbar .x-btn-over .x-btn-center{ - background:url(../images/default/toolbar/tb-btn-sprite.gif) repeat-x 0 -42px; -} - -.x-toolbar .x-btn-click .x-btn-left, .x-toolbar .x-btn-pressed .x-btn-left, .x-toolbar .x-btn-menu-active .x-btn-left{ - background:url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -63px; -} -.x-toolbar .x-btn-click .x-btn-right, .x-toolbar .x-btn-pressed .x-btn-right, .x-toolbar .x-btn-menu-active .x-btn-right{ - background:url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -84px; -} -.x-toolbar .x-btn-click .x-btn-center, .x-toolbar .x-btn-pressed .x-btn-center, .x-toolbar .x-btn-menu-active .x-btn-center{ - background:url(../images/default/toolbar/tb-btn-sprite.gif) repeat-x 0 -105px; -} - -.x-toolbar .x-btn-with-menu .x-btn-center em{ - padding-right:8px; -} - -.x-toolbar .ytb-text{ - padding:2px; -} -.x-toolbar .ytb-sep { - background-image: url(../images/default/grid/grid-split.gif); - background-position: center; - background-repeat: no-repeat; - display: block; - font-size: 1px; - height: 16px; - width:4px; - overflow: hidden; - cursor:default; - margin: 0 2px 0; - border:0; -} -.x-toolbar .ytb-spacer { - width:2px; -} -.mso .x-toolbar .ytb-sep, .x-grid-mso .x-toolbar .ytb-sep{ - background-image: url(../images/default/grid/grid-blue-split.gif); -} - -/* IE refuses to respect the negative margins in the toolbar */ -.ext-ie .x-toolbar .x-form-field-wrap { - padding-bottom:1px; -} -.ext-ie .x-toolbar .x-form-field-wrap .x-form-trigger { - top:1px; -} -.ext-ie .x-toolbar .x-form-field-wrap .x-form-twin-triggers img { - margin-top:1px; -} - -/* Paging Toolbar */ - -.x-grid-page-number{ - width:24px; - height:14px; -} -.x-grid-page-first .x-btn-text{ - background-image: url(../images/default/grid/page-first.gif); -} -.x-grid-loading .x-btn-text{ - background-image: url(../images/default/grid/done.gif); -} -.x-grid-page-last .x-btn-text{ - background-image: url(../images/default/grid/page-last.gif); -} -.x-grid-page-next .x-btn-text{ - background-image: url(../images/default/grid/page-next.gif); -} -.x-grid-page-prev .x-btn-text{ - background-image: url(../images/default/grid/page-prev.gif); -} -.x-item-disabled .x-grid-loading .x-btn-text{ - background-image: url(../images/default/grid/loading.gif); -} -.x-item-disabled .x-grid-page-first .x-btn-text{ - background-image: url(../images/default/grid/page-first-disabled.gif); -} -.x-item-disabled .x-grid-page-last .x-btn-text{ - background-image: url(../images/default/grid/page-last-disabled.gif); -} -.x-item-disabled .x-grid-page-next .x-btn-text{ - background-image: url(../images/default/grid/page-next-disabled.gif); -} -.x-item-disabled .x-grid-page-prev .x-btn-text{ - background-image: url(../images/default/grid/page-prev-disabled.gif); -} -.x-paging-info { - position:absolute; - top:8px; - right: 8px; - color:#15428b; -} diff --git a/lib/web/extjs/css/tree.css b/lib/web/extjs/css/tree.css deleted file mode 100644 index 73dc3787d5b69dc6247fdedb757a58b99faa1025..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/tree.css +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Ext JS Library 2.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-tree-icon, .x-tree-ec-icon, .x-tree-elbow-line, .x-tree-elbow, .x-tree-elbow-end, .x-tree-elbow-plus, .x-tree-elbow-minus, .x-tree-elbow-end-plus, .x-tree-elbow-end-minus{ - border: 0 none; - height: 18px; - margin: 0; - padding: 0; - vertical-align: middle; - width: 16px; - background-repeat: no-repeat; -} -.x-tree-node-collapsed .x-tree-node-icon, .x-tree-node-expanded .x-tree-node-icon, .x-tree-node-leaf .x-tree-node-icon{ - border: 0 none; - height: 18px; - margin: 0; - padding: 0; - vertical-align: middle; - width: 16px; - background-position:center; - background-repeat: no-repeat; -} - -/* some default icons for leaf/folder */ -.x-tree-node-collapsed .x-tree-node-icon{ - background-image:url(../images/default/tree/folder.gif); -} -.x-tree-node-expanded .x-tree-node-icon{ - background-image:url(../images/default/tree/folder-open.gif); -} -.x-tree-node-leaf .x-tree-node-icon{ - background-image:url(../images/default/tree/leaf.gif); -} - -.x-tree-noicon .x-tree-node-icon{ - width:0; height:0; -} -/* loading icon */ -.x-tree-node-loading .x-tree-node-icon{ - background-image:url(../images/default/tree/loading.gif) !important; -} -.x-tree-node-loading a span{ - font-style: italic; - color:#444444; -} - -/* Line styles */ -.x-tree-lines .x-tree-elbow{ - background-image:url(../images/default/tree/elbow.gif); -} -.x-tree-lines .x-tree-elbow-plus{ - background-image:url(../images/default/tree/elbow-plus.gif); -} -.x-tree-lines .x-tree-elbow-minus{ - background-image:url(../images/default/tree/elbow-minus.gif); -} -.x-tree-lines .x-tree-elbow-end{ - background-image:url(../images/default/tree/elbow-end.gif); -} -.x-tree-lines .x-tree-elbow-end-plus{ - background-image:url(../images/default/tree/elbow-end-plus.gif); -} -.x-tree-lines .x-tree-elbow-end-minus{ - background-image:url(../images/default/tree/elbow-end-minus.gif); -} -.x-tree-lines .x-tree-elbow-line{ - background-image:url(../images/default/tree/elbow-line.gif); -} - -/* No line styles */ -.x-tree-no-lines .x-tree-elbow{ - background:transparent; -} -.x-tree-no-lines .x-tree-elbow-plus{ - background-image:url(../images/default/tree/elbow-plus-nl.gif); -} -.x-tree-no-lines .x-tree-elbow-minus{ - background-image:url(../images/default/tree/elbow-minus-nl.gif); -} -.x-tree-no-lines .x-tree-elbow-end{ - background:transparent; -} -.x-tree-no-lines .x-tree-elbow-end-plus{ - background-image:url(../images/default/tree/elbow-end-plus-nl.gif); -} -.x-tree-no-lines .x-tree-elbow-end-minus{ - background-image:url(../images/default/tree/elbow-end-minus-nl.gif); -} -.x-tree-no-lines .x-tree-elbow-line{ - background:transparent; -} - -.x-tree-elbow-plus, .x-tree-elbow-minus, .x-tree-elbow-end-plus, .x-tree-elbow-end-minus{ - cursor:pointer; -} -.ext-ie ul.x-tree-node-ct{ - font-size:0; - line-height:0; -} -.x-tree-node{ - color: black; - font: normal 11px arial, tahoma, helvetica, sans-serif; - white-space: nowrap; -} -.x-tree-node a, .x-dd-drag-ghost a{ - text-decoration:none; - color:black; - -khtml-user-select:none; - -moz-user-select:none; - -kthml-user-focus:normal; - -moz-user-focus:normal; - -moz-outline: 0 none; - outline:0 none; -} -.x-tree-node a span, .x-dd-drag-ghost a span{ - text-decoration:none; - color:black; - padding:1px 3px 1px 2px; -} -.x-tree-node .x-tree-node-disabled a span{ - color:gray !important; -} -.x-tree-node .x-tree-node-disabled .x-tree-node-icon{ - -moz-opacity: 0.5; - opacity:.5; - filter: alpha(opacity=50); -} -.x-tree-node .x-tree-node-inline-icon{ - background:transparent; -} -.x-tree-node a:hover, .x-dd-drag-ghost a:hover{ - text-decoration:none; -} -.x-tree-node div.x-tree-drag-insert-below{ - border-bottom:1px dotted #3366cc; -} -.x-tree-node div.x-tree-drag-insert-above{ - border-top:1px dotted #3366cc; -} -.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below{ - border-bottom:0 none; -} -.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above{ - border-top:0 none; -} -.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below a{ - border-bottom:2px solid #3366cc; -} -.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above a{ - border-top:2px solid #3366cc; -} -.x-tree-node .x-tree-drag-append a span{ - background:#dddddd; - border:1px dotted gray; -} -.x-tree-node .x-tree-selected a span{ - background:#3366cc; - color:white; -} -.x-dd-drag-ghost .x-tree-node-indent, .x-dd-drag-ghost .x-tree-ec-icon{ - display:none !important; -} -.x-tree-drop-ok-append .x-dd-drop-icon{ - background-image: url(../images/default/tree/drop-add.gif); -} -.x-tree-drop-ok-above .x-dd-drop-icon{ - background-image: url(../images/default/tree/drop-over.gif); -} -.x-tree-drop-ok-below .x-dd-drop-icon{ - background-image: url(../images/default/tree/drop-under.gif); -} -.x-tree-drop-ok-between .x-dd-drop-icon{ - background-image: url(../images/default/tree/drop-between.gif); -} diff --git a/lib/web/extjs/css/ytheme-aero.css b/lib/web/extjs/css/ytheme-aero.css deleted file mode 100644 index 2e185550bfc10bdb7190b7b352a773274d037a4f..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/ytheme-aero.css +++ /dev/null @@ -1,701 +0,0 @@ -/* - * Ext JS Library 2.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -/* menus */ -.x-menu { - border: 1px solid #718bb7; - z-index: 15000; - zoom: 1; - background: #f0f0f0 url(../images/aero/menu/menu.gif) repeat-y; - padding: 2px; -} - -.x-menu-list{ - background:transparent; - border:0 none; -} - -.x-menu-item-icon { - margin-right: 8px; -} - -.x-menu-sep { - background-color:#e0e0e0; - border-bottom:1px solid #fff; - margin-left:3px; -} -.x-menu-item { - color:#222; -} -.x-menu-item-active { - color: #233d6d; - background: #ebf3fd url(../images/aero/menu/item-over.gif) repeat-x left bottom; - border:1px solid #aaccf6; - padding: 0; -} - -.x-date-mmenu .x-menu-list{ - padding: 0; -} - -.x-date-mmenu .x-menu-list{ - border: 0 none; -} - -.x-menu .x-color-palette, .x-menu .x-date-picker{ - margin-left: 26px; -} - -.x-menu-plain .x-color-palette, .x-menu-plain .x-date-picker{ - margin: 0; - border: 0 none; -} - - -.x-menu-check-item .x-menu-item-icon{ - background-image: url(../images/aero/menu/unchecked.gif); -} - -.x-menu-item-checked .x-menu-item-icon{ - background-image:url(../images/aero/menu/checked.gif); -} - -.x-menu-group-item .x-menu-item-icon{ - background: transparent; -} - -.x-menu-item-checked .x-menu-group-item .x-menu-item-icon{ - background: transparent url(../images/default/menu/group-checked.gif) no-repeat center; -} -/** -* Tabs -*/ -.x-tabs-wrap, .x-layout-panel .x-tabs-top .x-tabs-wrap { - background: #deecfd; - border: 1px solid #8db2e3; - padding-bottom: 2px; - padding-top: 0; -} - -.x-tabs-strip-wrap{ - padding-top: 1px; - background: url(../images/aero/tabs/tab-strip-bg.gif) #cedff5 repeat-x bottom; - border-bottom: 1px solid #8db2e3; -} - -.x-tabs-strip .x-tabs-text { - color: #15428b; - font: bold 11px tahoma,arial,verdana,sans-serif; -} - -.x-tabs-strip .on .x-tabs-text { - cursor: default; - color: #15428b; -} - -.x-tabs-top .x-tabs-strip .on .x-tabs-right { - background: url(../images/aero/tabs/tab-sprite.gif) no-repeat right 0; -} - -.x-tabs-top .x-tabs-strip .on .x-tabs-left,.x-tabs-top .x-tabs-strip .on a:hover .x-tabs-left{ - background: url(../images/aero/tabs/tab-sprite.gif) no-repeat 0 -100px; -} - -.x-tabs-top .x-tabs-strip .x-tabs-right { - background: transparent url(../images/aero/tabs/tab-sprite.gif) no-repeat right -50px; -} - -.x-tabs-top .x-tabs-strip .x-tabs-left { - background: transparent url(../images/aero/tabs/tab-sprite.gif) no-repeat 0 -150px; -} - -.x-tabs-top .x-tabs-body { - border: 1px solid #8db2e3; - border-top: 0 none; -} - -.x-tabs-bottom .x-tabs-wrap, .x-layout-panel .x-tabs-bottom .x-tabs-wrap { - background: #deecfd; - border: 1px solid #8db2e3; - padding-top: 2px; - padding-bottom: 0; -} - -.x-tabs-bottom .x-tabs-strip-wrap{ - padding-top: 0; - padding-bottom: 1px; - background: url(../images/aero/tabs/tab-strip-btm-bg.gif) #cedff5 repeat-x top; - border-top: 1px solid #8db2e3; - border-bottom: 0 none; -} - -.x-tabs-bottom .x-tabs-strip .x-tabs-right { - background: transparent url(../images/aero/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom right; -} - -.x-tabs-bottom .x-tabs-strip .x-tabs-left { - background: transparent url(../images/aero/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom left; -} - -.x-tabs-bottom .x-tabs-strip .on .x-tabs-right,.x-tabs-bottom .x-tabs-strip .on a:hover { - background: url(../images/aero/tabs/tab-btm-right-bg.gif) no-repeat bottom left; -} - -.x-tabs-bottom .x-tabs-strip .on .x-tabs-left,.x-tabs-bottom .x-tabs-strip .on a:hover .x-tabs-left { - background: url(../images/aero/tabs/tab-btm-left-bg.gif) no-repeat bottom right; -} - -.x-tabs-bottom .x-tabs-body { - border: 1px solid #8db2e3; - border-bottom: 0 none; -} - -/* -* Basic-Dialog -*/ -.x-dlg-proxy { - background: #c7dffc; - border: 1px solid #a5ccf9; -} - -.x-dlg-shadow{ - background: #cccccc; - opacity: .3; - -moz-opacity: .3; - filter: alpha(opacity=30); -} - -.x-dlg { - background: transparent; -} - -.x-dlg .x-dlg-hd { - background: url(../images/aero/basic-dialog/hd-sprite.gif) repeat-x 0 -82px; - background-color: #aabaca; - color: #15428b; - zoom: 1; - padding-top: 7px; -} - -.x-dlg .x-dlg-hd-left { - opacity: .85; - -moz-opacity: .85; - filter: alpha(opacity=80); - background: url(../images/aero/basic-dialog/hd-sprite.gif) no-repeat 0 -41px; - zoom: 1; -} - -.x-dlg-modal .x-dlg-hd-left { - opacity: .75; - -moz-opacity: .75; - filter: alpha(opacity=70); -} - -.x-dlg .x-dlg-hd-right { - background: url(../images/aero/basic-dialog/hd-sprite.gif) no-repeat right 0; - zoom: 1; -} - -.x-dlg .x-dlg-dlg-body{ - padding: 0 0 0; - position: absolute; - top: 24px; - left: 0; - z-index: 1; - border: 0 none; - background: transparent; -} - -.x-dlg .x-dlg-bd{ - background: #ffffff; - border: 1px solid #96b9e6; -} - -.x-dlg .x-dlg-ft{ - border: 0 none; - background: transparent; - padding-bottom: 8px; -} - -.x-dlg .x-dlg-bg{ - filter: alpha(opacity=80); - opacity: .85; - -moz-opacity: .85; - zoom: 1; -} - -.x-dlg-modal .x-dlg-bg { - opacity: .75; - -moz-opacity: .75; - filter: alpha(opacity=70); -} - -.x-dlg .x-dlg-bg-center { - padding: 2px 7px 7px 7px; - background: transparent url(../images/aero/basic-dialog/bg-center.gif) repeat-x bottom; - zoom: 1; -} - -.x-dlg .x-dlg-bg-left{ - padding-left: 7px; - background: transparent url(../images/aero/basic-dialog/bg-left.gif) no-repeat bottom left; - zoom: 1; -} - -.x-dlg .x-dlg-bg-right{ - padding-right: 7px; - background: transparent url(../images/aero/basic-dialog/bg-right.gif) no-repeat bottom right; - zoom: 1; -} - -.x-dlg-auto-tabs .x-dlg-dlg-body, .x-dlg-auto-layout .x-dlg-dlg-body{ - background: transparent; - border: 0 none; -} - -.x-dlg-auto-tabs .x-dlg-bd, .x-dlg-auto-layout .x-dlg-bd{ - background: #ffffff; - border: 1px solid #e9f3f5; -} - -.x-dlg-auto-tabs .x-tabs-top .x-tabs-body,.x-dlg-auto-tabs .x-tabs-bottom .x-tabs-body{ - border-color: #8db2e3; -} - -.x-dlg-auto-tabs .x-tabs-top .x-tabs-wrap,.x-dlg-auto-tabs .x-tabs-bottom .x-tabs-wrap{ - border-color: #8db2e3; -} - -.x-dlg .x-dlg-toolbox { - width: 50px; - height: 20px; - right: 5px; - top: 5px; -} - -.x-dlg .x-dlg-close, .x-dlg .x-dlg-collapse { - width: 21px; - height: 20px; - margin: 0; -} - -.x-dlg .x-dlg-close { - background-image: url(../images/aero/basic-dialog/aero-close.gif); -} - -.x-dlg .x-dlg-collapse { - background-image: url(../images/aero/basic-dialog/collapse.gif); -} - -.x-dlg-collapsed { - border-bottom: 1px solid #96b9e6; -} - -.x-dlg .x-dlg-close-over { - background-image: url(../images/aero/basic-dialog/aero-close-over.gif); -} - -.x-dlg .x-dlg-collapse-over { - background-image: url(../images/aero/basic-dialog/collapse-over.gif); -} - -.x-dlg-collapsed .x-dlg-collapse { - background-image: url(../images/aero/basic-dialog/expand.gif); -} - -.x-dlg-collapsed .x-dlg-collapse-over { - background-image: url(../images/aero/basic-dialog/expand-over.gif); -} - -.x-dlg div.x-resizable-handle-east{ - background-image: url(../images/aero/s.gif); - border: 0 none; -} - -.x-dlg div.x-resizable-handle-south{ - background-image: url(../images/aero/s.gif); - border: 0 none; -} - -.x-dlg div.x-resizable-handle-west{ - background-image: url(../images/aero/s.gif); - border: 0 none; -} - -.x-dlg div.x-resizable-handle-southeast{ - background-image: url(../images/aero/basic-dialog/se-handle.gif); - background-position: bottom right; - width: 9px; - height: 9px; - border: 0; - right: 2px; - bottom: 2px; -} - -.x-dlg div.x-resizable-handle-southwest{ - background-image: url(../images/aero/s.gif); - background-position: top right; - margin-left: 1px; - margin-bottom: 1px; - border: 0; -} - -.x-dlg div.x-resizable-handle-north{ - background-image: url(../images/aero/s.gif); - border: 0 none; -} - -#x-msg-box .x-dlg-bd{ - background: #cfe0f5; - border: 0 none; -} - -body.x-masked #x-msg-box .x-dlg-bd, body.x-body-masked #x-msg-box .x-dlg-bd{ - background: #c4d2e3; - border: 0 none; -} - -/* BorderLayout */ -.x-layout-container{ - background: #deecfd; -} - -.x-layout-collapsed{ - background-color: #deecfd; - border: 1px solid #99bbe8; -} - -.x-layout-collapsed-over{ - background-color: #f5f9fe; -} - -.x-layout-panel{ - border: 1px solid #99bbe8; -} - -.x-layout-nested-layout .x-layout-panel { - border: 0 none; -} - -.x-layout-split{ - background-color: #deecfd; -} - -.x-layout-panel-hd{ - background: url(../images/aero/grid/grid-hrow.gif) #ebeadb repeat-x; - border-bottom: 1px solid #99bbe8; -} - -.x-layout-panel-hd-text { - color: #15428b; - font: bold 11px tahoma,arial,verdana,sans-serif; -} - -.x-layout-split-h{ - background: #deecfd; -} - -.x-layout-split-v{ - background: #deecfd; -} - -.x-layout-panel .x-tabs-top .x-tabs-wrap{ - border: 0 none; - border-bottom: 1px solid #8db2e3; -} - -.x-layout-panel .x-tabs-bottom .x-tabs-wrap{ - border: 0 none; - border-top: 1px solid #8db2e3; -} - -.x-layout-nested-layout .x-layout-panel-north { - border-bottom: 1px solid #99bbe8; -} - -.x-layout-nested-layout .x-layout-panel-south { - border-top: 1px solid #99bbe8; -} - -.x-layout-nested-layout .x-layout-panel-east { - border-left: 1px solid #99bbe8; -} - -.x-layout-nested-layout .x-layout-panel-west { - border-right: 1px solid #99bbe8; -} - -.x-layout-panel-dragover { - border: 2px solid #99bbe8; -} - -.x-layout-panel-proxy { - background-image: url(../images/aero/layout/gradient-bg.gif); - background-color: #f3f2e7; - border: 1px dashed #99bbe8; -} - -.x-layout-container .x-layout-tabs-body{ - border: 0 none; -} - -/** Resizable */ -.x-resizable-proxy{ - border: 1px dashed #3b5a82; -} - -/* grid */ -.x-grid-hd-text { - color: #15428b; - font-weight: bold; -} - -.x-grid-locked .x-grid-body td { - background: #fbfdff; - border-right: 1px solid #deecfd; - border-bottom: 1px solid #deecfd !important; -} - -.x-grid-locked .x-grid-body td .x-grid-cell-inner { - border-top: 0 none; -} - -.x-grid-locked .x-grid-row-alt td{ - background: #f5fafe; -} - -.x-grid-locked .x-grid-row-selected td{ - color: #ffffff !important; - background-color: #316ac5 !important; -} - -.x-grid-hd{ - border-bottom: 0; - background: none; -} - -.x-grid-hd-row{ - height: auto; -} - -.x-grid-hd-over { - border-bottom: 0 none; -} - -.x-grid-hd-over .x-grid-hd-body{ - background: none; - border-bottom: 0 none; -} - -.x-grid-hd-over .x-grid-hd-body{ - background-color: transparent; - border-bottom: 0; -} - -.x-grid-split { - background-image: url(../images/aero/grid/grid-blue-split.gif); -} - -.x-grid-header{ - background: url(../images/aero/grid/grid-hrow.gif); - border: 0 none; - border-bottom: 1px solid #6f99cf; -} - -.x-grid-row-alt{ - background-color: #f5f5f5; -} - -.x-grid-row-over td, .x-grid-locked .x-grid-row-over td{ - background-color: #d9e8fb; -} - -.x-grid-col { - border-right: 1px solid #eeeeee; - border-bottom: 1px solid #eeeeee; -} - -.x-grid-header .x-grid-hd-inner { - padding-bottom: 1px; -} - -.x-grid-header .x-grid-hd-text { - padding-bottom: 3px; -} - -.x-grid-hd-over .x-grid-hd-inner { - border-bottom: 1px solid #316ac5; - padding-bottom: 0; -} - -.x-grid-hd-over .x-grid-hd-text { - background: #d5e4f5; - border-bottom: 1px solid #ffffff; - padding-bottom: 2px; -} - -.x-grid-header .sort-asc .x-grid-hd-inner, .x-grid-header .sort-desc .x-grid-hd-inner { - border-bottom: 1px solid #316ac5; - padding-bottom: 0; -} - -.x-grid-header .sort-asc .x-grid-hd-text, .x-grid-header .sort-desc .x-grid-hd-text { - border-bottom: 0 none; - padding-bottom: 3px; -} - -.x-grid-header .sort-asc .x-grid-sort-icon { - background-image: url(../images/aero/grid/sort_asc.gif); -} - -.x-grid-header .sort-desc .x-grid-sort-icon { - background-image: url(../images/aero/grid/sort_desc.gif); -} - -.x-dd-drag-proxy .x-grid-hd-inner{ - background: url(../images/aero/grid/grid-hrow.gif) #ebeadb repeat-x; - height: 22px; - width: 120px; -} - -.x-grid-locked td.x-grid-row-marker, .x-grid-locked .x-grid-row-selected td.x-grid-row-marker{ - background: url(../images/aero/grid/grid-hrow.gif) #ebeadb repeat-x 0 0 !important; - vertical-align: middle !important; - color: #000000; - padding: 0; - border-top: 1px solid #ffffff; - border-bottom: 1px solid #6f99cf !important; - border-right: 1px solid #6f99cf !important; - text-align: center; -} - -.x-grid-locked td.x-grid-row-marker div, .x-grid-locked .x-grid-row-selected td.x-grid-row-marker div{ - padding: 0 4px; - color: #15428b !important; - text-align: center; -} - -/** Toolbar */ -.x-toolbar{ - padding: 2px 2px 2px 2px; - background: url(../images/default/toolbar/tb-bg.gif) #d0def0 repeat-x; -} - -.x-toolbar .ytb-sep{ - background-image: url(../images/aero/grid/grid-blue-split.gif); -} - -.x-toolbar .x-btn-over .x-btn-left{ - background: url(../images/aero/toolbar/tb-btn-sprite.gif) no-repeat 0 0; -} - -.x-toolbar .x-btn-over .x-btn-right{ - background: url(../images/aero/toolbar/tb-btn-sprite.gif) no-repeat 0 -21px; -} - -.x-toolbar .x-btn-over .x-btn-center{ - background: url(../images/aero/toolbar/tb-btn-sprite.gif) repeat-x 0 -42px; -} - -.x-toolbar .x-btn-click .x-btn-left, .x-toolbar .x-btn-pressed .x-btn-left, .x-toolbar .x-btn-menu-active .x-btn-left{ - background: url(../images/aero/toolbar/tb-btn-sprite.gif) no-repeat 0 -63px; -} - -.x-toolbar .x-btn-click .x-btn-right, .x-toolbar .x-btn-pressed .x-btn-right, .x-toolbar .x-btn-menu-active .x-btn-right{ - background: url(../images/aero/toolbar/tb-btn-sprite.gif) no-repeat 0 -84px; -} - -.x-toolbar .x-btn-click .x-btn-center, .x-toolbar .x-btn-pressed .x-btn-center, .x-toolbar .x-btn-menu-active .x-btn-center{ - background: url(../images/aero/toolbar/tb-btn-sprite.gif) repeat-x 0 -105px; -} - -/*************** TABS 2 *****************/ -/** -* Tabs -*/ -.x-tab-panel-header, .x-tab-panel-footer { - background: #deecfd; - border: 1px solid #8db2e3; -} - -.x-tab-panel-header { - background: #deecfd; - border: 1px solid #8db2e3; - padding-bottom: 2px; -} - -.x-tab-panel-footer { - background: #deecfd; - border: 1px solid #8db2e3; - padding-top: 2px; -} - -.x-tab-strip-top{ - padding-top: 1px; - background: url(../images/aero/tabs/tab-strip-bg.gif) #cedff5 repeat-x bottom; - border-bottom: 1px solid #8db2e3; -} - -.x-tab-strip-bottom{ - padding-bottom: 1px; - background: url(../images/aero/tabs/tab-strip-btm-bg.gif) #cedff5 repeat-x top; - border-top: 1px solid #8db2e3; - border-bottom: 0 none; -} - -.x-tab-strip .x-tab-strip-text { - color: #15428b; - font: bold 11px tahoma,arial,verdana,sans-serif; -} - -.x-tab-strip .x-tab-strip-active .x-tab-text { - cursor: default; - color: #15428b; -} - -.x-tab-strip-top .x-tab-strip-active .x-tab-right { - background: url(../images/aero/tabs/tab-sprite.gif) no-repeat right 0; -} - -.x-tab-strip-top .x-tab-strip-active .x-tab-left { - background: url(../images/aero/tabs/tab-sprite.gif) no-repeat 0 -100px; -} - -.x-tab-strip-top .x-tab-right { - background: url(../images/aero/tabs/tab-sprite.gif) no-repeat right -50px; -} - -.x-tab-strip-top .x-tab-left { - background: url(../images/aero/tabs/tab-sprite.gif) no-repeat 0 -150px; -} - -.x-tab-strip-bottom .x-tab-right { - background: url(../images/aero/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom right; -} - -.x-tab-strip-bottom .x-tab-left { - background: url(../images/aero/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom left; -} - -.x-tab-strip-bottom .x-tab-strip-active .x-tab-right { - background: url(../images/aero/tabs/tab-btm-right-bg.gif) no-repeat bottom left; -} - -.x-tab-strip-bottom .x-tab-strip-active .x-tab-left { - background: url(../images/aero/tabs/tab-btm-left-bg.gif) no-repeat bottom right; -} - -.x-tab-panel-body-top { - border: 1px solid #8db2e3; - border-top: 0 none; -} - -.x-tab-panel-body-bottom { - border: 1px solid #8db2e3; - border-bottom: 0 none; -} diff --git a/lib/web/extjs/css/ytheme-gray.css b/lib/web/extjs/css/ytheme-gray.css deleted file mode 100644 index bc054ed51defca23284dcf015460a7477cc4e331..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/ytheme-gray.css +++ /dev/null @@ -1,438 +0,0 @@ -/* - * Ext JS Library 2.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -.ext-el-mask-msg { - border:1px solid #aaa; - background: #ddd url(../images/default/box/tb.gif) repeat-x 0 -16px; -} -.ext-el-mask-msg div { - border:1px solid #ccc; -} - -/* - Menu - */ -.x-menu { - border-color: #999 #999 #999 #999; - background-image:url(../images/gray/menu/menu.gif); -} -.x-menu-item-arrow{ - background-image:url(../images/gray/menu/menu-parent.gif); -} -.x-menu-item { - color:#222; -} -.x-menu-item-active { - background:#ddd; - border:1px solid #aaa; -} -.x-menu-sep { - background:#aaa; -} - -/* grid */ -.x-grid-header{ - background: #ebeadb url(../images/gray/grid/grid-hrow.gif) repeat-x; - overflow:hidden; - position:relative; - cursor:default; - width:100%; -} -.x-grid-hd-row{ - height:22px; -} -.x-grid-hd { - padding-right:1px; -} -.x-grid-hd-over .x-grid-hd-inner { - border-bottom: 1px solid #fcc247; -} -.x-grid-hd-over .x-grid-hd-text { - background: #faf9f4; - padding-bottom:1px; - border-bottom: 1px solid #f9a900; -} - -.x-grid-hd-text { - color:#000000; -} - -.x-grid-col { - border-right: 1px solid #f1efe2; - border-bottom: 1px solid #f1efe2; -} -.x-grid-row-alt{ - background:#fcfaf6; -} -.x-grid-row-over td{ - background:#f1f1f1; -} - - -.x-grid-locked .x-grid-body td { - background: #f0efe4; - border-right: 1px solid #D6D2C2; - border-bottom: 1px solid #D6D2C2 !important; -} - -.x-grid-locked .x-grid-header table{ - border-right:1px solid transparent; -} -.x-grid-locked .x-grid-body table{ - border-right:1px solid #c6c2b2; -} - -.x-grid-bottombar .x-toolbar{ - border-right:0 none; - border-bottom:0 none; - border-top:1px solid #f1efe2; -} - -.x-props-grid .x-grid-col-name{ - background-color: #f1efe2; -} - - - -.x-grid-locked td.x-grid-row-marker, .x-grid-locked .x-grid-row-selected td.x-grid-row-marker{ - background: #ebeadb url(../images/gray/grid/grid-hrow.gif) repeat-x 0 bottom !important; - vertical-align:middle !important; - color:black; - padding:0; - border-top:1px solid white; - border-bottom:none !important; - border-right:1px solid #d6d2c2 !important; - text-align:center; -} -.x-grid-locked td.x-grid-row-marker div, .x-grid-locked .x-grid-row-selected td.x-grid-row-marker div{ - padding:0 4px; - color:black !important; - text-align:center; -} - -/** -* Basic-Dialog -*/ -.x-dlg-proxy { - background-image: url(../images/gray/layout/gradient-bg.gif); - background-color:#EAE8D5; - border:1px solid #b3b6b0; -} -.x-dlg-shadow{ - background:#aaaaaa; -} -.x-dlg-proxy .tabset{ - background:url(../images/gray/layout/gradient-bg.gif); -} -.x-dlg .x-dlg-hd { - background: url(../images/gray/basic-dialog/hd-sprite.gif) repeat-x 0 -82px; - background-color:#333333; -} -.x-dlg .x-dlg-hd-left { - background: url(../images/gray/basic-dialog/hd-sprite.gif) no-repeat 0 -41px; -} -.x-dlg .x-dlg-hd-right { - background: url(../images/gray/basic-dialog/hd-sprite.gif) no-repeat right 0; -} -.x-dlg .x-dlg-dlg-body{ - background:#efefec; - border:1px solid #b3b6b0; - border-top:0 none; -} -.x-dlg .x-tabs-top .x-tabs-body{ - border:1px solid #b3b6b0; - border-top:0 none; -} -.x-dlg .x-tabs-bottom .x-tabs-body{ - border:1px solid #b3b6b0; - border-bottom:0 none; -} -.x-dlg .x-layout-container .x-tabs-body{ - border:0 none; -} -.x-dlg .x-dlg-close { - background-image:url(../images/gray/basic-dialog/close.gif); -} -.x-dlg .x-dlg-collapse { - background-image:url(../images/gray/basic-dialog/collapse.gif); -} -.x-dlg-collapsed .x-dlg-collapse { - background-image:url(../images/gray/basic-dialog/expand.gif); -} -.x-dlg div.x-resizable-handle-east{ - background-image:url(../images/gray/basic-dialog/e-handle.gif); - border:0 none; -} -.x-dlg div.x-resizable-handle-south{ - background-image:url(../images/gray/basic-dialog/s-handle.gif); - border:0 none; -} -.x-dlg div.x-resizable-handle-west{ - background-image:url(../images/gray/basic-dialog/e-handle.gif); - border:0 none; -} -.x-dlg div.x-resizable-handle-southeast{ - background-image:url(../images/gray/basic-dialog/se-handle.gif); - background-position: bottom right; - width:8px; - height:8px; - border:0; -} -.x-dlg div.x-resizable-handle-southwest{ - background-image:url(../images/gray/sizer/sw-handle-dark.gif); - background-position: top right; - margin-left:1px; - margin-bottom:1px; - border:0; -} -.x-dlg div.x-resizable-handle-north{ - background-image:url(../images/gray/s.gif); - border:0 none; -} - -/** -* Tabs -*/ -.x-tabs-wrap { - border-bottom:1px solid #aca899; -} -.x-tabs-strip .on .x-tabs-text { - cursor:default; - color:#333333; -} -.x-tabs-top .x-tabs-strip .on .x-tabs-right { - background: url(../images/gray/tabs/tab-sprite.gif) no-repeat right 0; -} -.x-tabs-top .x-tabs-strip .on .x-tabs-left { - background: url(../images/gray/tabs/tab-sprite.gif) no-repeat 0px -100px; -} -.x-tabs-top .x-tabs-strip .x-tabs-right { - background: url(../images/gray/tabs/tab-sprite.gif) no-repeat right -50px; -} -.x-tabs-top .x-tabs-strip .x-tabs-left { - background: url(../images/gray/tabs/tab-sprite.gif) no-repeat 0px -150px; -} -.x-tabs-strip .x-tabs-closable .close-icon{ - background-image:url(../images/gray/layout/tab-close.gif); -} -.x-tabs-strip .on .close-icon{ - background-image:url(../images/gray/layout/tab-close-on.gif); -} -.x-tabs-strip .x-tabs-closable .close-over{ - background-image:url(../images/gray/layout/tab-close-on.gif); -} -.x-tabs-body { - border:1px solid #aca899; - border-top:0 none; -} -.x-tabs-bottom .x-tabs-wrap { - border-bottom:0 none; - padding-top:0; - border-top:1px solid #aca899; -} -.x-tabs-bottom .x-tabs-strip .x-tabs-right { - background: url(../images/gray/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom left; -} -.x-tabs-bottom .x-tabs-strip .x-tabs-left { - background: url(../images/gray/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom right; -} -.x-tabs-bottom .x-tabs-strip .on .x-tabs-right { - background: url(../images/gray/tabs/tab-btm-right-bg.gif) no-repeat bottom left; -} -.x-tabs-bottom .x-tabs-strip .on .x-tabs-left { - background: url(../images/gray/tabs/tab-btm-left-bg.gif) no-repeat bottom right; -} - -.x-tabs-bottom .x-tabs-body { - border:1px solid #aca899; - border-bottom:0 none; -} - -.x-layout-container .x-layout-tabs-body{ - border:0 none; -} -/* QuickTips */ - -.x-tip .x-tip-top { - background-image: url(../images/gray/qtip/tip-sprite.gif); -} -.x-tip .x-tip-top-left { - background-image: url(../images/gray/qtip/tip-sprite.gif); -} -.x-tip .x-tip-top-right { - background-image: url(../images/gray/qtip/tip-sprite.gif); -} -.x-tip .x-tip-ft { - background-image: url(../images/gray/qtip/tip-sprite.gif); -} -.x-tip .x-tip-ft-left { - background-image: url(../images/gray/qtip/tip-sprite.gif); -} -.x-tip .x-tip-ft-right { - background-image: url(../images/gray/qtip/tip-sprite.gif); -} -.x-tip .x-tip-bd-left { - background-image: url(../images/gray/qtip/tip-sprite.gif); -} -.x-tip .x-tip-bd-right { - background-image: url(../images/gray/qtip/tip-sprite.gif); -} - -/* BorderLayout */ - -.x-layout-container{ - background-color:#f3f2e7; -} -.x-layout-collapsed{ - background-color:#f3f2e7; - border:1px solid #aca899; -} -.x-layout-collapsed-over{ - background-color:#fbfbef; -} -.x-layout-panel{ - border:1px solid #aca899; -} -.x-layout-nested-layout .x-layout-panel { - border:0 none; -} -.x-layout-split{ - background-color:#f3f2e7; -} -.x-layout-panel-hd{ - background-image: url(../images/gray/layout/panel-title-light-bg.gif); - border-bottom:1px solid #aca899; -} -.x-layout-tools-button-over{ - border:1px solid #aca899; -} -.x-layout-close{ - background-image:url(../images/gray/layout/panel-close.gif); -} -.x-layout-stick{ - background-image:url(../images/gray/layout/stick.gif); -} -.x-layout-collapse-west,.x-layout-expand-east{ - background-image:url(../images/gray/layout/collapse.gif); -} -.x-layout-expand-west,.x-layout-collapse-east{ - background-image:url(../images/gray/layout/expand.gif); -} -.x-layout-collapse-north,.x-layout-expand-south{ - background-image:url(../images/gray/layout/ns-collapse.gif); -} -.x-layout-expand-north,.x-layout-collapse-south{ - background-image:url(../images/gray/layout/ns-expand.gif); -} -.x-layout-split-h{ - background-image:url(../images/gray/sizer/e-handle-dark.gif); -} -.x-layout-split-v{ - background-image:url(../images/gray/sizer/s-handle-dark.gif); -} -.x-layout-panel .x-tabs-wrap{ - background:url(../images/gray/layout/gradient-bg.gif); -} -.x-layout-nested-layout .x-layout-panel-north { - border-bottom:1px solid #aca899; -} -.x-layout-nested-layout .x-layout-panel-south { - border-top:1px solid #aca899; -} -.x-layout-nested-layout .x-layout-panel-east { - border-left:1px solid #aca899; -} -.x-layout-nested-layout .x-layout-panel-west { - border-right:1px solid #aca899; -} -.x-layout-panel-dragover { - border: 2px solid #aca899; -} -.x-layout-panel-proxy { - background-image: url(../images/gray/layout/gradient-bg.gif); - background-color:#f3f2e7; - border:1px dashed #aca899; -} -/** Resizable */ - -.x-resizable-over .x-resizable-handle-east, .x-resizable-pinned .x-resizable-handle-east{ - background:url(../images/gray/sizer/e-handle.gif); - background-position: left; -} -.x-resizable-over .x-resizable-handle-east, .x-resizable-pinned .x-resizable-handle-west{ - background:url(../images/gray/sizer/e-handle.gif); - background-position: left; -} -.x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-south{ - background:url(../images/gray/sizer/s-handle.gif); - background-position: top; -} -.x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-north{ - background:url(../images/gray/sizer/s-handle.gif); - background-position: top; -} -.x-resizable-over .x-resizable-handle-southeast, .x-resizable-pinned .x-resizable-handle-southeast{ - background:url(../images/gray/sizer/se-handle.gif); - background-position: top left; -} -.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{ - background:url(../images/gray/sizer/nw-handle.gif); - background-position:bottom right; -} -.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{ - background:url(../images/gray/sizer/ne-handle.gif); - background-position: bottom left; -} -.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{ - background:url(../images/gray/sizer/sw-handle.gif); - background-position: top right; -} -.x-resizable-proxy{ - border: 1px dashed #615e55; -} - -/** Toolbar */ -.x-toolbar{ - border:0 none; - background: #efefe3 url(../images/gray/toolbar/gray-bg.gif) repeat-x; - padding:3px; -} -.x-toolbar .x-btn-over .x-btn-left, .x-toolbar .x-btn-pressed .x-btn-left, .x-toolbar .x-btn-menu-active .x-btn-left{ - background:url(../images/gray/toolbar/tb-btn-sprite.gif) no-repeat 0 0; -} -.x-toolbar .x-btn-over .x-btn-right, .x-toolbar .x-btn-pressed .x-btn-right, .x-toolbar .x-btn-menu-active .x-btn-right{ - background:url(../images/gray/toolbar/tb-btn-sprite.gif) no-repeat 0 -21px; -} -.x-toolbar .x-btn-over .x-btn-center, .x-toolbar .x-btn-pressed .x-btn-center, .x-toolbar .x-btn-menu-active .x-btn-center{ - background:url(../images/gray/toolbar/tb-btn-sprite.gif) repeat-x 0 -42px; -} -.x-toolbar .x-btn-over .x-btn-menu-arrow-wrap .x-btn-center button { - background-position: 0 -47px; -} -.x-paging-info { - color:#222222; -} - -/* combo box */ -.x-combo-list { - border:1px solid #999; - background:#dddddd; -} -.x-combo-list-hd { - color:#222; - background-image: url(../images/gray/layout/panel-title-light-bg.gif); - border-bottom:1px solid #aca899; -} -.x-resizable-pinned .x-combo-list-inner { - border-bottom:1px solid #aaa; -} -.x-combo-list .x-combo-selected{ - background:#ddd !important; - border:1px solid #aaa; -} \ No newline at end of file diff --git a/lib/web/extjs/css/ytheme-vista.css b/lib/web/extjs/css/ytheme-vista.css deleted file mode 100644 index 0055ff50fb5650f6f34275ac45c0b2ec049ce6bb..0000000000000000000000000000000000000000 --- a/lib/web/extjs/css/ytheme-vista.css +++ /dev/null @@ -1,511 +0,0 @@ -/* - * Ext JS Library 2.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.ext-el-mask-msg { - border:1px solid #aaa; - background: #ddd url(../images/default/box/tb.gif) repeat-x 0 -16px; -} -.ext-el-mask-msg div { - border:1px solid #ccc; -} -/* - Menu - */ -.x-menu { - border-color: #999 #999 #999 #999; - background-image:url(../images/gray/menu/menu.gif); -} -.x-menu-item-arrow{ - background-image:url(../images/gray/menu/menu-parent.gif); -} -.x-menu-item { - color:#222; -} -.x-menu-item-active { - background:#ddd; - border:1px solid #aaa; -} -.x-menu-sep { - background:#aaa; -} -/** -* Tabs -*/ -.x-tabs-wrap { - background:#4f4f4f; - border-bottom:1px solid #b3b6b0; -} -.x-tabs-strip .x-tabs-text { - color:white; - font-weight:normal; -} -.x-tabs-strip .on .x-tabs-text { - cursor:default; - color:#333333; -} -.x-tabs-top .x-tabs-strip a.x-tabs-right { - background:transparent url(../images/vista/tabs/tab-sprite.gif) no-repeat right -50px; -} -.x-tabs-top .x-tabs-strip a .x-tabs-left{ - background:transparent url(../images/vista/tabs/tab-sprite.gif) no-repeat 0px -150px; -} -.x-tabs-top .x-tabs-strip .on .x-tabs-right { - background: url(../images/vista/tabs/tab-sprite.gif) no-repeat right 0; -} -.x-tabs-top .x-tabs-strip .on .x-tabs-left{ - background: url(../images/vista/tabs/tab-sprite.gif) no-repeat 0px -100px; -} -.x-tabs-strip .x-tabs-closable .close-icon{ - background-image:url(../images/vista/layout/tab-close.gif); -} -.x-tabs-strip .on .close-icon{ - background-image:url(../images/vista/layout/tab-close-on.gif); -} -.x-tabs-strip .x-tabs-closable .close-over{ - background-image:url(../images/vista/layout/tab-close-on.gif); -} -.x-tabs-body { - border:1px solid #b3b6b0; - border-top:0 none; -} - -.x-tabs-bottom .x-tabs-strip { - background:#4f4f4f; -} -.x-tabs-bottom .x-tabs-strip a.x-tabs-right { - background:transparent url(../images/vista/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom right; -} -.x-tabs-bottom .x-tabs-strip a .x-tabs-left{ - background:transparent url(../images/vista/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom left; -} -.x-tabs-bottom .x-tabs-wrap { - border-bottom:0 none; - padding-top:0; - border-top:1px solid #b3b6b0; -} -.x-tabs-bottom .x-tabs-strip .on .x-tabs-right { - background: url(../images/vista/tabs/tab-btm-right-bg.gif) no-repeat bottom left; -} -.x-tabs-bottom .x-tabs-strip .on .x-tabs-left { - background: url(../images/vista/tabs/tab-btm-left-bg.gif) no-repeat bottom right; -} - -.x-tabs-bottom .x-tabs-body { - border:1px solid #b3b6b0; - border-bottom:0 none; -} -/** -* Basic-Dialog -*/ -.x-dlg-proxy { - background:#d3d6d0; - border:2px solid #b3b6b0; -} -.x-dlg-shadow{ - background:#cccccc; - opacity:.3; - -moz-opacity:.3; - filter: alpha(opacity=30); -} -.x-dlg .x-dlg-hd { - background: url(../images/vista/basic-dialog/hd-sprite.gif) repeat-x 0 -82px; - background-color:#333333; - zoom:1; -} -.x-dlg .x-dlg-hd-left { - opacity:.95;-moz-opacity:.95;filter:alpha(opacity=90); - background: url(../images/vista/basic-dialog/hd-sprite.gif) no-repeat 0 -41px; - zoom:1; -} -.x-dlg .x-dlg-hd-right { - background: url(../images/vista/basic-dialog/hd-sprite.gif) no-repeat right 0; - zoom:1; -} -.x-dlg .x-dlg-dlg-body{ - background:#fff; - border:0 none; - border-top:0 none; - padding:0 0px 0px; - position:absolute; - top:24px;left:0; - z-index:1; -} -.x-dlg-auto-tabs .x-dlg-dlg-body{ - background:transparent; -} -.x-dlg-auto-tabs .x-tabs-top .x-tabs-wrap{ - background:transparent; -} -.x-dlg .x-dlg-ft{ - border-top:1px solid #b3b6b0; - background:#F0F0F0; - padding-bottom:8px; -} -.x-dlg .x-dlg-bg{ - opacity:.90;-moz-opacity:.90;filter:alpha(opacity=85); - zoom:1; -} -.x-dlg .x-dlg-bg-left,.x-dlg .x-dlg-bg-center,.x-dlg .x-dlg-bg-right{ -} -.x-dlg .x-dlg-bg-center { - padding: 0px 4px 4px 4px; - background:transparent url(../images/vista/basic-dialog/bg-center.gif) repeat-x bottom; - zoom:1; -} -.x-dlg .x-dlg-bg-left{ - padding-left:4px; - background:transparent url(../images/vista/basic-dialog/bg-left.gif) no-repeat bottom left; - zoom:1; -} -.x-dlg .x-dlg-bg-right{ - padding-right:4px; - background:transparent url(../images/vista/basic-dialog/bg-right.gif) no-repeat bottom right; - zoom:1; -} -.x-dlg .x-tabs-top .x-tabs-body{ - border:0 none; -} -.x-dlg .x-tabs-bottom .x-tabs-body{ - border:1px solid #b3b6b0; - border-bottom:0 none; -} -.x-dlg .x-layout-container .x-tabs-body{ - border:0 none; -} -.x-dlg .x-dlg-close { - background-image:url(../images/vista/basic-dialog/close.gif); -} -.x-dlg .x-dlg-collapse { - background-image:url(../images/vista/basic-dialog/collapse.gif); -} -.x-dlg-collapsed .x-dlg-collapse { - background-image:url(../images/vista/basic-dialog/expand.gif); -} -.x-dlg div.x-resizable-handle-east{ - background-image:url(../images/vista/s.gif); - border:0 none; -} -.x-dlg div.x-resizable-handle-south{ - background-image:url(../images/vista/s.gif); - border:0 none; -} -.x-dlg div.x-resizable-handle-west{ - background-image:url(../images/vista/s.gif); - border:0 none; -} -.x-dlg div.x-resizable-handle-southeast{ - background-image:url(../images/vista/s.gif); - background-position: bottom right; - width:8px; - height:8px; - border:0; -} -.x-dlg div.x-resizable-handle-southwest{ - background-image:url(../images/vista/s.gif); - background-position: top right; - margin-left:1px; - margin-bottom:1px; - border:0; -} -.x-dlg div.x-resizable-handle-north{ - background-image:url(../images/vista/s.gif); - border:0 none; -} - -/* QuickTips */ - -.x-tip .x-tip-top { - background-image: url(../images/vista/qtip/tip-sprite.gif); -} -.x-tip .x-tip-top-left { - background-image: url(../images/vista/qtip/tip-sprite.gif); -} -.x-tip .x-tip-top-right { - background-image: url(../images/vista/qtip/tip-sprite.gif); -} -.x-tip .x-tip-ft { - background-image: url(../images/vista/qtip/tip-sprite.gif); -} -.x-tip .x-tip-ft-left { - background-image: url(../images/vista/qtip/tip-sprite.gif); -} -.x-tip .x-tip-ft-right { - background-image: url(../images/vista/qtip/tip-sprite.gif); -} -.x-tip .x-tip-bd-left { - background-image: url(../images/vista/qtip/tip-sprite.gif); -} -.x-tip .x-tip-bd-right { - background-image: url(../images/vista/qtip/tip-sprite.gif); -} - -.x-tip .x-tip-bd-inner { - padding:2px; -} - -/* BorderLayout */ -.x-layout-container{ - background:#4f4f4f; -} -.x-layout-collapsed{ - background-color:#9f9f9f; - border:1px solid #4c535c; -} -.x-layout-collapsed-over{ - background-color:#bfbfbf; -} -.x-layout-panel{ - border:1px solid #4c535c; -} -.x-layout-nested-layout .x-layout-panel { - border:0 none; -} -.x-layout-split{ - background-color:#f3f2e7; -} -.x-layout-panel-hd{ - background-image: url(../images/vista/layout/panel-title-bg.gif); - border-bottom:1px solid #b5bac1; - color:white; -} -.x-layout-panel-hd-text{ - color:white; -} -.x-layout-tools-button-over{ - border:1px solid #4c535c; - background:#9f9f9f url(../images/vista/layout/panel-title-bg.gif) repeat-x; -} -.x-layout-close{ - background-image:url(../images/vista/layout/tab-close.gif); -} - -.x-layout-stick{ - background-image:url(../images/vista/layout/stick.gif); -} -.x-layout-collapse-west,.x-layout-expand-east{ - background-image:url(../images/vista/layout/collapse.gif); -} -.x-layout-expand-west,.x-layout-collapse-east{ - background-image:url(../images/vista/layout/expand.gif); -} -.x-layout-collapse-north,.x-layout-expand-south{ - background-image:url(../images/vista/layout/ns-collapse.gif); -} -.x-layout-expand-north,.x-layout-collapse-south{ - background-image:url(../images/vista/layout/ns-expand.gif); -} -.x-layout-split-h{ - background:#9f9f9f; -} -.x-layout-split-v{ - background:#9f9f9f; -} -.x-layout-panel .x-tabs-wrap{ - background:#4f4f4f; -} -.x-layout-nested-layout .x-layout-panel-north { - border-bottom:1px solid #4c535c; -} -.x-layout-nested-layout .x-layout-panel-south { - border-top:1px solid #4c535c; -} -.x-layout-nested-layout .x-layout-panel-east { - border-left:1px solid #4c535c; -} -.x-layout-nested-layout .x-layout-panel-west { - border-right:1px solid #4c535c; -} -.x-layout-panel-dragover { - border: 2px solid #4c535c; -} -.x-layout-panel-proxy { - background-image: url(../images/vista/layout/gradient-bg.gif); - background-color:#f3f2e7; - border:1px dashed #4c535c; -} - -.x-layout-container .x-layout-tabs-body{ - border:0 none; -} -/** Resizable */ - -.x-resizable-over .x-resizable-handle-east, .x-resizable-pinned .x-resizable-handle-east{ - background:url(../images/vista/sizer/e-handle.gif); - background-position: left; -} -.x-resizable-over .x-resizable-handle-east, .x-resizable-pinned .x-resizable-handle-west{ - background:url(../images/vista/sizer/e-handle.gif); - background-position: left; -} -.x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-south{ - background:url(../images/vista/sizer/s-handle.gif); - background-position: top; -} -.x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-north{ - background:url(../images/vista/sizer/s-handle.gif); - background-position: top; -} -.x-resizable-over .x-resizable-handle-southeast, .x-resizable-pinned .x-resizable-handle-southeast{ - background:url(../images/vista/sizer/se-handle.gif); - background-position: top left; -} -.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{ - background:url(../images/vista/sizer/nw-handle.gif); - background-position:bottom right; -} -.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{ - background:url(../images/vista/sizer/ne-handle.gif); - background-position: bottom left; -} -.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{ - background:url(../images/vista/sizer/sw-handle.gif); - background-position: top right; -} -.x-resizable-proxy{ - border: 1px dashed #615e55; -} - -/** Toolbar */ -.x-toolbar{ - border:0 none; - background: #efefe3 url(../images/vista/toolbar/gray-bg.gif) repeat-x; - padding:3px; -} -.x-toolbar .ytb-button-over{ - border:1px solid transparent; - border-bottom:1px solid #bbbbbb; - border-top:1px solid #eeeeee; - background:#9f9f9f url(../images/vista/grid/grid-vista-hd.gif) repeat-x; -} - -.x-paging-info { - color:#000; -} -/* grid */ -.x-grid-topbar .x-toolbar{ - border:0; - border-bottom:1px solid #555; -} -.x-grid-bottombar .x-toolbar{ - border:0; - border-top:1px solid #555; -} -.x-grid-locked .x-grid-body td { - background: #fafafa; - border-right: 1px solid #e1e1e1; - border-bottom: 1px solid #e1e1e1 !important; -} -.x-grid-locked .x-grid-body td .x-grid-cell-inner { - border-top:0 none; -} -.x-grid-locked .x-grid-row-alt td{ - background: #f1f1f1; -} -.x-grid-locked .x-grid-row-selected td{ - color: #fff !important; - background-color: #316ac5 !important; -} -.x-grid-hd{ - border-bottom:0; - background:none; -} -.x-grid-hd-row{ - height:auto; -} -.x-grid-split { - background-image: url(../images/vista/grid/grid-split.gif); -} -.x-grid-header{ - background: url(../images/vista/grid/grid-vista-hd.gif); - border:0 none; - border-bottom:1px solid #555; -} -.x-grid-row-alt{ - background-color: #f5f5f5; -} -.x-grid-row-over td{ - background-color:#eeeeee; -} -.x-grid-col { - border-right: 1px solid #eee; - border-bottom: 1px solid #eee; -} -.x-grid-header .x-grid-hd-inner { - padding-bottom: 1px; -} -.x-grid-header .x-grid-hd-text { - padding-bottom: 3px; - color:#333333; -} -.x-grid-hd-over .x-grid-hd-inner { - border-bottom: 1px solid #555; - padding-bottom: 0; -} -.x-grid-hd-over .x-grid-hd-text { - background-color: #fafafa; - border-bottom: 1px solid #555; - padding-bottom: 2px; -} -.x-grid-header .sort-asc .x-grid-hd-inner, .x-grid-header .sort-desc .x-grid-hd-inner { - border-bottom: 1px solid #555; - padding-bottom: 0; -} -.x-grid-header .sort-asc .x-grid-hd-text, .x-grid-header .sort-desc .x-grid-hd-text { - border-bottom: 1px solid #3b5a82; - padding-bottom: 2px; -} -.x-dd-drag-proxy .x-grid-hd-inner{ - background: url(../images/vista/grid/grid-vista-hd.gif) repeat-x; - height:22px; - width:120px; -} -.x-props-grid .x-grid-col-name{ - background-color: #eee; -} -/* toolbar */ -.x-toolbar .ytb-sep{ - background-image: url(../images/vista/grid/grid-split.gif); -} - -.x-toolbar .x-btn-over .x-btn-left{ - background:url(../images/vista/toolbar/tb-btn-sprite.gif) no-repeat 0 0px; -} -.x-toolbar .x-btn-over .x-btn-right{ - background:url(../images/vista/toolbar/tb-btn-sprite.gif) no-repeat 0 -21px; -} -.x-toolbar .x-btn-over .x-btn-center{ - background:url(../images/vista/toolbar/tb-btn-sprite.gif) repeat-x 0 -42px; -} - -.x-toolbar .x-btn-click .x-btn-left, .x-toolbar .x-btn-pressed .x-btn-left, .x-toolbar .x-btn-menu-active .x-btn-left{ - background:url(../images/vista/toolbar/tb-btn-sprite.gif) no-repeat 0 -63px; -} -.x-toolbar .x-btn-click .x-btn-right, .x-toolbar .x-btn-pressed .x-btn-right, .x-toolbar .x-btn-menu-active .x-btn-right{ - background:url(../images/vista/toolbar/tb-btn-sprite.gif) no-repeat 0 -84px; -} -.x-toolbar .x-btn-click .x-btn-center, .x-toolbar .x-btn-pressed .x-btn-center, .x-toolbar .x-btn-menu-active .x-btn-center{ - background:url(../images/vista/toolbar/tb-btn-sprite.gif) repeat-x 0 -105px; -} - -/* combo box */ -.x-combo-list { - border:1px solid #999; - background:#dddddd; -} -.x-combo-list-hd { - background-image: url(../images/vista/layout/panel-title-bg.gif); - border-bottom:1px solid #b5bac1; - color:white; -} -.x-resizable-pinned .x-combo-list-inner { - border-bottom:1px solid #aaa; -} -.x-combo-list .x-combo-selected{ - background:#ddd !important; - border:1px solid #aaa; -} \ No newline at end of file diff --git a/lib/web/extjs/defaults.js b/lib/web/extjs/defaults.js new file mode 100644 index 0000000000000000000000000000000000000000..5203e1a6fe27a74342b9d23a2faf56f39263654a --- /dev/null +++ b/lib/web/extjs/defaults.js @@ -0,0 +1,4 @@ +define(['extjs/ext-tree'], function () { + Ext.UpdateManager.defaults.loadScripts = false; + Ext.UpdateManager.defaults.disableCaching = true; +}); \ No newline at end of file diff --git a/lib/web/extjs/ext-all-debug.js b/lib/web/extjs/ext-all-debug.js deleted file mode 100644 index df06b46f615a543710f210cdf96ed9e03081d3cc..0000000000000000000000000000000000000000 --- a/lib/web/extjs/ext-all-debug.js +++ /dev/null @@ -1,30066 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.DomHelper = function(){ - var tempTableEl = null; - var emptyTags = /^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i; - - // build as innerHTML where available - - var createHtml = function(o){ - if(typeof o == 'string'){ - return o; - } - var b = ""; - if(!o.tag){ - o.tag = "div"; - } - b += "<" + o.tag; - for(var attr in o){ - if(attr == "tag" || attr == "children" || attr == "cn" || attr == "html" || typeof o[attr] == "function") continue; - if(attr == "style"){ - var s = o["style"]; - if(typeof s == "function"){ - s = s.call(); - } - if(typeof s == "string"){ - b += ' style="' + s + '"'; - }else if(typeof s == "object"){ - b += ' style="'; - for(var key in s){ - if(typeof s[key] != "function"){ - b += key + ":" + s[key] + ";"; - } - } - b += '"'; - } - }else{ - if(attr == "cls"){ - b += ' class="' + o["cls"] + '"'; - }else if(attr == "htmlFor"){ - b += ' for="' + o["htmlFor"] + '"'; - }else{ - b += " " + attr + '="' + o[attr] + '"'; - } - } - } - if(emptyTags.test(o.tag)){ - b += "/>"; - }else{ - b += ">"; - var cn = o.children || o.cn; - if(cn){ - if(cn instanceof Array){ - for(var i = 0, len = cn.length; i < len; i++) { - b += createHtml(cn[i], b); - } - }else{ - b += createHtml(cn, b); - } - } - if(o.html){ - b += o.html; - } - b += "</" + o.tag + ">"; - } - return b; - }; - - // build as dom - - var createDom = function(o, parentNode){ - var el = document.createElement(o.tag); - var useSet = el.setAttribute ? true : false; // In IE some elements don't have setAttribute - for(var attr in o){ - if(attr == "tag" || attr == "children" || attr == "cn" || attr == "html" || attr == "style" || typeof o[attr] == "function") continue; - if(attr=="cls"){ - el.className = o["cls"]; - }else{ - if(useSet) el.setAttribute(attr, o[attr]); - else el[attr] = o[attr]; - } - } - Ext.DomHelper.applyStyles(el, o.style); - var cn = o.children || o.cn; - if(cn){ - if(cn instanceof Array){ - for(var i = 0, len = cn.length; i < len; i++) { - createDom(cn[i], el); - } - }else{ - createDom(cn, el); - } - } - if(o.html){ - el.innerHTML = o.html; - } - if(parentNode){ - parentNode.appendChild(el); - } - return el; - }; - - var ieTable = function(depth, s, h, e){ - tempTableEl.innerHTML = [s, h, e].join(''); - var i = -1, el = tempTableEl; - while(++i < depth){ - el = el.firstChild; - } - return el; - }; - - // kill repeat to save bytes - var ts = '<table>', - te = '</table>', - tbs = ts+'<tbody>', - tbe = '</tbody>'+te, - trs = tbs + '<tr>', - tre = '</tr>'+tbe; - - - var insertIntoTable = function(tag, where, el, html){ - if(!tempTableEl){ - tempTableEl = document.createElement('div'); - } - var node; - var before = null; - if(tag == 'td'){ - if(where == 'afterbegin' || where == 'beforeend'){ // INTO a TD - return; - } - if(where == 'beforebegin'){ - before = el; - el = el.parentNode; - } else{ - before = el.nextSibling; - el = el.parentNode; - } - node = ieTable(4, trs, html, tre); - } - else if(tag == 'tr'){ - if(where == 'beforebegin'){ - before = el; - el = el.parentNode; - node = ieTable(3, tbs, html, tbe); - } else if(where == 'afterend'){ - before = el.nextSibling; - el = el.parentNode; - node = ieTable(3, tbs, html, tbe); - } else{ // INTO a TR - if(where == 'afterbegin'){ - before = el.firstChild; - } - node = ieTable(4, trs, html, tre); - } - } else if(tag == 'tbody'){ - if(where == 'beforebegin'){ - before = el; - el = el.parentNode; - node = ieTable(2, ts, html, te); - } else if(where == 'afterend'){ - before = el.nextSibling; - el = el.parentNode; - node = ieTable(2, ts, html, te); - } else{ - if(where == 'afterbegin'){ - before = el.firstChild; - } - node = ieTable(3, tbs, html, tbe); - } - } else{ // TABLE - if(where == 'beforebegin' || where == 'afterend'){ // OUTSIDE the table - return; - } - if(where == 'afterbegin'){ - before = el.firstChild; - } - node = ieTable(2, ts, html, te); - } - el.insertBefore(node, before); - return node; - }; - - return { - - useDom : false, - - - markup : function(o){ - return createHtml(o); - }, - - - applyStyles : function(el, styles){ - if(styles){ - el = Ext.fly(el); - if(typeof styles == "string"){ - var re = /\s?([a-z\-]*)\:\s?([^;]*);?/gi; - var matches; - while ((matches = re.exec(styles)) != null){ - el.setStyle(matches[1], matches[2]); - } - }else if (typeof styles == "object"){ - for (var style in styles){ - el.setStyle(style, styles[style]); - } - }else if (typeof styles == "function"){ - Ext.DomHelper.applyStyles(el, styles.call()); - } - } - }, - - - insertHtml : function(where, el, html){ - where = where.toLowerCase(); - if(el.insertAdjacentHTML){ - var tag = el.tagName.toLowerCase(); - if(tag == "table" || tag == "tbody" || tag == "tr" || tag == 'td'){ - var rs; - if(rs = insertIntoTable(tag, where, el, html)){ - return rs; - } - } - switch(where){ - case "beforebegin": - el.insertAdjacentHTML(where, html); - return el.previousSibling; - case "afterbegin": - el.insertAdjacentHTML(where, html); - return el.firstChild; - case "beforeend": - el.insertAdjacentHTML(where, html); - return el.lastChild; - case "afterend": - el.insertAdjacentHTML(where, html); - return el.nextSibling; - } - throw 'Illegal insertion point -> "' + where + '"'; - } - var range = el.ownerDocument.createRange(); - var frag; - switch(where){ - case "beforebegin": - range.setStartBefore(el); - frag = range.createContextualFragment(html); - el.parentNode.insertBefore(frag, el); - return el.previousSibling; - case "afterbegin": - if(el.firstChild){ - range.setStartBefore(el.firstChild); - frag = range.createContextualFragment(html); - el.insertBefore(frag, el.firstChild); - return el.firstChild; - }else{ - el.innerHTML = html; - return el.firstChild; - } - case "beforeend": - if(el.lastChild){ - range.setStartAfter(el.lastChild); - frag = range.createContextualFragment(html); - el.appendChild(frag); - return el.lastChild; - }else{ - el.innerHTML = html; - return el.lastChild; - } - case "afterend": - range.setStartAfter(el); - frag = range.createContextualFragment(html); - el.parentNode.insertBefore(frag, el.nextSibling); - return el.nextSibling; - } - throw 'Illegal insertion point -> "' + where + '"'; - }, - - - insertBefore : function(el, o, returnElement){ - return this.doInsert(el, o, returnElement, "beforeBegin"); - }, - - - insertAfter : function(el, o, returnElement){ - return this.doInsert(el, o, returnElement, "afterEnd", "nextSibling"); - }, - - - insertFirst : function(el, o, returnElement){ - return this.doInsert(el, o, returnElement, "afterBegin"); - }, - - // private - doInsert : function(el, o, returnElement, pos, sibling){ - el = Ext.getDom(el); - var newNode; - if(this.useDom){ - newNode = createDom(o, null); - el.parentNode.insertBefore(newNode, sibling ? el[sibling] : el); - }else{ - var html = createHtml(o); - newNode = this.insertHtml(pos, el, html); - } - return returnElement ? Ext.get(newNode, true) : newNode; - }, - - - append : function(el, o, returnElement){ - el = Ext.getDom(el); - var newNode; - if(this.useDom){ - newNode = createDom(o, null); - el.appendChild(newNode); - }else{ - var html = createHtml(o); - newNode = this.insertHtml("beforeEnd", el, html); - } - return returnElement ? Ext.get(newNode, true) : newNode; - }, - - - overwrite : function(el, o, returnElement){ - el = Ext.getDom(el); - el.innerHTML = createHtml(o); - return returnElement ? Ext.get(el.firstChild, true) : el.firstChild; - }, - - - createTemplate : function(o){ - var html = createHtml(o); - return new Ext.Template(html); - } - }; -}(); - - -Ext.Template = function(html){ - if(html instanceof Array){ - html = html.join(""); - }else if(arguments.length > 1){ - html = Array.prototype.join.call(arguments, ""); - } - - this.html = html; - -}; -Ext.Template.prototype = { - - applyTemplate : function(values){ - if(this.compiled){ - return this.compiled(values); - } - var useF = this.disableFormats !== true; - var fm = Ext.util.Format, tpl = this; - var fn = function(m, name, format, args){ - if(format && useF){ - if(format.substr(0, 5) == "this."){ - return tpl.call(format.substr(5), values[name], values); - }else{ - if(args){ - // quoted values are required for strings in compiled templates, - // but for non compiled we need to strip them - // quoted reversed for jsmin - var re = /^\s*['"](.*)["']\s*$/; - args = args.split(','); - for(var i = 0, len = args.length; i < len; i++){ - args[i] = args[i].replace(re, "$1"); - } - args = [values[name]].concat(args); - }else{ - args = [values[name]]; - } - return fm[format].apply(fm, args); - } - }else{ - return values[name] !== undefined ? values[name] : ""; - } - }; - return this.html.replace(this.re, fn); - }, - - - set : function(html, compile){ - this.html = html; - this.compiled = null; - if(compile){ - this.compile(); - } - return this; - }, - - - disableFormats : false, - - - re : /\{([\w-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g, - - - compile : function(){ - var fm = Ext.util.Format; - var useF = this.disableFormats !== true; - var sep = Ext.isGecko ? "+" : ","; - var fn = function(m, name, format, args){ - if(format && useF){ - args = args ? ',' + args : ""; - if(format.substr(0, 5) != "this."){ - format = "fm." + format + '('; - }else{ - format = 'this.call("'+ format.substr(5) + '", '; - args = ", values"; - } - }else{ - args= ''; format = "(values['" + name + "'] == undefined ? '' : "; - } - return "'"+ sep + format + "values['" + name + "']" + args + ")"+sep+"'"; - }; - var body; - // branched to use + in gecko and [].join() in others - if(Ext.isGecko){ - body = "this.compiled = function(values){ return '" + - this.html.replace(/(\r\n|\n)/g, '\\n').replace(/'/g, "\\'").replace(this.re, fn) + - "';};"; - }else{ - body = ["this.compiled = function(values){ return ['"]; - body.push(this.html.replace(/(\r\n|\n)/g, '\\n').replace("'", "\\'").replace(this.re, fn)); - body.push("'].join('');};"); - body = body.join(''); - } - eval(body); - return this; - }, - - // private function used to call members - call : function(fnName, value, allValues){ - return this[fnName](value, allValues); - }, - - - insertFirst: function(el, values, returnElement){ - return this.doInsert('afterBegin', el, values, returnElement); - }, - - - insertBefore: function(el, values, returnElement){ - return this.doInsert('beforeBegin', el, values, returnElement); - }, - - - insertAfter : function(el, values, returnElement){ - return this.doInsert('afterEnd', el, values, returnElement); - }, - - - append : function(el, values, returnElement){ - return this.doInsert('beforeEnd', el, values, returnElement); - }, - - doInsert : function(where, el, values, returnEl){ - el = Ext.getDom(el); - var newNode = Ext.DomHelper.insertHtml(where, el, this.applyTemplate(values)); - return returnEl ? Ext.get(newNode, true) : newNode; - }, - - - overwrite : function(el, values, returnElement){ - el = Ext.getDom(el); - el.innerHTML = this.applyTemplate(values); - return returnElement ? Ext.get(el.firstChild, true) : el.firstChild; - } -}; - -Ext.Template.prototype.apply = Ext.Template.prototype.applyTemplate; - -// backwards compat -Ext.DomHelper.Template = Ext.Template; - - -Ext.Template.from = function(el){ - el = Ext.getDom(el); - return new Ext.Template(el.value || el.innerHTML); -}; - - -Ext.MasterTemplate = function(){ - Ext.MasterTemplate.superclass.constructor.apply(this, arguments); - this.originalHtml = this.html; - var st = {}; - var m, re = this.subTemplateRe; - re.lastIndex = 0; - var subIndex = 0; - while(m = re.exec(this.html)){ - var name = m[1], content = m[2]; - st[subIndex] = { - name: name, - index: subIndex, - buffer: [], - tpl : new Ext.Template(content) - }; - if(name){ - st[name] = st[subIndex]; - } - st[subIndex].tpl.compile(); - st[subIndex].tpl.call = this.call.createDelegate(this); - subIndex++; - } - this.subCount = subIndex; - this.subs = st; -}; -Ext.extend(Ext.MasterTemplate, Ext.Template, { - - subTemplateRe : /<tpl(?:\sname="([\w-]+)")?>((?:.|\n)*?)<\/tpl>/gi, - - - add : function(name, values){ - if(arguments.length == 1){ - values = arguments[0]; - name = 0; - } - var s = this.subs[name]; - s.buffer[s.buffer.length] = s.tpl.apply(values); - return this; - }, - - - fill : function(name, values, reset){ - var a = arguments; - if(a.length == 1 || (a.length == 2 && typeof a[1] == "boolean")){ - values = a[0]; - name = 0; - reset = a[1]; - } - if(reset){ - this.reset(); - } - for(var i = 0, len = values.length; i < len; i++){ - this.add(name, values[i]); - } - return this; - }, - - - reset : function(){ - var s = this.subs; - for(var i = 0; i < this.subCount; i++){ - s[i].buffer = []; - } - return this; - }, - - applyTemplate : function(values){ - var s = this.subs; - var replaceIndex = -1; - this.html = this.originalHtml.replace(this.subTemplateRe, function(m, name){ - return s[++replaceIndex].buffer.join(""); - }); - return Ext.MasterTemplate.superclass.applyTemplate.call(this, values); - }, - - apply : function(){ - return this.applyTemplate.apply(this, arguments); - }, - - compile : function(){return this;} -}); - - -Ext.MasterTemplate.prototype.addAll = Ext.MasterTemplate.prototype.fill; - -Ext.MasterTemplate.from = function(el){ - el = Ext.getDom(el); - return new Ext.MasterTemplate(el.value || el.innerHTML); -}; - - -Ext.DomQuery = function(){ - var cache = {}, simpleCache = {}, valueCache = {}; - var nonSpace = /\S/; - var trimRe = /^\s+|\s+$/g; - var tplRe = /\{(\d+)\}/g; - var modeRe = /^(\s?[\/>]\s?|\s|$)/; - var tagTokenRe = /^(#)?([\w-\*]+)/; - - function child(p, index){ - var i = 0; - var n = p.firstChild; - while(n){ - if(n.nodeType == 1){ - if(++i == index){ - return n; - } - } - n = n.nextSibling; - } - return null; - }; - - function next(n){ - while((n = n.nextSibling) && n.nodeType != 1); - return n; - }; - - function prev(n){ - while((n = n.previousSibling) && n.nodeType != 1); - return n; - }; - - function clean(d){ - var n = d.firstChild, ni = -1; - while(n){ - var nx = n.nextSibling; - if(n.nodeType == 3 && !nonSpace.test(n.nodeValue)){ - d.removeChild(n); - }else{ - n.nodeIndex = ++ni; - } - n = nx; - } - return this; - }; - - function byClassName(c, a, v, re, cn){ - if(!v){ - return c; - } - var r = []; - for(var i = 0, ci; ci = c[i]; i++){ - cn = ci.className; - if(cn && (' '+cn+' ').indexOf(v) != -1){ - r[r.length] = ci; - } - } - return r; - }; - - function attrValue(n, attr){ - if(!n.tagName && typeof n.length != "undefined"){ - n = n[0]; - } - if(!n){ - return null; - } - if(attr == "for"){ - return n.htmlFor; - } - if(attr == "class" || attr == "className"){ - return n.className; - } - return n.getAttribute(attr) || n[attr]; - - }; - - function getNodes(ns, mode, tagName){ - var result = [], cs; - if(!ns){ - return result; - } - mode = mode ? mode.replace(trimRe, "") : ""; - tagName = tagName || "*"; - if(typeof ns.getElementsByTagName != "undefined"){ - ns = [ns]; - } - if(mode != "/" && mode != ">"){ - for(var i = 0, ni; ni = ns[i]; i++){ - cs = ni.getElementsByTagName(tagName); - for(var j = 0, ci; ci = cs[j]; j++){ - result[result.length] = ci; - } - } - }else{ - for(var i = 0, ni; ni = ns[i]; i++){ - var cn = ni.getElementsByTagName(tagName); - for(var j = 0, cj; cj = cn[j]; j++){ - if(cj.parentNode == ni){ - result[result.length] = cj; - } - } - } - } - return result; - }; - - function concat(a, b){ - if(b.slice){ - return a.concat(b); - } - for(var i = 0, l = b.length; i < l; i++){ - a[a.length] = b[i]; - } - return a; - } - - function byTag(cs, tagName){ - if(cs.tagName || cs == document){ - cs = [cs]; - } - if(!tagName){ - return cs; - } - var r = []; tagName = tagName.toLowerCase(); - for(var i = 0, ci; ci = cs[i]; i++){ - if(ci.nodeType == 1 && ci.tagName.toLowerCase()==tagName){ - r[r.length] = ci; - } - } - return r; - }; - - function byId(cs, attr, id){ - if(cs.tagName || cs == document){ - cs = [cs]; - } - if(!id){ - return cs; - } - var r = []; - for(var i = 0,ci; ci = cs[i]; i++){ - if(ci && ci.id == id){ - r[r.length] = ci; - return r; - } - } - return r; - }; - - function byAttribute(cs, attr, value, op, custom){ - var r = [], st = custom=="{"; - var f = Ext.DomQuery.operators[op]; - for(var i = 0; ci = cs[i]; i++){ - var a; - if(st){ - a = Ext.DomQuery.getStyle(ci, attr); - } - else if(attr == "class" || attr == "className"){ - a = ci.className; - }else if(attr == "for"){ - a = ci.htmlFor; - }else if(attr == "href"){ - a = ci.getAttribute("href", 2); - }else{ - a = ci.getAttribute(attr); - } - if((f && f(a, value)) || (!f && a)){ - r[r.length] = ci; - } - } - return r; - }; - - function byPseudo(cs, name, value){ - return Ext.DomQuery.pseudos[name](cs, value); - }; - - // This is for IE MSXML which does not support expandos. - // IE runs the same speed using setAttribute, however FF slows way down - // and Safari completely fails so they need to continue to use expandos. - var isIE = window.ActiveXObject ? true : false; - - var key = 30803; - - function nodupIEXml(cs){ - var d = ++key; - cs[0].setAttribute("_nodup", d); - var r = [cs[0]]; - for(var i = 1, len = cs.length; i < len; i++){ - var c = cs[i]; - if(!c.getAttribute("_nodup") != d){ - c.setAttribute("_nodup", d); - r[r.length] = c; - } - } - for(var i = 0, len = cs.length; i < len; i++){ - cs[i].removeAttribute("_nodup"); - } - return r; - } - - function nodup(cs){ - if(!cs){ - return []; - } - var len = cs.length, c, i, r = cs, cj; - if(!len || typeof cs.nodeType != "undefined" || len == 1){ - return cs; - } - if(isIE && typeof cs[0].selectSingleNode != "undefined"){ - return nodupIEXml(cs); - } - var d = ++key; - cs[0]._nodup = d; - for(i = 1; c = cs[i]; i++){ - if(c._nodup != d){ - c._nodup = d; - }else{ - r = []; - for(var j = 0; j < i; j++){ - r[r.length] = cs[j]; - } - for(j = i+1; cj = cs[j]; j++){ - if(cj._nodup != d){ - cj._nodup = d; - r[r.length] = cj; - } - } - return r; - } - } - return r; - } - - function quickDiffIEXml(c1, c2){ - var d = ++key; - for(var i = 0, len = c1.length; i < len; i++){ - c1[i].setAttribute("_qdiff", d); - } - var r = []; - for(var i = 0, len = c2.length; i < len; i++){ - if(c2[i].getAttribute("_qdiff") != d){ - r[r.length] = c2[i]; - } - } - for(var i = 0, len = c1.length; i < len; i++){ - c1[i].removeAttribute("_qdiff"); - } - return r; - } - - function quickDiff(c1, c2){ - var len1 = c1.length; - if(!len1){ - return c2; - } - if(isIE && c1[0].selectSingleNode){ - return quickDiffIEXml(c1, c2); - } - var d = ++key; - for(var i = 0; i < len1; i++){ - c1[i]._qdiff = d; - } - var r = []; - for(var i = 0, len = c2.length; i < len; i++){ - if(c2[i]._qdiff != d){ - r[r.length] = c2[i]; - } - } - return r; - } - - function quickId(ns, mode, root, id){ - if(ns == root){ - var d = root.ownerDocument || root; - return d.getElementById(id); - } - ns = getNodes(ns, mode, "*"); - return byId(ns, null, id); - } - - return { - getStyle : function(el, name){ - return Ext.fly(el).getStyle(name); - }, - - compile : function(path, type){ - type = type || "select"; - - var fn = ["var f = function(root){\n var mode; var n = root || document;\n"]; - var q = path, mode, lq; - var tk = Ext.DomQuery.matchers; - var tklen = tk.length; - var mm; - - // accept leading mode switch - var lmode = q.match(modeRe); - if(lmode && lmode[1]){ - fn[fn.length] = 'mode="'+lmode[1]+'";'; - q = q.replace(lmode[1], ""); - } - // strip leading slashes - while(path.substr(0, 1)=="/"){ - path = path.substr(1); - } - - while(q && lq != q){ - lq = q; - var tm = q.match(tagTokenRe); - if(type == "select"){ - if(tm){ - if(tm[1] == "#"){ - fn[fn.length] = 'n = quickId(n, mode, root, "'+tm[2]+'");'; - }else{ - fn[fn.length] = 'n = getNodes(n, mode, "'+tm[2]+'");'; - } - q = q.replace(tm[0], ""); - }else if(q.substr(0, 1) != '@'){ - fn[fn.length] = 'n = getNodes(n, mode, "*");'; - } - }else{ - if(tm){ - if(tm[1] == "#"){ - fn[fn.length] = 'n = byId(n, null, "'+tm[2]+'");'; - }else{ - fn[fn.length] = 'n = byTag(n, "'+tm[2]+'");'; - } - q = q.replace(tm[0], ""); - } - } - while(!(mm = q.match(modeRe))){ - var matched = false; - for(var j = 0; j < tklen; j++){ - var t = tk[j]; - var m = q.match(t.re); - if(m){ - fn[fn.length] = t.select.replace(tplRe, function(x, i){ - return m[i]; - }); - q = q.replace(m[0], ""); - matched = true; - break; - } - } - // prevent infinite loop on bad selector - if(!matched){ - throw 'Error parsing selector, parsing failed at "' + q + '"'; - } - } - if(mm[1]){ - fn[fn.length] = 'mode="'+mm[1]+'";'; - q = q.replace(mm[1], ""); - } - } - fn[fn.length] = "return nodup(n);\n}"; - eval(fn.join("")); - return f; - }, - - - select : function(path, root, type){ - if(!root || root == document){ - root = document; - } - if(typeof root == "string"){ - root = document.getElementById(root); - } - var paths = path.split(","); - var results = []; - for(var i = 0, len = paths.length; i < len; i++){ - var p = paths[i].replace(trimRe, ""); - if(!cache[p]){ - cache[p] = Ext.DomQuery.compile(p); - if(!cache[p]){ - throw p + " is not a valid selector"; - } - } - var result = cache[p](root); - if(result && result != document){ - results = results.concat(result); - } - } - return results; - }, - - - selectNode : function(path, root){ - return Ext.DomQuery.select(path, root)[0]; - }, - - - selectValue : function(path, root, defaultValue){ - path = path.replace(trimRe, ""); - if(!valueCache[path]){ - valueCache[path] = Ext.DomQuery.compile(path, "select"); - } - var n = valueCache[path](root); - n = n[0] ? n[0] : n; - var v = (n && n.firstChild ? n.firstChild.nodeValue : null); - return (v === null ? defaultValue : v); - }, - - - selectNumber : function(path, root, defaultValue){ - var v = Ext.DomQuery.selectValue(path, root, defaultValue || 0); - return parseFloat(v); - }, - - - is : function(el, ss){ - if(typeof el == "string"){ - el = document.getElementById(el); - } - var isArray = (el instanceof Array); - var result = Ext.DomQuery.filter(isArray ? el : [el], ss); - return isArray ? (result.length == el.length) : (result.length > 0); - }, - - - filter : function(els, ss, nonMatches){ - ss = ss.replace(trimRe, ""); - if(!simpleCache[ss]){ - simpleCache[ss] = Ext.DomQuery.compile(ss, "simple"); - } - var result = simpleCache[ss](els); - return nonMatches ? quickDiff(result, els) : result; - }, - - - matchers : [{ - re: /^\.([\w-]+)/, - select: 'n = byClassName(n, null, " {1} ");' - }, { - re: /^\:([\w-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/, - select: 'n = byPseudo(n, "{1}", "{2}");' - },{ - re: /^(?:([\[\{])(?:@)?([\w-]+)\s?(?:(=|.=)\s?['"]?(.*?)["']?)?[\]\}])/, - select: 'n = byAttribute(n, "{2}", "{4}", "{3}", "{1}");' - }, { - re: /^#([\w-]+)/, - select: 'n = byId(n, null, "{1}");' - },{ - re: /^@([\w-]+)/, - select: 'return {firstChild:{nodeValue:attrValue(n, "{1}")}};' - } - ], - - - operators : { - "=" : function(a, v){ - return a == v; - }, - "!=" : function(a, v){ - return a != v; - }, - "^=" : function(a, v){ - return a && a.substr(0, v.length) == v; - }, - "$=" : function(a, v){ - return a && a.substr(a.length-v.length) == v; - }, - "*=" : function(a, v){ - return a && a.indexOf(v) !== -1; - }, - "%=" : function(a, v){ - return (a % v) == 0; - } - }, - - - pseudos : { - "first-child" : function(c){ - var r = [], n; - for(var i = 0, ci; ci = n = c[i]; i++){ - while((n = n.previousSibling) && n.nodeType != 1); - if(!n){ - r[r.length] = ci; - } - } - return r; - }, - - "last-child" : function(c){ - var r = []; - for(var i = 0, ci; ci = n = c[i]; i++){ - while((n = n.nextSibling) && n.nodeType != 1); - if(!n){ - r[r.length] = ci; - } - } - return r; - }, - - "nth-child" : function(c, a){ - var r = []; - if(a != "odd" && a != "even"){ - for(var i = 0, ci; ci = c[i]; i++){ - var m = child(ci.parentNode, a); - if(m == ci){ - r[r.length] = m; - } - } - return r; - } - var p; - // first let's clean up the parent nodes - for(var i = 0, l = c.length; i < l; i++){ - var cp = c[i].parentNode; - if(cp != p){ - clean(cp); - p = cp; - } - } - // then lets see if we match - for(var i = 0, ci; ci = c[i]; i++){ - var m = false; - if(a == "odd"){ - m = ((ci.nodeIndex+1) % 2 == 1); - }else if(a == "even"){ - m = ((ci.nodeIndex+1) % 2 == 0); - } - if(m){ - r[r.length] = ci; - } - } - return r; - }, - - "only-child" : function(c){ - var r = []; - for(var i = 0, ci; ci = c[i]; i++){ - if(!prev(ci) && !next(ci)){ - r[r.length] = ci; - } - } - return r; - }, - - "empty" : function(c){ - var r = []; - for(var i = 0, ci; ci = c[i]; i++){ - var cns = ci.childNodes, j = 0, cn, empty = true; - while(cn = cns[j]){ - ++j; - if(cn.nodeType == 1 || cn.nodeType == 3){ - empty = false; - break; - } - } - if(empty){ - r[r.length] = ci; - } - } - return r; - }, - - "contains" : function(c, v){ - var r = []; - for(var i = 0, ci; ci = c[i]; i++){ - if(ci.innerHTML.indexOf(v) !== -1){ - r[r.length] = ci; - } - } - return r; - }, - - "nodeValue" : function(c, v){ - var r = []; - for(var i = 0, ci; ci = c[i]; i++){ - if(ci.firstChild && ci.firstChild.nodeValue == v){ - r[r.length] = ci; - } - } - return r; - }, - - "checked" : function(c){ - var r = []; - for(var i = 0, ci; ci = c[i]; i++){ - if(ci.checked == true){ - r[r.length] = ci; - } - } - return r; - }, - - "not" : function(c, ss){ - return Ext.DomQuery.filter(c, ss, true); - }, - - "odd" : function(c){ - return this["nth-child"](c, "odd"); - }, - - "even" : function(c){ - return this["nth-child"](c, "even"); - }, - - "nth" : function(c, a){ - return c[a-1] || []; - }, - - "first" : function(c){ - return c[0] || []; - }, - - "last" : function(c){ - return c[c.length-1] || []; - }, - - "has" : function(c, ss){ - var s = Ext.DomQuery.select; - var r = []; - for(var i = 0, ci; ci = c[i]; i++){ - if(s(ss, ci).length > 0){ - r[r.length] = ci; - } - } - return r; - }, - - "next" : function(c, ss){ - var is = Ext.DomQuery.is; - var r = []; - for(var i = 0, ci; ci = c[i]; i++){ - var n = next(ci); - if(n && is(n, ss)){ - r[r.length] = ci; - } - } - return r; - }, - - "prev" : function(c, ss){ - var is = Ext.DomQuery.is; - var r = []; - for(var i = 0, ci; ci = c[i]; i++){ - var n = prev(ci); - if(n && is(n, ss)){ - r[r.length] = ci; - } - } - return r; - } - } - }; -}(); - - -Ext.query = Ext.DomQuery.select; - - -Ext.util.Observable = function(){ - if(this.listeners){ - this.on(this.listeners); - delete this.listeners; - } -}; -Ext.util.Observable.prototype = { - - fireEvent : function(){ - var ce = this.events[arguments[0].toLowerCase()]; - if(typeof ce == "object"){ - return ce.fire.apply(ce, Array.prototype.slice.call(arguments, 1)); - }else{ - return true; - } - }, - - // private - filterOptRe : /^(?:scope|delay|buffer|single)$/, - - - addListener : function(eventName, fn, scope, o){ - if(typeof eventName == "object"){ - o = eventName; - for(var e in o){ - if(this.filterOptRe.test(e)){ - continue; - } - if(typeof o[e] == "function"){ - // shared options - this.addListener(e, o[e], o.scope, o); - }else{ - // individual options - this.addListener(e, o[e].fn, o[e].scope, o[e]); - } - } - return; - } - o = (!o || typeof o == "boolean") ? {} : o; - eventName = eventName.toLowerCase(); - var ce = this.events[eventName] || true; - if(typeof ce == "boolean"){ - ce = new Ext.util.Event(this, eventName); - this.events[eventName] = ce; - } - ce.addListener(fn, scope, o); - }, - - - removeListener : function(eventName, fn, scope){ - var ce = this.events[eventName.toLowerCase()]; - if(typeof ce == "object"){ - ce.removeListener(fn, scope); - } - }, - - - purgeListeners : function(){ - for(var evt in this.events){ - if(typeof this.events[evt] == "object"){ - this.events[evt].clearListeners(); - } - } - }, - - relayEvents : function(o, events){ - var createHandler = function(ename){ - return function(){ - return this.fireEvent.apply(this, Ext.combine(ename, Array.prototype.slice.call(arguments, 0))); - }; - }; - for(var i = 0, len = events.length; i < len; i++){ - var ename = events[i]; - if(!this.events[ename]){ this.events[ename] = true; }; - o.on(ename, createHandler(ename), this); - } - }, - - - addEvents : function(o){ - if(!this.events){ - this.events = {}; - } - Ext.applyIf(this.events, o); - }, - - - hasListener : function(eventName){ - var e = this.events[eventName]; - return typeof e == "object" && e.listeners.length > 0; - } -}; - -Ext.util.Observable.prototype.on = Ext.util.Observable.prototype.addListener; - -Ext.util.Observable.prototype.un = Ext.util.Observable.prototype.removeListener; - - -Ext.util.Observable.capture = function(o, fn, scope){ - o.fireEvent = o.fireEvent.createInterceptor(fn, scope); -}; - - -Ext.util.Observable.releaseCapture = function(o){ - o.fireEvent = Ext.util.Observable.prototype.fireEvent; -}; - -(function(){ - - var createBuffered = function(h, o, scope){ - var task = new Ext.util.DelayedTask(); - return function(){ - task.delay(o.buffer, h, scope, Array.prototype.slice.call(arguments, 0)); - }; - }; - - var createSingle = function(h, e, fn, scope){ - return function(){ - e.removeListener(fn, scope); - return h.apply(scope, arguments); - }; - }; - - var createDelayed = function(h, o, scope){ - return function(){ - var args = Array.prototype.slice.call(arguments, 0); - setTimeout(function(){ - h.apply(scope, args); - }, o.delay || 10); - }; - }; - - Ext.util.Event = function(obj, name){ - this.name = name; - this.obj = obj; - this.listeners = []; - }; - - Ext.util.Event.prototype = { - addListener : function(fn, scope, options){ - var o = options || {}; - scope = scope || this.obj; - if(!this.isListening(fn, scope)){ - var l = {fn: fn, scope: scope, options: o}; - var h = fn; - if(o.delay){ - h = createDelayed(h, o, scope); - } - if(o.single){ - h = createSingle(h, this, fn, scope); - } - if(o.buffer){ - h = createBuffered(h, o, scope); - } - l.fireFn = h; - if(!this.firing){ // if we are currently firing this event, don't disturb the listener loop - this.listeners.push(l); - }else{ - this.listeners = this.listeners.slice(0); - this.listeners.push(l); - } - } - }, - - findListener : function(fn, scope){ - scope = scope || this.obj; - var ls = this.listeners; - for(var i = 0, len = ls.length; i < len; i++){ - var l = ls[i]; - if(l.fn == fn && l.scope == scope){ - return i; - } - } - return -1; - }, - - isListening : function(fn, scope){ - return this.findListener(fn, scope) != -1; - }, - - removeListener : function(fn, scope){ - var index; - if((index = this.findListener(fn, scope)) != -1){ - if(!this.firing){ - this.listeners.splice(index, 1); - }else{ - this.listeners = this.listeners.slice(0); - this.listeners.splice(index, 1); - } - return true; - } - return false; - }, - - clearListeners : function(){ - this.listeners = []; - }, - - fire : function(){ - var ls = this.listeners, scope, len = ls.length; - if(len > 0){ - this.firing = true; - var args = Array.prototype.slice.call(arguments, 0); - for(var i = 0; i < len; i++){ - var l = ls[i]; - if(l.fireFn.apply(l.scope, arguments) === false){ - this.firing = false; - return false; - } - } - this.firing = false; - } - return true; - } - }; -})(); - -Ext.EventManager = function(){ - var docReadyEvent, docReadyProcId, docReadyState = false; - var resizeEvent, resizeTask, textEvent, textSize; - var E = Ext.lib.Event; - var D = Ext.lib.Dom; - - - var fireDocReady = function(){ - if(!docReadyState){ - docReadyState = true; - Ext.isReady = true; - if(docReadyProcId){ - clearInterval(docReadyProcId); - } - if(Ext.isGecko || Ext.isOpera) { - document.removeEventListener("DOMContentLoaded", fireDocReady, false); - } - if(docReadyEvent){ - docReadyEvent.fire(); - docReadyEvent.clearListeners(); - } - } - }; - - var initDocReady = function(){ - docReadyEvent = new Ext.util.Event(); - if(Ext.isGecko || Ext.isOpera) { - document.addEventListener("DOMContentLoaded", fireDocReady, false); - }else if(Ext.isIE){ - // inspired by http://www.thefutureoftheweb.com/blog/2006/6/adddomloadevent - document.write("<s"+'cript id="ie-deferred-loader" defer="defer" src="/'+'/:"></s'+"cript>"); - var defer = document.getElementById("ie-deferred-loader"); - defer.onreadystatechange = function(){ - if(this.readyState == "complete"){ - fireDocReady(); - defer.onreadystatechange = null; - defer.parentNode.removeChild(defer); - } - }; - }else if(Ext.isSafari){ - docReadyProcId = setInterval(function(){ - var rs = document.readyState; - if(rs == "complete") { - fireDocReady(); - } - }, 10); - } - // no matter what, make sure it fires on load - E.on(window, "load", fireDocReady); - }; - - var createBuffered = function(h, o){ - var task = new Ext.util.DelayedTask(h); - return function(e){ - // create new event object impl so new events don't wipe out properties - e = new Ext.EventObjectImpl(e); - task.delay(o.buffer, h, null, [e]); - }; - }; - - var createSingle = function(h, el, ename, fn){ - return function(e){ - Ext.EventManager.removeListener(el, ename, fn); - h(e); - }; - }; - - var createDelayed = function(h, o){ - return function(e){ - // create new event object impl so new events don't wipe out properties - e = new Ext.EventObjectImpl(e); - setTimeout(function(){ - h(e); - }, o.delay || 10); - }; - }; - - var listen = function(element, ename, opt, fn, scope){ - var o = (!opt || typeof opt == "boolean") ? {} : opt; - fn = fn || o.fn; scope = scope || o.scope; - var el = Ext.getDom(element); - if(!el){ - throw "Error listening for \"" + ename + '\". Element "' + element + '" doesn\'t exist.'; - } - var h = function(e){ - e = Ext.EventObject.setEvent(e); - var t; - if(o.delegate){ - t = e.getTarget(o.delegate, el); - if(!t){ - return; - } - }else{ - t = e.target; - } - if(o.stopEvent === true){ - e.stopEvent(); - } - if(o.preventDefault === true){ - e.preventDefault(); - } - if(o.stopPropagation === true){ - e.stopPropagation(); - } - - if(o.normalized === false){ - e = e.browserEvent; - } - - fn.call(scope || el, e, t, o); - }; - if(o.delay){ - h = createDelayed(h, o); - } - if(o.single){ - h = createSingle(h, el, ename, fn); - } - if(o.buffer){ - h = createBuffered(h, o); - } - fn._handlers = fn._handlers || []; - fn._handlers.push([Ext.id(el), ename, h]); - - E.on(el, ename, h); - if(ename == "mousewheel" && el.addEventListener){ // workaround for jQuery - el.addEventListener("DOMMouseScroll", h, false); - E.on(window, 'unload', function(){ - el.removeEventListener("DOMMouseScroll", h, false); - }); - } - if(ename == "mousedown" && el == document){ // fix stopped mousedowns on the document - Ext.EventManager.stoppedMouseDownEvent.addListener(h); - } - return h; - }; - - var stopListening = function(el, ename, fn){ - var id = Ext.id(el), hds = fn._handlers, hd = fn; - if(hds){ - for(var i = 0, len = hds.length; i < len; i++){ - var h = hds[i]; - if(h[0] == id && h[1] == ename){ - hd = h[2]; - hds.splice(i, 1); - break; - } - } - } - E.un(el, ename, hd); - el = Ext.getDom(el); - if(ename == "mousewheel" && el.addEventListener){ - el.removeEventListener("DOMMouseScroll", hd, false); - } - if(ename == "mousedown" && el == document){ // fix stopped mousedowns on the document - Ext.EventManager.stoppedMouseDownEvent.removeListener(hd); - } - }; - - var propRe = /^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized)$/; - var pub = { - - - wrap : function(fn, scope, override){ - return function(e){ - Ext.EventObject.setEvent(e); - fn.call(override ? scope || window : window, Ext.EventObject, scope); - }; - }, - - - addListener : function(element, eventName, fn, scope, options){ - if(typeof eventName == "object"){ - var o = eventName; - for(var e in o){ - if(propRe.test(e)){ - continue; - } - if(typeof o[e] == "function"){ - // shared options - listen(element, e, o, o[e], o.scope); - }else{ - // individual options - listen(element, e, o[e]); - } - } - return; - } - return listen(element, eventName, options, fn, scope); - }, - - - removeListener : function(element, eventName, fn){ - return stopListening(element, eventName, fn); - }, - - - onDocumentReady : function(fn, scope, options){ - if(docReadyState){ // if it already fired - fn.call(scope || window, scope); - return; - } - if(!docReadyEvent){ - initDocReady(); - } - docReadyEvent.addListener(fn, scope, options); - }, - - - onWindowResize : function(fn, scope, options){ - if(!resizeEvent){ - resizeEvent = new Ext.util.Event(); - resizeTask = new Ext.util.DelayedTask(function(){ - resizeEvent.fire(D.getViewWidth(), D.getViewHeight()); - }); - E.on(window, "resize", function(){ - if(Ext.isIE){ - resizeTask.delay(50); - }else{ - resizeEvent.fire(D.getViewWidth(), D.getViewHeight()); - } - }); - } - resizeEvent.addListener(fn, scope, options); - }, - - - onTextResize : function(fn, scope, options){ - if(!textEvent){ - textEvent = new Ext.util.Event(); - var textEl = new Ext.Element(document.createElement('div')); - textEl.dom.className = 'x-text-resize'; - textEl.dom.innerHTML = 'X'; - textEl.appendTo(document.body); - textSize = textEl.dom.offsetHeight; - setInterval(function(){ - if(textEl.dom.offsetHeight != textSize){ - textEvent.fire(textSize, textSize = textEl.dom.offsetHeight); - } - }, this.textResizeInterval); - } - textEvent.addListener(fn, scope, options); - }, - - - removeResizeListener : function(fn, scope){ - if(resizeEvent){ - resizeEvent.removeListener(fn, scope); - } - }, - - fireResize : function(){ - if(resizeEvent){ - resizeEvent.fire(D.getViewWidth(), D.getViewHeight()); - } - }, - - ieDeferSrc : false, - textResizeInterval : 50 - }; - - pub.on = pub.addListener; - pub.un = pub.removeListener; - - pub.stoppedMouseDownEvent = new Ext.util.Event(); - return pub; -}(); - -Ext.onReady = Ext.EventManager.onDocumentReady; - -Ext.onReady(function(){ - var bd = Ext.get(document.body); - if(!bd){ return; } - var cls = Ext.isIE ? "ext-ie" - : Ext.isGecko ? "ext-gecko" - : Ext.isOpera ? "ext-opera" - : Ext.isSafari ? "ext-safari" : ""; - if(Ext.isBorderBox){ - cls += ' ext-border-box'; - } - if(Ext.isStrict){ - cls += ' ext-strict'; - } - bd.addClass(cls); -}); - -Ext.EventObject = function(){ - - var E = Ext.lib.Event; - - // safari keypress events for special keys return bad keycodes - var safariKeys = { - 63234 : 37, // left - 63235 : 39, // right - 63232 : 38, // up - 63233 : 40, // down - 63276 : 33, // page up - 63277 : 34, // page down - 63272 : 46, // delete - 63273 : 36, // home - 63275 : 35 // end - }; - - // normalize button clicks - var btnMap = Ext.isIE ? {1:0,4:1,2:2} : - (Ext.isSafari ? {1:0,2:1,3:2} : {0:0,1:1,2:2}); - - Ext.EventObjectImpl = function(e){ - if(e){ - this.setEvent(e.browserEvent || e); - } - }; - Ext.EventObjectImpl.prototype = { - - browserEvent : null, - - button : -1, - - shiftKey : false, - - ctrlKey : false, - - altKey : false, - - - BACKSPACE : 8, - - TAB : 9, - - RETURN : 13, - - ENTER : 13, - - SHIFT : 16, - - CONTROL : 17, - - ESC : 27, - - SPACE : 32, - - PAGEUP : 33, - - PAGEDOWN : 34, - - END : 35, - - HOME : 36, - - LEFT : 37, - - UP : 38, - - RIGHT : 39, - - DOWN : 40, - - DELETE : 46, - - F5 : 116, - - - setEvent : function(e){ - if(e == this || (e && e.browserEvent)){ // already wrapped - return e; - } - this.browserEvent = e; - if(e){ - // normalize buttons - this.button = e.button ? btnMap[e.button] : (e.which ? e.which-1 : -1); - if(e.type == 'click' && this.button == -1){ - this.button = 0; - } - this.shiftKey = e.shiftKey; - // mac metaKey behaves like ctrlKey - this.ctrlKey = e.ctrlKey || e.metaKey; - this.altKey = e.altKey; - // in getKey these will be normalized for the mac - this.keyCode = e.keyCode; - this.charCode = e.charCode; - // cache the target for the delayed and or buffered events - this.target = E.getTarget(e); - // same for XY - this.xy = E.getXY(e); - }else{ - this.button = -1; - this.shiftKey = false; - this.ctrlKey = false; - this.altKey = false; - this.keyCode = 0; - this.charCode =0; - this.target = null; - this.xy = [0, 0]; - } - return this; - }, - - - stopEvent : function(){ - if(this.browserEvent){ - if(this.browserEvent.type == 'mousedown'){ - Ext.EventManager.stoppedMouseDownEvent.fire(this); - } - E.stopEvent(this.browserEvent); - } - }, - - - preventDefault : function(){ - if(this.browserEvent){ - E.preventDefault(this.browserEvent); - } - }, - - - isNavKeyPress : function(){ - var k = this.keyCode; - k = Ext.isSafari ? (safariKeys[k] || k) : k; - return (k >= 33 && k <= 40) || k == this.RETURN || k == this.TAB || k == this.ESC; - }, - - isSpecialKey : function(){ - var k = this.keyCode; - return k == 9 || k == 13 || k == 40 || k == 27 || - (k == 16) || (k == 17) || - (k >= 18 && k <= 20) || - (k >= 33 && k <= 35) || - (k >= 36 && k <= 39) || - (k >= 44 && k <= 45); - }, - - stopPropagation : function(){ - if(this.browserEvent){ - if(this.browserEvent.type == 'mousedown'){ - Ext.EventManager.stoppedMouseDownEvent.fire(this); - } - E.stopPropagation(this.browserEvent); - } - }, - - - getCharCode : function(){ - return this.charCode || this.keyCode; - }, - - - getKey : function(){ - var k = this.keyCode || this.charCode; - return Ext.isSafari ? (safariKeys[k] || k) : k; - }, - - - getPageX : function(){ - return this.xy[0]; - }, - - - getPageY : function(){ - return this.xy[1]; - }, - - - getTime : function(){ - if(this.browserEvent){ - return E.getTime(this.browserEvent); - } - return null; - }, - - - getXY : function(){ - return this.xy; - }, - - - getTarget : function(selector, maxDepth, returnEl){ - return selector ? Ext.fly(this.target).findParent(selector, maxDepth, returnEl) : this.target; - }, - - getRelatedTarget : function(){ - if(this.browserEvent){ - return E.getRelatedTarget(this.browserEvent); - } - return null; - }, - - - getWheelDelta : function(){ - var e = this.browserEvent; - var delta = 0; - if(e.wheelDelta){ - delta = e.wheelDelta/120; - - if(window.opera) delta = -delta; - }else if(e.detail){ - delta = -e.detail/3; - } - return delta; - }, - - - hasModifier : function(){ - return ((this.ctrlKey || this.altKey) || this.shiftKey) ? true : false; - }, - - - within : function(el, related){ - var t = this[related ? "getRelatedTarget" : "getTarget"](); - return t && Ext.fly(el).contains(t); - }, - - getPoint : function(){ - return new Ext.lib.Point(this.xy[0], this.xy[1]); - } - }; - - return new Ext.EventObjectImpl(); -}(); - - - -(function(){ -var D = Ext.lib.Dom; -var E = Ext.lib.Event; -var A = Ext.lib.Anim; - -// local style camelizing for speed -var propCache = {}; -var camelRe = /(-[a-z])/gi; -var camelFn = function(m, a){ return a.charAt(1).toUpperCase(); }; -var view = document.defaultView; - -Ext.Element = function(element, forceNew){ - var dom = typeof element == "string" ? - document.getElementById(element) : element; - if(!dom){ // invalid id/element - return null; - } - if(!forceNew && Ext.Element.cache[dom.id]){ // element object already exists - return Ext.Element.cache[dom.id]; - } - - this.dom = dom; - - - this.id = dom.id || Ext.id(dom); -}; - -var El = Ext.Element; - -El.prototype = { - - originalDisplay : "", - - visibilityMode : 1, - - defaultUnit : "px", - - setVisibilityMode : function(visMode){ - this.visibilityMode = visMode; - return this; - }, - - enableDisplayMode : function(display){ - this.setVisibilityMode(El.DISPLAY); - if(typeof display != "undefined") this.originalDisplay = display; - return this; - }, - - - findParent : function(simpleSelector, maxDepth, returnEl){ - var p = this.dom, b = document.body, depth = 0, dq = Ext.DomQuery, stopEl; - maxDepth = maxDepth || 50; - if(typeof maxDepth != "number"){ - stopEl = Ext.getDom(maxDepth); - maxDepth = 10; - } - while(p && p.nodeType == 1 && depth < maxDepth && p != b && p != stopEl){ - if(dq.is(p, simpleSelector)){ - return returnEl ? Ext.get(p) : p; - } - depth++; - p = p.parentNode; - } - return null; - }, - - - - findParentNode : function(simpleSelector, maxDepth, returnEl){ - var p = Ext.fly(this.dom.parentNode, '_internal'); - return p ? p.findParent(simpleSelector, maxDepth, returnEl) : null; - }, - - - up : function(simpleSelector, maxDepth){ - return this.findParentNode(simpleSelector, maxDepth, true); - }, - - - - - is : function(simpleSelector){ - return Ext.DomQuery.is(this.dom, simpleSelector); - }, - - - animate : function(args, duration, onComplete, easing, animType){ - this.anim(args, {duration: duration, callback: onComplete, easing: easing}, animType); - return this; - }, - - - anim : function(args, opt, animType, defaultDur, defaultEase, cb){ - animType = animType || 'run'; - opt = opt || {}; - var anim = Ext.lib.Anim[animType]( - this.dom, args, - (opt.duration || defaultDur) || .35, - (opt.easing || defaultEase) || 'easeOut', - function(){ - Ext.callback(cb, this); - Ext.callback(opt.callback, opt.scope || this, [this, opt]); - }, - this - ); - opt.anim = anim; - return anim; - }, - - // private legacy anim prep - preanim : function(a, i){ - return !a[i] ? false : (typeof a[i] == "object" ? a[i]: {duration: a[i+1], callback: a[i+2], easing: a[i+3]}); - }, - - - clean : function(forceReclean){ - if(this.isCleaned && forceReclean !== true){ - return this; - } - var ns = /\S/; - var d = this.dom, n = d.firstChild, ni = -1; - while(n){ - var nx = n.nextSibling; - if(n.nodeType == 3 && !ns.test(n.nodeValue)){ - d.removeChild(n); - }else{ - n.nodeIndex = ++ni; - } - n = nx; - } - this.isCleaned = true; - return this; - }, - - // private - calcOffsetsTo : function(el){ - el = Ext.get(el); - var d = el.dom; - var restorePos = false; - if(el.getStyle('position') == 'static'){ - el.position('relative'); - restorePos = true; - } - var x = 0, y =0; - var op = this.dom; - while(op && op != d && op.tagName != 'HTML'){ - x+= op.offsetLeft; - y+= op.offsetTop; - op = op.offsetParent; - } - if(restorePos){ - el.position('static'); - } - return [x, y]; - }, - - - scrollIntoView : function(container, hscroll){ - var c = Ext.getDom(container) || document.body; - var el = this.dom; - - var o = this.calcOffsetsTo(c), - l = o[0], - t = o[1], - b = t+el.offsetHeight, - r = l+el.offsetWidth; - - var ch = c.clientHeight; - var ct = parseInt(c.scrollTop, 10); - var cl = parseInt(c.scrollLeft, 10); - var cb = ct + ch; - var cr = cl + c.clientWidth; - - if(t < ct){ - c.scrollTop = t; - }else if(b > cb){ - c.scrollTop = b-ch; - } - - if(hscroll !== false){ - if(l < cl){ - c.scrollLeft = l; - }else if(r > cr){ - c.scrollLeft = r-c.clientWidth; - } - } - return this; - }, - - // private - scrollChildIntoView : function(child, hscroll){ - Ext.fly(child, '_scrollChildIntoView').scrollIntoView(this, hscroll); - }, - - - autoHeight : function(animate, duration, onComplete, easing){ - var oldHeight = this.getHeight(); - this.clip(); - this.setHeight(1); // force clipping - setTimeout(function(){ - var height = parseInt(this.dom.scrollHeight, 10); // parseInt for Safari - if(!animate){ - this.setHeight(height); - this.unclip(); - if(typeof onComplete == "function"){ - onComplete(); - } - }else{ - this.setHeight(oldHeight); // restore original height - this.setHeight(height, animate, duration, function(){ - this.unclip(); - if(typeof onComplete == "function") onComplete(); - }.createDelegate(this), easing); - } - }.createDelegate(this), 0); - return this; - }, - - - contains : function(el){ - if(!el){return false;} - return D.isAncestor(this.dom, el.dom ? el.dom : el); - }, - - - isVisible : function(deep) { - var vis = !(this.getStyle("visibility") == "hidden" || this.getStyle("display") == "none"); - if(deep !== true || !vis){ - return vis; - } - var p = this.dom.parentNode; - while(p && p.tagName.toLowerCase() != "body"){ - if(!Ext.fly(p, '_isVisible').isVisible()){ - return false; - } - p = p.parentNode; - } - return true; - }, - - - select : function(selector, unique){ - return El.select(selector, unique, this.dom); - }, - - - query : function(selector, unique){ - return Ext.DomQuery.select(selector, this.dom); - }, - - - child : function(selector, returnDom){ - var n = Ext.DomQuery.selectNode(selector, this.dom); - return returnDom ? n : Ext.get(n); - }, - - - down : function(selector, returnDom){ - var n = Ext.DomQuery.selectNode(" > " + selector, this.dom); - return returnDom ? n : Ext.get(n); - }, - - - initDD : function(group, config, overrides){ - var dd = new Ext.dd.DD(Ext.id(this.dom), group, config); - return Ext.apply(dd, overrides); - }, - - - initDDProxy : function(group, config, overrides){ - var dd = new Ext.dd.DDProxy(Ext.id(this.dom), group, config); - return Ext.apply(dd, overrides); - }, - - - initDDTarget : function(group, config, overrides){ - var dd = new Ext.dd.DDTarget(Ext.id(this.dom), group, config); - return Ext.apply(dd, overrides); - }, - - - setVisible : function(visible, animate){ - if(!animate || !A){ - if(this.visibilityMode == El.DISPLAY){ - this.setDisplayed(visible); - }else{ - this.fixDisplay(); - this.dom.style.visibility = visible ? "visible" : "hidden"; - } - }else{ - // closure for composites - var dom = this.dom; - var visMode = this.visibilityMode; - if(visible){ - this.setOpacity(.01); - this.setVisible(true); - } - this.anim({opacity: { to: (visible?1:0) }}, - this.preanim(arguments, 1), - null, .35, 'easeIn', function(){ - if(!visible){ - if(visMode == El.DISPLAY){ - dom.style.display = "none"; - }else{ - dom.style.visibility = "hidden"; - } - Ext.get(dom).setOpacity(1); - } - }); - } - return this; - }, - - - isDisplayed : function() { - return this.getStyle("display") != "none"; - }, - - - toggle : function(animate){ - this.setVisible(!this.isVisible(), this.preanim(arguments, 0)); - return this; - }, - - - setDisplayed : function(value) { - if(typeof value == "boolean"){ - value = value ? this.originalDisplay : "none"; - } - this.setStyle("display", value); - return this; - }, - - - focus : function() { - try{ - this.dom.focus(); - }catch(e){} - return this; - }, - - - blur : function() { - try{ - this.dom.blur(); - }catch(e){} - return this; - }, - - - addClass : function(className){ - if(className instanceof Array){ - for(var i = 0, len = className.length; i < len; i++) { - this.addClass(className[i]); - } - }else{ - if(className && !this.hasClass(className)){ - this.dom.className = this.dom.className + " " + className; - } - } - return this; - }, - - - radioClass : function(className){ - var siblings = this.dom.parentNode.childNodes; - for(var i = 0; i < siblings.length; i++) { - var s = siblings[i]; - if(s.nodeType == 1){ - Ext.get(s).removeClass(className); - } - } - this.addClass(className); - return this; - }, - - - removeClass : function(className){ - if(!className || !this.dom.className){ - return this; - } - if(className instanceof Array){ - for(var i = 0, len = className.length; i < len; i++) { - this.removeClass(className[i]); - } - }else{ - if(this.hasClass(className)){ - var re = this.classReCache[className]; - if (!re) { - re = new RegExp('(?:^|\\s+)' + className + '(?:\\s+|$)', "g"); - this.classReCache[className] = re; - } - this.dom.className = - this.dom.className.replace(re, " "); - } - } - return this; - }, - - // private - classReCache: {}, - - - toggleClass : function(className){ - if(this.hasClass(className)){ - this.removeClass(className); - }else{ - this.addClass(className); - } - return this; - }, - - - hasClass : function(className){ - return className && (' '+this.dom.className+' ').indexOf(' '+className+' ') != -1; - }, - - - replaceClass : function(oldClassName, newClassName){ - this.removeClass(oldClassName); - this.addClass(newClassName); - return this; - }, - - - getStyles : function(){ - var a = arguments, len = a.length, r = {}; - for(var i = 0; i < len; i++){ - r[a[i]] = this.getStyle(a[i]); - } - return r; - }, - - - getStyle : function(){ - return view && view.getComputedStyle ? - function(prop){ - var el = this.dom, v, cs, camel; - if(prop == 'float'){ - prop = "cssFloat"; - } - if(v = el.style[prop]){ - return v; - } - if(cs = view.getComputedStyle(el, "")){ - if(!(camel = propCache[prop])){ - camel = propCache[prop] = prop.replace(camelRe, camelFn); - } - return cs[camel]; - } - return null; - } : - function(prop){ - var el = this.dom, v, cs, camel; - if(prop == 'opacity'){ - if(typeof el.filter == 'string'){ - var fv = parseFloat(el.filter.match(/alpha\(opacity=(.*)\)/i)[1]); - if(!isNaN(fv)){ - return fv ? fv / 100 : 0; - } - } - return 1; - }else if(prop == 'float'){ - prop = "styleFloat"; - } - if(!(camel = propCache[prop])){ - camel = propCache[prop] = prop.replace(camelRe, camelFn); - } - if(v = el.style[camel]){ - return v; - } - if(cs = el.currentStyle){ - return cs[camel]; - } - return null; - }; - }(), - - - setStyle : function(prop, value){ - if(typeof prop == "string"){ - var camel; - if(!(camel = propCache[prop])){ - camel = propCache[prop] = prop.replace(camelRe, camelFn); - } - if(camel == 'opacity') { - this.setOpacity(value); - }else{ - this.dom.style[camel] = value; - } - }else{ - for(var style in prop){ - if(typeof prop[style] != "function"){ - this.setStyle(style, prop[style]); - } - } - } - return this; - }, - - - applyStyles : function(style){ - Ext.DomHelper.applyStyles(this.dom, style); - return this; - }, - - - getX : function(){ - return D.getX(this.dom); - }, - - - getY : function(){ - return D.getY(this.dom); - }, - - - getXY : function(){ - return D.getXY(this.dom); - }, - - - setX : function(x, animate){ - if(!animate || !A){ - D.setX(this.dom, x); - }else{ - this.setXY([x, this.getY()], this.preanim(arguments, 1)); - } - return this; - }, - - - setY : function(y, animate){ - if(!animate || !A){ - D.setY(this.dom, y); - }else{ - this.setXY([this.getX(), y], this.preanim(arguments, 1)); - } - return this; - }, - - - setLeft : function(left){ - this.setStyle("left", this.addUnits(left)); - return this; - }, - - - setTop : function(top){ - this.setStyle("top", this.addUnits(top)); - return this; - }, - - - setRight : function(right){ - this.setStyle("right", this.addUnits(right)); - return this; - }, - - - setBottom : function(bottom){ - this.setStyle("bottom", this.addUnits(bottom)); - return this; - }, - - - setXY : function(pos, animate){ - if(!animate || !A){ - D.setXY(this.dom, pos); - }else{ - this.anim({points: {to: pos}}, this.preanim(arguments, 1), 'motion'); - } - return this; - }, - - - setLocation : function(x, y, animate){ - this.setXY([x, y], this.preanim(arguments, 2)); - return this; - }, - - - moveTo : function(x, y, animate){ - this.setXY([x, y], this.preanim(arguments, 2)); - return this; - }, - - - getRegion : function(){ - return D.getRegion(this.dom); - }, - - - getHeight : function(contentHeight){ - var h = this.dom.offsetHeight || 0; - return contentHeight !== true ? h : h-this.getBorderWidth("tb")-this.getPadding("tb"); - }, - - - getWidth : function(contentWidth){ - var w = this.dom.offsetWidth || 0; - return contentWidth !== true ? w : w-this.getBorderWidth("lr")-this.getPadding("lr"); - }, - - - getComputedHeight : function(){ - var h = Math.max(this.dom.offsetHeight, this.dom.clientHeight); - if(!h){ - h = parseInt(this.getStyle('height'), 10) || 0; - if(!this.isBorderBox()){ - h += this.getFrameWidth('tb'); - } - } - return h; - }, - - - getComputedWidth : function(){ - var w = Math.max(this.dom.offsetWidth, this.dom.clientWidth); - if(!w){ - w = parseInt(this.getStyle('width'), 10) || 0; - if(!this.isBorderBox()){ - w += this.getFrameWidth('lr'); - } - } - return w; - }, - - - getSize : function(contentSize){ - return {width: this.getWidth(contentSize), height: this.getHeight(contentSize)}; - }, - - - getViewSize : function(){ - var d = this.dom, doc = document, aw = 0, ah = 0; - if(d == doc || d == doc.body){ - return {width : D.getViewWidth(), height: D.getViewHeight()}; - }else{ - return { - width : d.clientWidth, - height: d.clientHeight - }; - } - }, - - - getValue : function(asNumber){ - return asNumber ? parseInt(this.dom.value, 10) : this.dom.value; - }, - - // private - adjustWidth : function(width){ - if(typeof width == "number"){ - if(this.autoBoxAdjust && !this.isBorderBox()){ - width -= (this.getBorderWidth("lr") + this.getPadding("lr")); - } - if(width < 0){ - width = 0; - } - } - return width; - }, - - // private - adjustHeight : function(height){ - if(typeof height == "number"){ - if(this.autoBoxAdjust && !this.isBorderBox()){ - height -= (this.getBorderWidth("tb") + this.getPadding("tb")); - } - if(height < 0){ - height = 0; - } - } - return height; - }, - - - setWidth : function(width, animate){ - width = this.adjustWidth(width); - if(!animate || !A){ - this.dom.style.width = this.addUnits(width); - }else{ - this.anim({width: {to: width}}, this.preanim(arguments, 1)); - } - return this; - }, - - - setHeight : function(height, animate){ - height = this.adjustHeight(height); - if(!animate || !A){ - this.dom.style.height = this.addUnits(height); - }else{ - this.anim({height: {to: height}}, this.preanim(arguments, 1)); - } - return this; - }, - - - setSize : function(width, height, animate){ - if(typeof width == "object"){ // in case of object from getSize() - height = width.height; width = width.width; - } - width = this.adjustWidth(width); height = this.adjustHeight(height); - if(!animate || !A){ - this.dom.style.width = this.addUnits(width); - this.dom.style.height = this.addUnits(height); - }else{ - this.anim({width: {to: width}, height: {to: height}}, this.preanim(arguments, 2)); - } - return this; - }, - - - setBounds : function(x, y, width, height, animate){ - if(!animate || !A){ - this.setSize(width, height); - this.setLocation(x, y); - }else{ - width = this.adjustWidth(width); height = this.adjustHeight(height); - this.anim({points: {to: [x, y]}, width: {to: width}, height: {to: height}}, - this.preanim(arguments, 4), 'motion'); - } - return this; - }, - - - setRegion : function(region, animate){ - this.setBounds(region.left, region.top, region.right-region.left, region.bottom-region.top, this.preanim(arguments, 1)); - return this; - }, - - - addListener : function(eventName, fn, scope, options){ - Ext.EventManager.on(this.dom, eventName, fn, scope || this, options); - }, - - - removeListener : function(eventName, fn){ - Ext.EventManager.removeListener(this.dom, eventName, fn); - return this; - }, - - - removeAllListeners : function(){ - E.purgeElement(this.dom); - return this; - }, - - relayEvent : function(eventName, observable){ - this.on(eventName, function(e){ - observable.fireEvent(eventName, e); - }); - }, - - - setOpacity : function(opacity, animate){ - if(!animate || !A){ - var s = this.dom.style; - if(Ext.isIE){ - s.zoom = 1; - s.filter = (s.filter || '').replace(/alpha\([^\)]*\)/gi,"") + - (opacity == 1 ? "" : "alpha(opacity=" + opacity * 100 + ")"); - }else{ - s.opacity = opacity; - } - }else{ - this.anim({opacity: {to: opacity}}, this.preanim(arguments, 1), null, .35, 'easeIn'); - } - return this; - }, - - - getLeft : function(local){ - if(!local){ - return this.getX(); - }else{ - return parseInt(this.getStyle("left"), 10) || 0; - } - }, - - - getRight : function(local){ - if(!local){ - return this.getX() + this.getWidth(); - }else{ - return (this.getLeft(true) + this.getWidth()) || 0; - } - }, - - - getTop : function(local) { - if(!local){ - return this.getY(); - }else{ - return parseInt(this.getStyle("top"), 10) || 0; - } - }, - - - getBottom : function(local){ - if(!local){ - return this.getY() + this.getHeight(); - }else{ - return (this.getTop(true) + this.getHeight()) || 0; - } - }, - - - position : function(pos, zIndex, x, y){ - if(!pos){ - if(this.getStyle('position') == 'static'){ - this.setStyle('position', 'relative'); - } - }else{ - this.setStyle("position", pos); - } - if(zIndex){ - this.setStyle("z-index", zIndex); - } - if(x !== undefined && y !== undefined){ - this.setXY([x, y]); - }else if(x !== undefined){ - this.setX(x); - }else if(y !== undefined){ - this.setY(y); - } - }, - - - clearPositioning : function(value){ - value = value ||''; - this.setStyle({ - "left": value, - "right": value, - "top": value, - "bottom": value, - "z-index": "", - "position" : "static" - }); - return this; - }, - - - getPositioning : function(){ - var l = this.getStyle("left"); - var t = this.getStyle("top"); - return { - "position" : this.getStyle("position"), - "left" : l, - "right" : l ? "" : this.getStyle("right"), - "top" : t, - "bottom" : t ? "" : this.getStyle("bottom"), - "z-index" : this.getStyle("z-index") - }; - }, - - - getBorderWidth : function(side){ - return this.addStyles(side, El.borders); - }, - - - getPadding : function(side){ - return this.addStyles(side, El.paddings); - }, - - - setPositioning : function(pc){ - this.applyStyles(pc); - if(pc.right == "auto"){ - this.dom.style.right = ""; - } - if(pc.bottom == "auto"){ - this.dom.style.bottom = ""; - } - return this; - }, - - // private - fixDisplay : function(){ - if(this.getStyle("display") == "none"){ - this.setStyle("visibility", "hidden"); - this.setStyle("display", this.originalDisplay); // first try reverting to default - if(this.getStyle("display") == "none"){ // if that fails, default to block - this.setStyle("display", "block"); - } - } - }, - - - setLeftTop : function(left, top){ - this.dom.style.left = this.addUnits(left); - this.dom.style.top = this.addUnits(top); - return this; - }, - - - move : function(direction, distance, animate){ - var xy = this.getXY(); - direction = direction.toLowerCase(); - switch(direction){ - case "l": - case "left": - this.moveTo(xy[0]-distance, xy[1], this.preanim(arguments, 2)); - break; - case "r": - case "right": - this.moveTo(xy[0]+distance, xy[1], this.preanim(arguments, 2)); - break; - case "t": - case "top": - case "up": - this.moveTo(xy[0], xy[1]-distance, this.preanim(arguments, 2)); - break; - case "b": - case "bottom": - case "down": - this.moveTo(xy[0], xy[1]+distance, this.preanim(arguments, 2)); - break; - } - return this; - }, - - - clip : function(){ - if(!this.isClipped){ - this.isClipped = true; - this.originalClip = { - "o": this.getStyle("overflow"), - "x": this.getStyle("overflow-x"), - "y": this.getStyle("overflow-y") - }; - this.setStyle("overflow", "hidden"); - this.setStyle("overflow-x", "hidden"); - this.setStyle("overflow-y", "hidden"); - } - return this; - }, - - - unclip : function(){ - if(this.isClipped){ - this.isClipped = false; - var o = this.originalClip; - if(o.o){this.setStyle("overflow", o.o);} - if(o.x){this.setStyle("overflow-x", o.x);} - if(o.y){this.setStyle("overflow-y", o.y);} - } - return this; - }, - - - - getAnchorXY : function(anchor, local, s){ - //Passing a different size is useful for pre-calculating anchors, - //especially for anchored animations that change the el size. - - var w, h, vp = false; - if(!s){ - var d = this.dom; - if(d == document.body || d == document){ - vp = true; - w = D.getViewWidth(); h = D.getViewHeight(); - }else{ - w = this.getWidth(); h = this.getHeight(); - } - }else{ - w = s.width; h = s.height; - } - var x = 0, y = 0, r = Math.round; - switch((anchor || "tl").toLowerCase()){ - case "c": - x = r(w*.5); - y = r(h*.5); - break; - case "t": - x = r(w*.5); - y = 0; - break; - case "l": - x = 0; - y = r(h*.5); - break; - case "r": - x = w; - y = r(h*.5); - break; - case "b": - x = r(w*.5); - y = h; - break; - case "tl": - x = 0; - y = 0; - break; - case "bl": - x = 0; - y = h; - break; - case "br": - x = w; - y = h; - break; - case "tr": - x = w; - y = 0; - break; - } - if(local === true){ - return [x, y]; - } - if(vp){ - var sc = this.getScroll(); - return [x + sc.left, y + sc.top]; - } - //Add the element's offset xy - var o = this.getXY(); - return [x+o[0], y+o[1]]; - }, - - - getAlignToXY : function(el, p, o){ - el = Ext.get(el); - var d = this.dom; - if(!el.dom){ - throw "Element.alignTo with an element that doesn't exist"; - } - var c = false; //constrain to viewport - var p1 = "", p2 = ""; - o = o || [0,0]; - - if(!p){ - p = "tl-bl"; - }else if(p == "?"){ - p = "tl-bl?"; - }else if(p.indexOf("-") == -1){ - p = "tl-" + p; - } - p = p.toLowerCase(); - var m = p.match(/^([a-z]+)-([a-z]+)(\?)?$/); - if(!m){ - throw "Element.alignTo with an invalid alignment " + p; - } - p1 = m[1]; p2 = m[2]; c = !!m[3]; - - //Subtract the aligned el's internal xy from the target's offset xy - //plus custom offset to get the aligned el's new offset xy - var a1 = this.getAnchorXY(p1, true); - var a2 = el.getAnchorXY(p2, false); - var x = a2[0] - a1[0] + o[0]; - var y = a2[1] - a1[1] + o[1]; - if(c){ - //constrain the aligned el to viewport if necessary - var w = this.getWidth(), h = this.getHeight(), r = el.getRegion(); - // 5px of margin for ie - var dw = D.getViewWidth()-5, dh = D.getViewHeight()-5; - - //If we are at a viewport boundary and the aligned el is anchored on a target border that is - //perpendicular to the vp border, allow the aligned el to slide on that border, - //otherwise swap the aligned el to the opposite border of the target. - var p1y = p1.charAt(0), p1x = p1.charAt(p1.length-1); - var p2y = p2.charAt(0), p2x = p2.charAt(p2.length-1); - var swapY = ((p1y=="t" && p2y=="b") || (p1y=="b" && p2y=="t")); - var swapX = ((p1x=="r" && p2x=="l") || (p1x=="l" && p2x=="r")); - - var doc = document; - var scrollX = (doc.documentElement.scrollLeft || doc.body.scrollLeft || 0)+5; - var scrollY = (doc.documentElement.scrollTop || doc.body.scrollTop || 0)+5; - - if((x+w) > dw + scrollX){ - x = swapX ? r.left-w : dw+scrollX-w; - } - if(x < scrollX){ - x = swapX ? r.right : scrollX; - } - if((y+h) > dh + scrollY){ - y = swapY ? r.top-h : dh+scrollY-h; - } - if (y < scrollY){ - y = swapY ? r.bottom : scrollY; - } - } - return [x,y]; - }, - - // private - getConstrainToXY : function(){ - var os = {top:0, left:0, bottom:0, right: 0}; - - return function(el, local, offsets){ - el = Ext.get(el); - offsets = offsets ? Ext.applyIf(offsets, os) : os; - - var vw, vh, vx = 0, vy = 0; - if(el.dom == document.body || el.dom == document){ - vw = Ext.lib.Dom.getViewWidth(); - vh = Ext.lib.Dom.getViewHeight(); - }else{ - vw = el.dom.clientWidth; - vh = el.dom.clientHeight; - if(!local){ - var vxy = el.getXY(); - vx = vxy[0]; - vy = vxy[1]; - } - } - - var s = el.getScroll(); - - vx += offsets.left + s.left; - vy += offsets.top + s.top; - - vw -= offsets.right; - vh -= offsets.bottom; - - var vr = vx+vw; - var vb = vy+vh; - - var xy = !local ? this.getXY() : [this.getLeft(true), this.getTop(true)]; - var x = xy[0], y = xy[1]; - var w = this.dom.offsetWidth, h = this.dom.offsetHeight; - - // only move it if it needs it - var moved = false; - - // first validate right/bottom - if((x + w) > vr){ - x = vr - w; - moved = true; - } - if((y + h) > vb){ - y = vb - h; - moved = true; - } - // then make sure top/left isn't negative - if(x < vx){ - x = vx; - moved = true; - } - if(y < vy){ - y = vy; - moved = true; - } - return moved ? [x, y] : false; - }; - }(), - - - alignTo : function(element, position, offsets, animate){ - var xy = this.getAlignToXY(element, position, offsets); - this.setXY(xy, this.preanim(arguments, 3)); - return this; - }, - - - anchorTo : function(el, alignment, offsets, animate, monitorScroll, callback){ - var action = function(){ - this.alignTo(el, alignment, offsets, animate); - Ext.callback(callback, this); - }; - Ext.EventManager.onWindowResize(action, this); - var tm = typeof monitorScroll; - if(tm != 'undefined'){ - Ext.EventManager.on(window, 'scroll', action, this, - {buffer: tm == 'number' ? monitorScroll : 50}); - } - action.call(this); // align immediately - return this; - }, - - clearOpacity : function(){ - if (window.ActiveXObject) { - if(typeof this.dom.style.filter == 'string' && (/alpha/i).test(this.dom.style.filter)){ - this.dom.style.filter = ""; - } - } else { - this.dom.style.opacity = ""; - this.dom.style["-moz-opacity"] = ""; - this.dom.style["-khtml-opacity"] = ""; - } - return this; - }, - - - hide : function(animate){ - this.setVisible(false, this.preanim(arguments, 0)); - return this; - }, - - - show : function(animate){ - this.setVisible(true, this.preanim(arguments, 0)); - return this; - }, - - - addUnits : function(size){ - return Ext.Element.addUnits(size, this.defaultUnit); - }, - - - beginMeasure : function(){ - var el = this.dom; - if(el.offsetWidth || el.offsetHeight){ - return this; // offsets work already - } - var changed = []; - var p = this.dom, b = document.body; // start with this element - while((!el.offsetWidth && !el.offsetHeight) && p && p.tagName && p != b){ - var pe = Ext.get(p); - if(pe.getStyle('display') == 'none'){ - changed.push({el: p, visibility: pe.getStyle("visibility")}); - p.style.visibility = "hidden"; - p.style.display = "block"; - } - p = p.parentNode; - } - this._measureChanged = changed; - return this; - - }, - - - endMeasure : function(){ - var changed = this._measureChanged; - if(changed){ - for(var i = 0, len = changed.length; i < len; i++) { - var r = changed[i]; - r.el.style.visibility = r.visibility; - r.el.style.display = "none"; - } - this._measureChanged = null; - } - return this; - }, - - - update : function(html, loadScripts, callback){ - if(typeof html == "undefined"){ - html = ""; - } - if(loadScripts !== true){ - this.dom.innerHTML = html; - if(typeof callback == "function"){ - callback(); - } - return this; - } - var id = Ext.id(); - var dom = this.dom; - - html += '<span id="' + id + '"></span>'; - - E.onAvailable(id, function(){ - var hd = document.getElementsByTagName("head")[0]; - var re = /(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig; - var srcRe = /\ssrc=([\'\"])(.*?)\1/i; - var typeRe = /\stype=([\'\"])(.*?)\1/i; - - var match; - while(match = re.exec(html)){ - var attrs = match[1]; - var srcMatch = attrs ? attrs.match(srcRe) : false; - if(srcMatch && srcMatch[2]){ - var s = document.createElement("script"); - s.src = srcMatch[2]; - var typeMatch = attrs.match(typeRe); - if(typeMatch && typeMatch[2]){ - s.type = typeMatch[2]; - } - hd.appendChild(s); - }else if(match[2] && match[2].length > 0){ - eval(match[2]); - } - } - var el = document.getElementById(id); - if(el){el.parentNode.removeChild(el);} - if(typeof callback == "function"){ - callback(); - } - }); - dom.innerHTML = html.replace(/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig, ""); - return this; - }, - - - load : function(){ - var um = this.getUpdateManager(); - um.update.apply(um, arguments); - return this; - }, - - - getUpdateManager : function(){ - if(!this.updateManager){ - this.updateManager = new Ext.UpdateManager(this); - } - return this.updateManager; - }, - - - unselectable : function(){ - this.dom.unselectable = "on"; - this.swallowEvent("selectstart", true); - this.applyStyles("-moz-user-select:none;-khtml-user-select:none;"); - this.addClass("x-unselectable"); - return this; - }, - - - getCenterXY : function(){ - return this.getAlignToXY(document, 'c-c'); - }, - - - center : function(centerIn){ - this.alignTo(centerIn || document, 'c-c'); - return this; - }, - - - isBorderBox : function(){ - return noBoxAdjust[this.dom.tagName.toLowerCase()] || Ext.isBorderBox; - }, - - - getBox : function(contentBox, local){ - var xy; - if(!local){ - xy = this.getXY(); - }else{ - var left = parseInt(this.getStyle("left"), 10) || 0; - var top = parseInt(this.getStyle("top"), 10) || 0; - xy = [left, top]; - } - var el = this.dom, w = el.offsetWidth, h = el.offsetHeight, bx; - if(!contentBox){ - bx = {x: xy[0], y: xy[1], 0: xy[0], 1: xy[1], width: w, height: h}; - }else{ - var l = this.getBorderWidth("l")+this.getPadding("l"); - var r = this.getBorderWidth("r")+this.getPadding("r"); - var t = this.getBorderWidth("t")+this.getPadding("t"); - var b = this.getBorderWidth("b")+this.getPadding("b"); - bx = {x: xy[0]+l, y: xy[1]+t, 0: xy[0]+l, 1: xy[1]+t, width: w-(l+r), height: h-(t+b)}; - } - bx.right = bx.x + bx.width; - bx.bottom = bx.y + bx.height; - return bx; - }, - - - getFrameWidth : function(sides, onlyContentBox){ - return onlyContentBox && Ext.isBorderBox ? 0 : (this.getPadding(sides) + this.getBorderWidth(sides)); - }, - - - setBox : function(box, adjust, animate){ - var w = box.width, h = box.height; - if((adjust && !this.autoBoxAdjust) && !this.isBorderBox()){ - w -= (this.getBorderWidth("lr") + this.getPadding("lr")); - h -= (this.getBorderWidth("tb") + this.getPadding("tb")); - } - this.setBounds(box.x, box.y, w, h, this.preanim(arguments, 2)); - return this; - }, - - - repaint : function(){ - var dom = this.dom; - this.addClass("x-repaint"); - setTimeout(function(){ - Ext.get(dom).removeClass("x-repaint"); - }, 1); - return this; - }, - - - getMargins : function(side){ - if(!side){ - return { - top: parseInt(this.getStyle("margin-top"), 10) || 0, - left: parseInt(this.getStyle("margin-left"), 10) || 0, - bottom: parseInt(this.getStyle("margin-bottom"), 10) || 0, - right: parseInt(this.getStyle("margin-right"), 10) || 0 - }; - }else{ - return this.addStyles(side, El.margins); - } - }, - - // private - addStyles : function(sides, styles){ - var val = 0; - for(var i = 0, len = sides.length; i < len; i++){ - var w = parseInt(this.getStyle(styles[sides.charAt(i)]), 10); - if(!isNaN(w)) val += w; - } - return val; - }, - - - createProxy : function(config, renderTo, matchBox){ - if(renderTo){ - renderTo = Ext.getDom(renderTo); - }else{ - renderTo = document.body; - } - config = typeof config == "object" ? - config : {tag : "div", cls: config}; - var proxy = Ext.DomHelper.append(renderTo, config, true); - if(matchBox){ - proxy.setBox(this.getBox()); - } - return proxy; - }, - - - mask : function(msg, msgCls){ - if(this.getStyle("position") == "static"){ - this.setStyle("position", "relative"); - } - if(!this._mask){ - this._mask = Ext.DomHelper.append(this.dom, {tag:"div", cls:"ext-el-mask"}, true); - } - this.addClass("x-masked"); - this._mask.setDisplayed(true); - if(typeof msg == 'string'){ - if(!this._maskMsg){ - this._maskMsg = Ext.DomHelper.append(this.dom, {tag:"div", cls:"ext-el-mask-msg", cn:{tag:'div'}}, true); - } - var mm = this._maskMsg; - mm.dom.className = msgCls ? "ext-el-mask-msg " + msgCls : "ext-el-mask-msg"; - mm.dom.firstChild.innerHTML = msg; - mm.setDisplayed(true); - mm.center(this); - } - return this._mask; - }, - - - unmask : function(removeEl){ - if(this._mask){ - if(removeEl === true){ - this._mask.remove(); - delete this._mask; - if(this._maskMsg){ - this._maskMsg.remove(); - delete this._maskMsg; - } - }else{ - this._mask.setDisplayed(false); - if(this._maskMsg){ - this._maskMsg.setDisplayed(false); - } - } - } - this.removeClass("x-masked"); - }, - - - isMasked : function(){ - return this._mask && this._mask.isVisible(); - }, - - - createShim : function(){ - var el = document.createElement('iframe'); - el.frameBorder = 'no'; - el.className = 'ext-shim'; - if(Ext.isIE && Ext.isSecure){ - el.src = Ext.SSL_SECURE_URL; - } - var shim = Ext.get(this.dom.parentNode.insertBefore(el, this.dom)); - shim.autoBoxAdjust = false; - return shim; - }, - - - remove : function(){ - if(this.dom.parentNode){ - this.dom.parentNode.removeChild(this.dom); - } - delete El.cache[this.dom.id]; - }, - - - addClassOnOver : function(className, preventFlicker){ - this.on("mouseover", function(){ - Ext.fly(this, '_internal').addClass(className); - }, this.dom); - var removeFn = function(e){ - if(preventFlicker !== true || !e.within(this, true)){ - Ext.fly(this, '_internal').removeClass(className); - } - }; - this.on("mouseout", removeFn, this.dom); - return this; - }, - - - addClassOnFocus : function(className){ - this.on("focus", function(){ - Ext.fly(this, '_internal').addClass(className); - }, this.dom); - this.on("blur", function(){ - Ext.fly(this, '_internal').removeClass(className); - }, this.dom); - return this; - }, - - addClassOnClick : function(className){ - var dom = this.dom; - this.on("mousedown", function(){ - Ext.fly(dom, '_internal').addClass(className); - var d = Ext.get(document); - var fn = function(){ - Ext.fly(dom, '_internal').removeClass(className); - d.removeListener("mouseup", fn); - }; - d.on("mouseup", fn); - }); - return this; - }, - - - swallowEvent : function(eventName, preventDefault){ - var fn = function(e){ - e.stopPropagation(); - if(preventDefault){ - e.preventDefault(); - } - }; - if(eventName instanceof Array){ - for(var i = 0, len = eventName.length; i < len; i++){ - this.on(eventName[i], fn); - } - return this; - } - this.on(eventName, fn); - return this; - }, - - - fitToParent : function(monitorResize, targetParent){ - var p = Ext.get(targetParent || this.dom.parentNode); - this.setSize(p.getComputedWidth()-p.getFrameWidth('lr'), p.getComputedHeight()-p.getFrameWidth('tb')); - if(monitorResize === true){ - Ext.EventManager.onWindowResize(this.fitToParent.createDelegate(this, [])); - } - return this; - }, - - - getNextSibling : function(){ - var n = this.dom.nextSibling; - while(n && n.nodeType != 1){ - n = n.nextSibling; - } - return n; - }, - - - getPrevSibling : function(){ - var n = this.dom.previousSibling; - while(n && n.nodeType != 1){ - n = n.previousSibling; - } - return n; - }, - - - - appendChild: function(el){ - el = Ext.get(el); - el.appendTo(this); - return this; - }, - - - createChild: function(config, insertBefore, returnDom){ - config = config || {tag:'div'}; - if(insertBefore){ - return Ext.DomHelper.insertBefore(insertBefore, config, returnDom !== true); - } - return Ext.DomHelper[!this.dom.firstChild ? 'overwrite' : 'append'](this.dom, config, returnDom !== true); - }, - - - appendTo: function(el){ - el = Ext.getDom(el); - el.appendChild(this.dom); - return this; - }, - - - insertBefore: function(el){ - el = Ext.getDom(el); - el.parentNode.insertBefore(this.dom, el); - return this; - }, - - - insertAfter: function(el){ - el = Ext.getDom(el); - el.parentNode.insertBefore(this.dom, el.nextSibling); - return this; - }, - - - insertFirst: function(el, returnDom){ - el = el || {}; - if(typeof el == 'object' && !el.nodeType){ // dh config - return this.createChild(el, this.dom.firstChild, returnDom); - }else{ - el = Ext.getDom(el); - this.dom.insertBefore(el, this.dom.firstChild); - return !returnDom ? Ext.get(el) : el; - } - }, - - - insertSibling: function(el, where, returnDom){ - where = where ? where.toLowerCase() : 'before'; - el = el || {}; - var rt, refNode = where == 'before' ? this.dom : this.dom.nextSibling; - - if(typeof el == 'object' && !el.nodeType){ // dh config - if(where == 'after' && !this.dom.nextSibling){ - rt = Ext.DomHelper.append(this.dom.parentNode, el, !returnDom); - }else{ - rt = Ext.DomHelper[where == 'after' ? 'insertAfter' : 'insertBefore'](this.dom, el, !returnDom); - } - - }else{ - rt = this.dom.parentNode.insertBefore(Ext.getDom(el), - where == 'before' ? this.dom : this.dom.nextSibling); - if(!returnDom){ - rt = Ext.get(rt); - } - } - return rt; - }, - - - wrap: function(config, returnDom){ - if(!config){ - config = {tag: "div"}; - } - var newEl = Ext.DomHelper.insertBefore(this.dom, config, !returnDom); - newEl.dom ? newEl.dom.appendChild(this.dom) : newEl.appendChild(this.dom); - return newEl; - }, - - - replace: function(el){ - el = Ext.get(el); - this.insertBefore(el); - el.remove(); - return this; - }, - - - insertHtml : function(where, html, returnEl){ - var el = Ext.DomHelper.insertHtml(where, this.dom, html); - return returnEl ? Ext.get(el) : el; - }, - - - set : function(o, useSet){ - var el = this.dom; - useSet = typeof useSet == 'undefined' ? (el.setAttribute ? true : false) : useSet; - for(var attr in o){ - if(attr == "style" || typeof o[attr] == "function") continue; - if(attr=="cls"){ - el.className = o["cls"]; - }else{ - if(useSet) el.setAttribute(attr, o[attr]); - else el[attr] = o[attr]; - } - } - Ext.DomHelper.applyStyles(el, o.style); - return this; - }, - - - addKeyListener : function(key, fn, scope){ - var config; - if(typeof key != "object" || key instanceof Array){ - config = { - key: key, - fn: fn, - scope: scope - }; - }else{ - config = { - key : key.key, - shift : key.shift, - ctrl : key.ctrl, - alt : key.alt, - fn: fn, - scope: scope - }; - } - return new Ext.KeyMap(this, config); - }, - - - addKeyMap : function(config){ - return new Ext.KeyMap(this, config); - }, - - - isScrollable : function(){ - var dom = this.dom; - return dom.scrollHeight > dom.clientHeight || dom.scrollWidth > dom.clientWidth; - }, - - - - scrollTo : function(side, value, animate){ - var prop = side.toLowerCase() == "left" ? "scrollLeft" : "scrollTop"; - if(!animate || !A){ - this.dom[prop] = value; - }else{ - var to = prop == "scrollLeft" ? [value, this.dom.scrollTop] : [this.dom.scrollLeft, value]; - this.anim({scroll: {"to": to}}, this.preanim(arguments, 2), 'scroll'); - } - return this; - }, - - - scroll : function(direction, distance, animate){ - if(!this.isScrollable()){ - return; - } - var el = this.dom; - var l = el.scrollLeft, t = el.scrollTop; - var w = el.scrollWidth, h = el.scrollHeight; - var cw = el.clientWidth, ch = el.clientHeight; - direction = direction.toLowerCase(); - var scrolled = false; - var a = this.preanim(arguments, 2); - switch(direction){ - case "l": - case "left": - if(w - l > cw){ - var v = Math.min(l + distance, w-cw); - this.scrollTo("left", v, a); - scrolled = true; - } - break; - case "r": - case "right": - if(l > 0){ - var v = Math.max(l - distance, 0); - this.scrollTo("left", v, a); - scrolled = true; - } - break; - case "t": - case "top": - case "up": - if(t > 0){ - var v = Math.max(t - distance, 0); - this.scrollTo("top", v, a); - scrolled = true; - } - break; - case "b": - case "bottom": - case "down": - if(h - t > ch){ - var v = Math.min(t + distance, h-ch); - this.scrollTo("top", v, a); - scrolled = true; - } - break; - } - return scrolled; - }, - - - translatePoints : function(x, y){ - if(typeof x == 'object' || x instanceof Array){ - y = x[1]; x = x[0]; - } - var p = this.getStyle('position'); - var o = this.getXY(); - - var l = parseInt(this.getStyle('left'), 10); - var t = parseInt(this.getStyle('top'), 10); - - if(isNaN(l)){ - l = (p == "relative") ? 0 : this.dom.offsetLeft; - } - if(isNaN(t)){ - t = (p == "relative") ? 0 : this.dom.offsetTop; - } - - return {left: (x - o[0] + l), top: (y - o[1] + t)}; - }, - - - getScroll : function(){ - var d = this.dom, doc = document; - if(d == doc || d == doc.body){ - var l = window.pageXOffset || doc.documentElement.scrollLeft || doc.body.scrollLeft || 0; - var t = window.pageYOffset || doc.documentElement.scrollTop || doc.body.scrollTop || 0; - return {left: l, top: t}; - }else{ - return {left: d.scrollLeft, top: d.scrollTop}; - } - }, - - - getColor : function(attr, defaultValue, prefix){ - var v = this.getStyle(attr); - if(!v || v == "transparent" || v == "inherit") { - return defaultValue; - } - var color = typeof prefix == "undefined" ? "#" : prefix; - if(v.substr(0, 4) == "rgb("){ - var rvs = v.slice(4, v.length -1).split(","); - for(var i = 0; i < 3; i++){ - var h = parseInt(rvs[i]).toString(16); - if(h < 16){ - h = "0" + h; - } - color += h; - } - } else { - if(v.substr(0, 1) == "#"){ - if(v.length == 4) { - for(var i = 1; i < 4; i++){ - var c = v.charAt(i); - color += c + c; - } - }else if(v.length == 7){ - color += v.substr(1); - } - } - } - return(color.length > 5 ? color.toLowerCase() : defaultValue); - }, - - - boxWrap : function(cls){ - cls = cls || 'x-box'; - var el = Ext.get(this.insertHtml('beforeBegin', String.format('<div class="{0}">'+El.boxMarkup+'</div>', cls))); - el.child('.'+cls+'-mc').dom.appendChild(this.dom); - return el; - }, - - - getAttributeNS : Ext.isIE ? function(ns, name){ - var d = this.dom; - var type = typeof d[ns+":"+name]; - if(type != 'undefined' && type != 'unknown'){ - return d[ns+":"+name]; - } - return d[name]; - } : function(ns, name){ - var d = this.dom; - return d.getAttributeNS(ns, name) || d.getAttribute(ns+":"+name) || d.getAttribute(name) || d[name]; - } -}; - -var ep = El.prototype; - - -ep.on = ep.addListener; - // backwards compat -ep.mon = ep.addListener; - - -ep.un = ep.removeListener; - - -ep.autoBoxAdjust = true; - -ep.autoDisplayMode = true; - -// private -El.unitPattern = /\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i; - -// private -El.addUnits = function(v, defaultUnit){ - if(v === "" || v == "auto"){ - return v; - } - if(v === undefined){ - return ''; - } - if(typeof v == "number" || !El.unitPattern.test(v)){ - return v + (defaultUnit || 'px'); - } - return v; -}; - -// special markup used throughout Ext when box wrapping elements -El.boxMarkup = '<div class="{0}-tl"><div class="{0}-tr"><div class="{0}-tc"></div></div></div><div class="{0}-ml"><div class="{0}-mr"><div class="{0}-mc"></div></div></div><div class="{0}-bl"><div class="{0}-br"><div class="{0}-bc"></div></div></div>'; - -El.VISIBILITY = 1; - -El.DISPLAY = 2; - -El.borders = {l: "border-left-width", r: "border-right-width", t: "border-top-width", b: "border-bottom-width"}; -El.paddings = {l: "padding-left", r: "padding-right", t: "padding-top", b: "padding-bottom"}; -El.margins = {l: "margin-left", r: "margin-right", t: "margin-top", b: "margin-bottom"}; - - - - -El.cache = {}; - -var docEl; - - -El.get = function(el){ - var ex, elm, id; - if(!el){ return null; } - if(typeof el == "string"){ // element id - if(!(elm = document.getElementById(el))){ - return null; - } - if(ex = El.cache[el]){ - ex.dom = elm; - }else{ - ex = El.cache[el] = new El(elm); - } - return ex; - }else if(el.tagName){ // dom element - if(!(id = el.id)){ - id = Ext.id(el); - } - if(ex = El.cache[id]){ - ex.dom = el; - }else{ - ex = El.cache[id] = new El(el); - } - return ex; - }else if(el instanceof El){ - if(el != docEl){ - el.dom = document.getElementById(el.id) || el.dom; // refresh dom element in case no longer valid, - // catch case where it hasn't been appended - El.cache[el.id] = el; // in case it was created directly with Element(), let's cache it - } - return el; - }else if(el.isComposite){ - return el; - }else if(el instanceof Array){ - return El.select(el); - }else if(el == document){ - // create a bogus element object representing the document object - if(!docEl){ - var f = function(){}; - f.prototype = El.prototype; - docEl = new f(); - docEl.dom = document; - } - return docEl; - } - return null; -}; - -El.uncache = function(el){ - for(var i = 0, a = arguments, len = a.length; i < len; i++) { - if(a[i]){ - delete El.cache[a[i].id || a[i]]; - } - } -}; - - -// Garbage collection - uncache elements/purge listeners on orphaned elements -// so we don't hold a reference and cause the browser to retain them -El.garbageCollect = function(){ - if(!Ext.enableGarbageCollector){ - clearInterval(El.collectorThread); - return; - } - for(var eid in El.cache){ - var el = El.cache[eid], d = el.dom; - // ------------------------------------------------------- - // Determining what is garbage: - // ------------------------------------------------------- - // !d - // dom node is null, definitely garbage - // ------------------------------------------------------- - // !d.parentNode - // no parentNode == direct orphan, definitely garbage - // ------------------------------------------------------- - // !d.offsetParent && !document.getElementById(eid) - // display none elements have no offsetParent so we will - // also try to look it up by it's id. However, check - // offsetParent first so we don't do unneeded lookups. - // This enables collection of elements that are not orphans - // directly, but somewhere up the line they have an orphan - // parent. - // ------------------------------------------------------- - if(!d || !d.parentNode || (!d.offsetParent && !document.getElementById(eid))){ - delete El.cache[eid]; - if(Ext.enableListenerCollection){ - Ext.lib.Dom.purgeElement(d); - } - } - } -} -El.collectorThreadId = setInterval(El.garbageCollect, 30000); - - -// dom is optional -El.Flyweight = function(dom){ - this.dom = dom; -}; -El.Flyweight.prototype = El.prototype; - -El._flyweights = {}; - -El.fly = function(el, named){ - named = named || '_global'; - el = Ext.getDom(el); - if(!el){ - return null; - } - if(!El._flyweights[named]){ - El._flyweights[named] = new El.Flyweight(); - } - El._flyweights[named].dom = el; - return El._flyweights[named]; -}; - - -Ext.get = El.get; - -Ext.fly = El.fly; - -// speedy lookup for elements never to box adjust -var noBoxAdjust = Ext.isStrict ? { - select:1 -} : { - input:1, select:1, textarea:1 -}; -if(Ext.isIE || Ext.isGecko){ - noBoxAdjust['button'] = 1; -} - - -Ext.EventManager.on(window, 'unload', function(){ - delete El.cache; - delete El._flyweights; -}); -})(); - - - -//Notifies Element that fx methods are available -Ext.enableFx = true; - - -Ext.Fx = { - - slideIn : function(anchor, o){ - var el = this.getFxEl(); - o = o || {}; - - el.queueFx(o, function(){ - - anchor = anchor || "t"; - - // fix display to visibility - this.fixDisplay(); - - // restore values after effect - var r = this.getFxRestore(); - var b = this.getBox(); - // fixed size for slide - this.setSize(b); - - // wrap if needed - var wrap = this.fxWrap(r.pos, o, "hidden"); - - var st = this.dom.style; - st.visibility = "visible"; - st.position = "absolute"; - - // clear out temp styles after slide and unwrap - var after = function(){ - el.fxUnwrap(wrap, r.pos, o); - st.width = r.width; - st.height = r.height; - el.afterFx(o); - }; - // time to calc the positions - var a, pt = {to: [b.x, b.y]}, bw = {to: b.width}, bh = {to: b.height}; - - switch(anchor.toLowerCase()){ - case "t": - wrap.setSize(b.width, 0); - st.left = st.bottom = "0"; - a = {height: bh}; - break; - case "l": - wrap.setSize(0, b.height); - st.right = st.top = "0"; - a = {width: bw}; - break; - case "r": - wrap.setSize(0, b.height); - wrap.setX(b.right); - st.left = st.top = "0"; - a = {width: bw, points: pt}; - break; - case "b": - wrap.setSize(b.width, 0); - wrap.setY(b.bottom); - st.left = st.top = "0"; - a = {height: bh, points: pt}; - break; - case "tl": - wrap.setSize(0, 0); - st.right = st.bottom = "0"; - a = {width: bw, height: bh}; - break; - case "bl": - wrap.setSize(0, 0); - wrap.setY(b.y+b.height); - st.right = st.top = "0"; - a = {width: bw, height: bh, points: pt}; - break; - case "br": - wrap.setSize(0, 0); - wrap.setXY([b.right, b.bottom]); - st.left = st.top = "0"; - a = {width: bw, height: bh, points: pt}; - break; - case "tr": - wrap.setSize(0, 0); - wrap.setX(b.x+b.width); - st.left = st.bottom = "0"; - a = {width: bw, height: bh, points: pt}; - break; - } - this.dom.style.visibility = "visible"; - wrap.show(); - - arguments.callee.anim = wrap.fxanim(a, - o, - 'motion', - .5, - 'easeOut', after); - }); - return this; - }, - - - slideOut : function(anchor, o){ - var el = this.getFxEl(); - o = o || {}; - - el.queueFx(o, function(){ - - anchor = anchor || "t"; - - // restore values after effect - var r = this.getFxRestore(); - - var b = this.getBox(); - // fixed size for slide - this.setSize(b); - - // wrap if needed - var wrap = this.fxWrap(r.pos, o, "visible"); - - var st = this.dom.style; - st.visibility = "visible"; - st.position = "absolute"; - - wrap.setSize(b); - - var after = function(){ - if(o.useDisplay){ - el.setDisplayed(false); - }else{ - el.hide(); - } - - el.fxUnwrap(wrap, r.pos, o); - - st.width = r.width; - st.height = r.height; - - el.afterFx(o); - }; - - var a, zero = {to: 0}; - switch(anchor.toLowerCase()){ - case "t": - st.left = st.bottom = "0"; - a = {height: zero}; - break; - case "l": - st.right = st.top = "0"; - a = {width: zero}; - break; - case "r": - st.left = st.top = "0"; - a = {width: zero, points: {to:[b.right, b.y]}}; - break; - case "b": - st.left = st.top = "0"; - a = {height: zero, points: {to:[b.x, b.bottom]}}; - break; - case "tl": - st.right = st.bottom = "0"; - a = {width: zero, height: zero}; - break; - case "bl": - st.right = st.top = "0"; - a = {width: zero, height: zero, points: {to:[b.x, b.bottom]}}; - break; - case "br": - st.left = st.top = "0"; - a = {width: zero, height: zero, points: {to:[b.x+b.width, b.bottom]}}; - break; - case "tr": - st.left = st.bottom = "0"; - a = {width: zero, height: zero, points: {to:[b.right, b.y]}}; - break; - } - - arguments.callee.anim = wrap.fxanim(a, - o, - 'motion', - .5, - "easeOut", after); - }); - return this; - }, - - - puff : function(o){ - var el = this.getFxEl(); - o = o || {}; - - el.queueFx(o, function(){ - this.clearOpacity(); - this.show(); - - // restore values after effect - var r = this.getFxRestore(); - var st = this.dom.style; - - var after = function(){ - if(o.useDisplay){ - el.setDisplayed(false); - }else{ - el.hide(); - } - - el.clearOpacity(); - - el.setPositioning(r.pos); - st.width = r.width; - st.height = r.height; - st.fontSize = ''; - el.afterFx(o); - }; - - var width = this.getWidth(); - var height = this.getHeight(); - - arguments.callee.anim = this.fxanim({ - width : {to: this.adjustWidth(width * 2)}, - height : {to: this.adjustHeight(height * 2)}, - points : {by: [-(width * .5), -(height * .5)]}, - opacity : {to: 0}, - fontSize: {to:200, unit: "%"} - }, - o, - 'motion', - .5, - "easeOut", after); - }); - return this; - }, - - - switchOff : function(o){ - var el = this.getFxEl(); - o = o || {}; - - el.queueFx(o, function(){ - this.clearOpacity(); - this.clip(); - - // restore values after effect - var r = this.getFxRestore(); - var st = this.dom.style; - - var after = function(){ - if(o.useDisplay){ - el.setDisplayed(false); - }else{ - el.hide(); - } - - el.clearOpacity(); - el.setPositioning(r.pos); - st.width = r.width; - st.height = r.height; - - el.afterFx(o); - }; - - this.fxanim({opacity:{to:0.3}}, null, null, .1, null, function(){ - this.clearOpacity(); - (function(){ - this.fxanim({ - height:{to:1}, - points:{by:[0, this.getHeight() * .5]} - }, o, 'motion', 0.3, 'easeIn', after); - }).defer(100, this); - }); - }); - return this; - }, - - - highlight : function(color, o){ - var el = this.getFxEl(); - o = o || {}; - - el.queueFx(o, function(){ - color = color || "ffff9c"; - attr = o.attr || "backgroundColor"; - - this.clearOpacity(); - this.show(); - - var origColor = this.getColor(attr); - var restoreColor = this.dom.style[attr]; - endColor = (o.endColor || origColor) || "ffffff"; - - var after = function(){ - el.dom.style[attr] = restoreColor; - el.afterFx(o); - }; - - var a = {}; - a[attr] = {from: color, to: endColor}; - arguments.callee.anim = this.fxanim(a, - o, - 'color', - 1, - 'easeIn', after); - }); - return this; - }, - - - frame : function(color, count, o){ - var el = this.getFxEl(); - o = o || {}; - - el.queueFx(o, function(){ - color = color || "#C3DAF9"; - if(color.length == 6){ - color = "#" + color; - } - count = count || 1; - duration = o.duration || 1; - this.show(); - - var b = this.getBox(); - var animFn = function(){ - var proxy = this.createProxy({ - tag:"div", - style:{ - visbility:"hidden", - position:"absolute", - "z-index":"35000", // yee haw - border:"0px solid " + color - } - }); - var scale = Ext.isBorderBox ? 2 : 1; - proxy.animate({ - top:{from:b.y, to:b.y - 20}, - left:{from:b.x, to:b.x - 20}, - borderWidth:{from:0, to:10}, - opacity:{from:1, to:0}, - height:{from:b.height, to:(b.height + (20*scale))}, - width:{from:b.width, to:(b.width + (20*scale))} - }, duration, function(){ - proxy.remove(); - }); - if(--count > 0){ - animFn.defer((duration/2)*1000, this); - }else{ - el.afterFx(o); - } - }; - animFn.call(this); - }); - return this; - }, - - - pause : function(seconds){ - var el = this.getFxEl(); - var o = {}; - - el.queueFx(o, function(){ - setTimeout(function(){ - el.afterFx(o); - }, seconds * 1000); - }); - return this; - }, - - - fadeIn : function(o){ - var el = this.getFxEl(); - o = o || {}; - el.queueFx(o, function(){ - this.setOpacity(0); - this.fixDisplay(); - this.dom.style.visibility = 'visible'; - var to = o.endOpacity || 1; - arguments.callee.anim = this.fxanim({opacity:{to:to}}, - o, null, .5, "easeOut", function(){ - if(to == 1){ - this.clearOpacity(); - } - el.afterFx(o); - }); - }); - return this; - }, - - - fadeOut : function(o){ - var el = this.getFxEl(); - o = o || {}; - el.queueFx(o, function(){ - arguments.callee.anim = this.fxanim({opacity:{to:o.endOpacity || 0}}, - o, null, .5, "easeOut", function(){ - if(this.visibilityMode == Ext.Element.DISPLAY || o.useDisplay){ - this.dom.style.display = "none"; - }else{ - this.dom.style.visibility = "hidden"; - } - this.clearOpacity(); - el.afterFx(o); - }); - }); - return this; - }, - - - scale : function(w, h, o){ - this.shift(Ext.apply({}, o, { - width: w, - height: h - })); - return this; - }, - - - shift : function(o){ - var el = this.getFxEl(); - o = o || {}; - el.queueFx(o, function(){ - var a = {}, w = o.width, h = o.height, x = o.x, y = o.y, op = o.opacity; - if(w !== undefined){ - a.width = {to: this.adjustWidth(w)}; - } - if(h !== undefined){ - a.height = {to: this.adjustHeight(h)}; - } - if(x !== undefined || y !== undefined){ - a.points = {to: [ - x !== undefined ? x : this.getX(), - y !== undefined ? y : this.getY() - ]}; - } - if(op !== undefined){ - a.opacity = {to: op}; - } - if(o.xy !== undefined){ - a.points = {to: o.xy}; - } - arguments.callee.anim = this.fxanim(a, - o, 'motion', .35, "easeOut", function(){ - el.afterFx(o); - }); - }); - return this; - }, - - - ghost : function(anchor, o){ - var el = this.getFxEl(); - o = o || {}; - - el.queueFx(o, function(){ - anchor = anchor || "b"; - - // restore values after effect - var r = this.getFxRestore(); - var w = this.getWidth(), - h = this.getHeight(); - - var st = this.dom.style; - - var after = function(){ - if(o.useDisplay){ - el.setDisplayed(false); - }else{ - el.hide(); - } - - el.clearOpacity(); - el.setPositioning(r.pos); - st.width = r.width; - st.height = r.height; - - el.afterFx(o); - }; - - var a = {opacity: {to: 0}, points: {}}, pt = a.points; - switch(anchor.toLowerCase()){ - case "t": - pt.by = [0, -h]; - break; - case "l": - pt.by = [-w, 0]; - break; - case "r": - pt.by = [w, 0]; - break; - case "b": - pt.by = [0, h]; - break; - case "tl": - pt.by = [-w, -h]; - break; - case "bl": - pt.by = [-w, h]; - break; - case "br": - pt.by = [w, h]; - break; - case "tr": - pt.by = [w, -h]; - break; - } - - arguments.callee.anim = this.fxanim(a, - o, - 'motion', - .5, - "easeOut", after); - }); - return this; - }, - - - syncFx : function(){ - this.fxDefaults = Ext.apply(this.fxDefaults || {}, { - block : false, - concurrent : true, - stopFx : false - }); - return this; - }, - - - sequenceFx : function(){ - this.fxDefaults = Ext.apply(this.fxDefaults || {}, { - block : false, - concurrent : false, - stopFx : false - }); - return this; - }, - - - nextFx : function(){ - var ef = this.fxQueue[0]; - if(ef){ - ef.call(this); - } - }, - - - hasActiveFx : function(){ - return this.fxQueue && this.fxQueue[0]; - }, - - - stopFx : function(){ - if(this.hasActiveFx()){ - var cur = this.fxQueue[0]; - if(cur && cur.anim && cur.anim.isAnimated()){ - this.fxQueue = [cur]; // clear out others - cur.anim.stop(true); - } - } - return this; - }, - - - beforeFx : function(o){ - if(this.hasActiveFx() && !o.concurrent){ - if(o.stopFx){ - this.stopFx(); - return true; - } - return false; - } - return true; - }, - - - hasFxBlock : function(){ - var q = this.fxQueue; - return q && q[0] && q[0].block; - }, - - - queueFx : function(o, fn){ - if(!this.fxQueue){ - this.fxQueue = []; - } - if(!this.hasFxBlock()){ - Ext.applyIf(o, this.fxDefaults); - if(!o.concurrent){ - var run = this.beforeFx(o); - fn.block = o.block; - this.fxQueue.push(fn); - if(run){ - this.nextFx(); - } - }else{ - fn.call(this); - } - } - return this; - }, - - - fxWrap : function(pos, o, vis){ - var wrap; - if(!o.wrap || !(wrap = Ext.get(o.wrap))){ - var wrapXY; - if(o.fixPosition){ - wrapXY = this.getXY(); - } - var div = document.createElement("div"); - div.style.visibility = vis; - wrap = Ext.get(this.dom.parentNode.insertBefore(div, this.dom)); - wrap.setPositioning(pos); - if(wrap.getStyle("position") == "static"){ - wrap.position("relative"); - } - this.clearPositioning('auto'); - wrap.clip(); - wrap.dom.appendChild(this.dom); - if(wrapXY){ - wrap.setXY(wrapXY); - } - } - return wrap; - }, - - - fxUnwrap : function(wrap, pos, o){ - this.clearPositioning(); - this.setPositioning(pos); - if(!o.wrap){ - wrap.dom.parentNode.insertBefore(this.dom, wrap.dom); - wrap.remove(); - } - }, - - - getFxRestore : function(){ - var st = this.dom.style; - return {pos: this.getPositioning(), width: st.width, height : st.height}; - }, - - - afterFx : function(o){ - if(o.afterStyle){ - this.applyStyles(o.afterStyle); - } - if(o.afterCls){ - this.addClass(o.afterCls); - } - if(o.remove === true){ - this.remove(); - } - Ext.callback(o.callback, o.scope, [this]); - if(!o.concurrent){ - this.fxQueue.shift(); - this.nextFx(); - } - }, - - - getFxEl : function(){ // support for composite element fx - return Ext.get(this.dom); - }, - - - fxanim : function(args, opt, animType, defaultDur, defaultEase, cb){ - animType = animType || 'run'; - opt = opt || {}; - var anim = Ext.lib.Anim[animType]( - this.dom, args, - (opt.duration || defaultDur) || .35, - (opt.easing || defaultEase) || 'easeOut', - function(){ - Ext.callback(cb, this); - }, - this - ); - opt.anim = anim; - return anim; - } -}; - -// backwords compat -Ext.Fx.resize = Ext.Fx.scale; - -//When included, Ext.Fx is automatically applied to Element so that all basic -//effects are available directly via the Element API -Ext.apply(Ext.Element.prototype, Ext.Fx); - - -Ext.CompositeElement = function(els){ - this.elements = []; - this.addElements(els); -}; -Ext.CompositeElement.prototype = { - isComposite: true, - addElements : function(els){ - if(!els) return this; - if(typeof els == "string"){ - els = Ext.Element.selectorFunction(els); - } - var yels = this.elements; - var index = yels.length-1; - for(var i = 0, len = els.length; i < len; i++) { - yels[++index] = Ext.get(els[i], true); - } - return this; - }, - invoke : function(fn, args){ - var els = this.elements; - for(var i = 0, len = els.length; i < len; i++) { - Ext.Element.prototype[fn].apply(els[i], args); - } - return this; - }, - - add : function(els){ - if(typeof els == "string"){ - this.addElements(Ext.Element.selectorFunction(els)); - }else if(els.length !== undefined){ - this.addElements(els); - }else{ - this.addElements([els]); - } - return this; - }, - - each : function(fn, scope){ - var els = this.elements; - for(var i = 0, len = els.length; i < len; i++){ - if(fn.call(scope || els[i], els[i], this, i) === false) { - break; - } - } - return this; - }, - - - item : function(index){ - return this.elements[index]; - } -}; -(function(){ -Ext.CompositeElement.createCall = function(proto, fnName){ - if(!proto[fnName]){ - proto[fnName] = function(){ - return this.invoke(fnName, arguments); - }; - } -}; -for(var fnName in Ext.Element.prototype){ - if(typeof Ext.Element.prototype[fnName] == "function"){ - Ext.CompositeElement.createCall(Ext.CompositeElement.prototype, fnName); - } -}; -})(); - - -Ext.CompositeElementLite = function(els){ - Ext.CompositeElementLite.superclass.constructor.call(this, els); - var flyEl = function(){}; - flyEl.prototype = Ext.Element.prototype; - this.el = new Ext.Element.Flyweight(); -}; -Ext.extend(Ext.CompositeElementLite, Ext.CompositeElement, { - addElements : function(els){ - if(els){ - if(els instanceof Array){ - this.elements = this.elements.concat(els); - }else{ - var yels = this.elements; - var index = yels.length-1; - for(var i = 0, len = els.length; i < len; i++) { - yels[++index] = els[i]; - } - } - } - return this; - }, - invoke : function(fn, args){ - var els = this.elements; - var el = this.el; - for(var i = 0, len = els.length; i < len; i++) { - el.dom = els[i]; - Ext.Element.prototype[fn].apply(el, args); - } - return this; - }, - - item : function(index){ - this.el.dom = this.elements[index]; - return this.el; - }, - - // fixes scope with flyweight - addListener : function(eventName, handler, scope, opt){ - var els = this.elements; - for(var i = 0, len = els.length; i < len; i++) { - Ext.EventManager.on(els[i], eventName, handler, scope || els[i], opt); - } - return this; - }, - - - each : function(fn, scope){ - var els = this.elements; - var el = this.el; - for(var i = 0, len = els.length; i < len; i++){ - el.dom = els[i]; - if(fn.call(scope || el, el, this, i) === false){ - break; - } - } - return this; - } -}); -Ext.CompositeElementLite.prototype.on = Ext.CompositeElementLite.prototype.addListener; -if(Ext.DomQuery){ - Ext.Element.selectorFunction = Ext.DomQuery.select; -} - -Ext.Element.select = function(selector, unique, root){ - var els; - if(typeof selector == "string"){ - els = Ext.Element.selectorFunction(selector, root); - }else if(selector.length !== undefined){ - els = selector; - }else{ - throw "Invalid selector"; - } - if(unique === true){ - return new Ext.CompositeElement(els); - }else{ - return new Ext.CompositeElementLite(els); - } -}; - -Ext.select = Ext.Element.select; - -Ext.UpdateManager = function(el, forceNew){ - el = Ext.get(el); - if(!forceNew && el.updateManager){ - return el.updateManager; - } - - this.el = el; - - this.defaultUrl = null; - - this.addEvents({ - - "beforeupdate": true, - - "update": true, - - "failure": true - }); - var d = Ext.UpdateManager.defaults; - - this.sslBlankUrl = d.sslBlankUrl; - - this.disableCaching = d.disableCaching; - - this.indicatorText = d.indicatorText; - - this.showLoadIndicator = d.showLoadIndicator; - - this.timeout = d.timeout; - - - this.loadScripts = d.loadScripts; - - - this.transaction = null; - - - this.autoRefreshProcId = null; - - this.refreshDelegate = this.refresh.createDelegate(this); - - this.updateDelegate = this.update.createDelegate(this); - - this.formUpdateDelegate = this.formUpdate.createDelegate(this); - - this.successDelegate = this.processSuccess.createDelegate(this); - - this.failureDelegate = this.processFailure.createDelegate(this); - - - this.renderer = new Ext.UpdateManager.BasicRenderer(); - - Ext.UpdateManager.superclass.constructor.call(this); -}; - -Ext.extend(Ext.UpdateManager, Ext.util.Observable, { - - getEl : function(){ - return this.el; - }, - - update : function(url, params, callback, discardUrl){ - if(this.fireEvent("beforeupdate", this.el, url, params) !== false){ - var method = this.method; - if(typeof url == "object"){ // must be config object - var cfg = url; - url = cfg.url; - params = params || cfg.params; - callback = callback || cfg.callback; - discardUrl = discardUrl || cfg.discardUrl; - if(callback && cfg.scope){ - callback = callback.createDelegate(cfg.scope); - } - if(typeof cfg.method != "undefined"){method = cfg.method;}; - if(typeof cfg.nocache != "undefined"){this.disableCaching = cfg.nocache;}; - if(typeof cfg.text != "undefined"){this.indicatorText = '<div class="loading-indicator">'+cfg.text+"</div>";}; - if(typeof cfg.scripts != "undefined"){this.loadScripts = cfg.scripts;}; - if(typeof cfg.timeout != "undefined"){this.timeout = cfg.timeout;}; - } - this.showLoading(); - if(!discardUrl){ - this.defaultUrl = url; - } - if(typeof url == "function"){ - url = url.call(this); - } - if(typeof params == "function"){ - params = params(); - } - if(params && typeof params != "string"){ // must be object - var buf = []; - for(var key in params){ - if(typeof params[key] != "function"){ - buf.push(encodeURIComponent(key), "=", encodeURIComponent(params[key]), "&"); - } - } - delete buf[buf.length-1]; - params = buf.join(""); - } - var cb = { - success: this.successDelegate, - failure: this.failureDelegate, - timeout: (this.timeout*1000), - argument: {"url": url, "form": null, "callback": callback, "params": params} - }; - method = method || (params ? "POST" : "GET"); - if(method == "GET"){ - url = this.prepareUrl(url); - } - this.transaction = Ext.lib.Ajax.request(method, url, cb, params); - } - }, - - - formUpdate : function(form, url, reset, callback){ - if(this.fireEvent("beforeupdate", this.el, form, url) !== false){ - formEl = Ext.getDom(form); - if(typeof url == "function"){ - url = url.call(this); - } - if(typeof params == "function"){ - params = params(); - } - url = url || formEl.action; - var cb = { - success: this.successDelegate, - failure: this.failureDelegate, - timeout: (this.timeout*1000), - argument: {"url": url, "form": formEl, "callback": callback, "reset": reset} - }; - var isUpload = false; - var enctype = formEl.getAttribute("enctype"); - if(enctype && enctype.toLowerCase() == "multipart/form-data"){ - isUpload = true; - cb.upload = this.successDelegate; - } - this.transaction = Ext.lib.Ajax.formRequest(formEl, url, cb, null, isUpload, this.sslBlankUrl); - this.showLoading.defer(1, this); - } - }, - - - refresh : function(callback){ - if(this.defaultUrl == null){ - return; - } - this.update(this.defaultUrl, null, callback, true); - }, - - - startAutoRefresh : function(interval, url, params, callback, refreshNow){ - if(refreshNow){ - this.update(url || this.defaultUrl, params, callback, true); - } - if(this.autoRefreshProcId){ - clearInterval(this.autoRefreshProcId); - } - this.autoRefreshProcId = setInterval(this.update.createDelegate(this, [url || this.defaultUrl, params, callback, true]), interval*1000); - }, - - - stopAutoRefresh : function(){ - if(this.autoRefreshProcId){ - clearInterval(this.autoRefreshProcId); - delete this.autoRefreshProcId; - } - }, - - isAutoRefreshing : function(){ - return this.autoRefreshProcId ? true : false; - }, - - showLoading : function(){ - if(this.showLoadIndicator){ - this.el.update(this.indicatorText); - } - }, - - - prepareUrl : function(url){ - if(this.disableCaching){ - var append = "_dc=" + (new Date().getTime()); - if(url.indexOf("?") !== -1){ - url += "&" + append; - }else{ - url += "?" + append; - } - } - return url; - }, - - - processSuccess : function(response){ - this.transaction = null; - if(response.argument.form && response.argument.reset){ - try{ // put in try/catch since some older FF releases had problems with this - response.argument.form.reset(); - }catch(e){} - } - if(this.loadScripts){ - this.renderer.render(this.el, response, this, - this.updateComplete.createDelegate(this, [response])); - }else{ - this.renderer.render(this.el, response, this); - this.updateComplete(response); - } - }, - - updateComplete : function(response){ - this.fireEvent("update", this.el, response); - if(typeof response.argument.callback == "function"){ - response.argument.callback(this.el, true, response); - } - }, - - - processFailure : function(response){ - this.transaction = null; - this.fireEvent("failure", this.el, response); - if(typeof response.argument.callback == "function"){ - response.argument.callback(this.el, false, response); - } - }, - - - setRenderer : function(renderer){ - this.renderer = renderer; - }, - - getRenderer : function(){ - return this.renderer; - }, - - - setDefaultUrl : function(defaultUrl){ - this.defaultUrl = defaultUrl; - }, - - - abort : function(){ - if(this.transaction){ - Ext.lib.Ajax.abort(this.transaction); - } - }, - - - isUpdating : function(){ - if(this.transaction){ - return Ext.lib.Ajax.isCallInProgress(this.transaction); - } - return false; - } -}); - - - Ext.UpdateManager.defaults = { - - timeout : 30, - - - loadScripts : false, - - - sslBlankUrl : (Ext.SSL_SECURE_URL || "javascript:false"), - - disableCaching : false, - - showLoadIndicator : true, - - indicatorText : '<div class="loading-indicator">Loading...</div>' - }; - - -Ext.UpdateManager.updateElement = function(el, url, params, options){ - var um = Ext.get(el, true).getUpdateManager(); - Ext.apply(um, options); - um.update(url, params, options ? options.callback : null); -}; -// alias for backwards compat -Ext.UpdateManager.update = Ext.UpdateManager.updateElement; - -Ext.UpdateManager.BasicRenderer = function(){}; - -Ext.UpdateManager.BasicRenderer.prototype = { - - render : function(el, response, updateManager, callback){ - el.update(response.responseText, updateManager.loadScripts, callback); - } -}; - - - - - -// private -Date.parseFunctions = {count:0}; -// private -Date.parseRegexes = []; -// private -Date.formatFunctions = {count:0}; - -// private -Date.prototype.dateFormat = function(format) { - if (Date.formatFunctions[format] == null) { - Date.createNewFormat(format); - } - var func = Date.formatFunctions[format]; - return this[func](); -}; - - - -Date.prototype.format = Date.prototype.dateFormat; - -// private -Date.createNewFormat = function(format) { - var funcName = "format" + Date.formatFunctions.count++; - Date.formatFunctions[format] = funcName; - var code = "Date.prototype." + funcName + " = function(){return "; - var special = false; - var ch = ''; - for (var i = 0; i < format.length; ++i) { - ch = format.charAt(i); - if (!special && ch == "\\") { - special = true; - } - else if (special) { - special = false; - code += "'" + String.escape(ch) + "' + "; - } - else { - code += Date.getFormatCode(ch); - } - } - eval(code.substring(0, code.length - 3) + ";}"); -}; - -// private -Date.getFormatCode = function(character) { - switch (character) { - case "d": - return "String.leftPad(this.getDate(), 2, '0') + "; - case "D": - return "Date.dayNames[this.getDay()].substring(0, 3) + "; - case "j": - return "this.getDate() + "; - case "l": - return "Date.dayNames[this.getDay()] + "; - case "S": - return "this.getSuffix() + "; - case "w": - return "this.getDay() + "; - case "z": - return "this.getDayOfYear() + "; - case "W": - return "this.getWeekOfYear() + "; - case "F": - return "Date.monthNames[this.getMonth()] + "; - case "m": - return "String.leftPad(this.getMonth() + 1, 2, '0') + "; - case "M": - return "Date.monthNames[this.getMonth()].substring(0, 3) + "; - case "n": - return "(this.getMonth() + 1) + "; - case "t": - return "this.getDaysInMonth() + "; - case "L": - return "(this.isLeapYear() ? 1 : 0) + "; - case "Y": - return "this.getFullYear() + "; - case "y": - return "('' + this.getFullYear()).substring(2, 4) + "; - case "a": - return "(this.getHours() < 12 ? 'am' : 'pm') + "; - case "A": - return "(this.getHours() < 12 ? 'AM' : 'PM') + "; - case "g": - return "((this.getHours() %12) ? this.getHours() % 12 : 12) + "; - case "G": - return "this.getHours() + "; - case "h": - return "String.leftPad((this.getHours() %12) ? this.getHours() % 12 : 12, 2, '0') + "; - case "H": - return "String.leftPad(this.getHours(), 2, '0') + "; - case "i": - return "String.leftPad(this.getMinutes(), 2, '0') + "; - case "s": - return "String.leftPad(this.getSeconds(), 2, '0') + "; - case "O": - return "this.getGMTOffset() + "; - case "T": - return "this.getTimezone() + "; - case "Z": - return "(this.getTimezoneOffset() * -60) + "; - default: - return "'" + String.escape(character) + "' + "; - } -}; - - -Date.parseDate = function(input, format) { - if (Date.parseFunctions[format] == null) { - Date.createParser(format); - } - var func = Date.parseFunctions[format]; - return Date[func](input); -}; - -// private -Date.createParser = function(format) { - var funcName = "parse" + Date.parseFunctions.count++; - var regexNum = Date.parseRegexes.length; - var currentGroup = 1; - Date.parseFunctions[format] = funcName; - - var code = "Date." + funcName + " = function(input){\n" - + "var y = -1, m = -1, d = -1, h = -1, i = -1, s = -1;\n" - + "var d = new Date();\n" - + "y = d.getFullYear();\n" - + "m = d.getMonth();\n" - + "d = d.getDate();\n" - + "var results = input.match(Date.parseRegexes[" + regexNum + "]);\n" - + "if (results && results.length > 0) {"; - var regex = ""; - - var special = false; - var ch = ''; - for (var i = 0; i < format.length; ++i) { - ch = format.charAt(i); - if (!special && ch == "\\") { - special = true; - } - else if (special) { - special = false; - regex += String.escape(ch); - } - else { - var obj = Date.formatCodeToRegex(ch, currentGroup); - currentGroup += obj.g; - regex += obj.s; - if (obj.g && obj.c) { - code += obj.c; - } - } - } - - code += "if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n" - + "{return new Date(y, m, d, h, i, s);}\n" - + "else if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n" - + "{return new Date(y, m, d, h, i);}\n" - + "else if (y > 0 && m >= 0 && d > 0 && h >= 0)\n" - + "{return new Date(y, m, d, h);}\n" - + "else if (y > 0 && m >= 0 && d > 0)\n" - + "{return new Date(y, m, d);}\n" - + "else if (y > 0 && m >= 0)\n" - + "{return new Date(y, m);}\n" - + "else if (y > 0)\n" - + "{return new Date(y);}\n" - + "}return null;}"; - - Date.parseRegexes[regexNum] = new RegExp("^" + regex + "$"); - eval(code); -}; - -// private -Date.formatCodeToRegex = function(character, currentGroup) { - switch (character) { - case "D": - return {g:0, - c:null, - s:"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)"}; - case "j": - case "d": - return {g:1, - c:"d = parseInt(results[" + currentGroup + "], 10);\n", - s:"(\\d{1,2})"}; - case "l": - return {g:0, - c:null, - s:"(?:" + Date.dayNames.join("|") + ")"}; - case "S": - return {g:0, - c:null, - s:"(?:st|nd|rd|th)"}; - case "w": - return {g:0, - c:null, - s:"\\d"}; - case "z": - return {g:0, - c:null, - s:"(?:\\d{1,3})"}; - case "W": - return {g:0, - c:null, - s:"(?:\\d{2})"}; - case "F": - return {g:1, - c:"m = parseInt(Date.monthNumbers[results[" + currentGroup + "].substring(0, 3)], 10);\n", - s:"(" + Date.monthNames.join("|") + ")"}; - case "M": - return {g:1, - c:"m = parseInt(Date.monthNumbers[results[" + currentGroup + "]], 10);\n", - s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"}; - case "n": - case "m": - return {g:1, - c:"m = parseInt(results[" + currentGroup + "], 10) - 1;\n", - s:"(\\d{1,2})"}; - case "t": - return {g:0, - c:null, - s:"\\d{1,2}"}; - case "L": - return {g:0, - c:null, - s:"(?:1|0)"}; - case "Y": - return {g:1, - c:"y = parseInt(results[" + currentGroup + "], 10);\n", - s:"(\\d{4})"}; - case "y": - return {g:1, - c:"var ty = parseInt(results[" + currentGroup + "], 10);\n" - + "y = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n", - s:"(\\d{1,2})"}; - case "a": - return {g:1, - c:"if (results[" + currentGroup + "] == 'am') {\n" - + "if (h == 12) { h = 0; }\n" - + "} else { if (h < 12) { h += 12; }}", - s:"(am|pm)"}; - case "A": - return {g:1, - c:"if (results[" + currentGroup + "] == 'AM') {\n" - + "if (h == 12) { h = 0; }\n" - + "} else { if (h < 12) { h += 12; }}", - s:"(AM|PM)"}; - case "g": - case "G": - case "h": - case "H": - return {g:1, - c:"h = parseInt(results[" + currentGroup + "], 10);\n", - s:"(\\d{1,2})"}; - case "i": - return {g:1, - c:"i = parseInt(results[" + currentGroup + "], 10);\n", - s:"(\\d{2})"}; - case "s": - return {g:1, - c:"s = parseInt(results[" + currentGroup + "], 10);\n", - s:"(\\d{2})"}; - case "O": - return {g:0, - c:null, - s:"[+-]\\d{4}"}; - case "T": - return {g:0, - c:null, - s:"[A-Z]{3}"}; - case "Z": - return {g:0, - c:null, - s:"[+-]\\d{1,5}"}; - default: - return {g:0, - c:null, - s:String.escape(character)}; - } -}; - - -Date.prototype.getTimezone = function() { - return this.toString().replace( - /^.*? ([A-Z]{3}) [0-9]{4}.*$/, "$1").replace( - /^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/, "$1$2$3"); -}; - - -Date.prototype.getGMTOffset = function() { - return (this.getTimezoneOffset() > 0 ? "-" : "+") - + String.leftPad(Math.floor(this.getTimezoneOffset() / 60), 2, "0") - + String.leftPad(this.getTimezoneOffset() % 60, 2, "0"); -}; - - -Date.prototype.getDayOfYear = function() { - var num = 0; - Date.daysInMonth[1] = this.isLeapYear() ? 29 : 28; - for (var i = 0; i < this.getMonth(); ++i) { - num += Date.daysInMonth[i]; - } - return num + this.getDate() - 1; -}; - - -Date.prototype.getWeekOfYear = function() { - // Skip to Thursday of this week - var now = this.getDayOfYear() + (4 - this.getDay()); - // Find the first Thursday of the year - var jan1 = new Date(this.getFullYear(), 0, 1); - var then = (7 - jan1.getDay() + 4); - return String.leftPad(((now - then) / 7) + 1, 2, "0"); -}; - - -Date.prototype.isLeapYear = function() { - var year = this.getFullYear(); - return ((year & 3) == 0 && (year % 100 || (year % 400 == 0 && year))); -}; - - -Date.prototype.getFirstDayOfMonth = function() { - var day = (this.getDay() - (this.getDate() - 1)) % 7; - return (day < 0) ? (day + 7) : day; -}; - - -Date.prototype.getLastDayOfMonth = function() { - var day = (this.getDay() + (Date.daysInMonth[this.getMonth()] - this.getDate())) % 7; - return (day < 0) ? (day + 7) : day; -}; - - - -Date.prototype.getFirstDateOfMonth = function() { - return new Date(this.getFullYear(), this.getMonth(), 1); -}; - - -Date.prototype.getLastDateOfMonth = function() { - return new Date(this.getFullYear(), this.getMonth(), this.getDaysInMonth()); -}; - -Date.prototype.getDaysInMonth = function() { - Date.daysInMonth[1] = this.isLeapYear() ? 29 : 28; - return Date.daysInMonth[this.getMonth()]; -}; - - -Date.prototype.getSuffix = function() { - switch (this.getDate()) { - case 1: - case 21: - case 31: - return "st"; - case 2: - case 22: - return "nd"; - case 3: - case 23: - return "rd"; - default: - return "th"; - } -}; - -// private -Date.daysInMonth = [31,28,31,30,31,30,31,31,30,31,30,31]; - - -Date.monthNames = - ["January", - "February", - "March", - "April", - "May", - "June", - "July", - "August", - "September", - "October", - "November", - "December"]; - - -Date.dayNames = - ["Sunday", - "Monday", - "Tuesday", - "Wednesday", - "Thursday", - "Friday", - "Saturday"]; - -// private -Date.y2kYear = 50; -// private -Date.monthNumbers = { - Jan:0, - Feb:1, - Mar:2, - Apr:3, - May:4, - Jun:5, - Jul:6, - Aug:7, - Sep:8, - Oct:9, - Nov:10, - Dec:11}; - - -Date.prototype.clone = function() { - return new Date(this.getTime()); -}; - - -Date.prototype.clearTime = function(clone){ - if(clone){ - return this.clone().clearTime(); - } - this.setHours(0); - this.setMinutes(0); - this.setSeconds(0); - this.setMilliseconds(0); - return this; -}; - -// private -// safari setMonth is broken -if(Ext.isSafari){ - Date.brokenSetMonth = Date.prototype.setMonth; - Date.prototype.setMonth = function(num){ - if(num <= -1){ - var n = Math.ceil(-num); - var back_year = Math.ceil(n/12); - var month = (n % 12) ? 12 - n % 12 : 0 ; - this.setFullYear(this.getFullYear() - back_year); - return Date.brokenSetMonth.call(this, month); - } else { - return Date.brokenSetMonth.apply(this, arguments); - } - }; -} - - -Date.MILLI = "ms"; - -Date.SECOND = "s"; - -Date.MINUTE = "mi"; - -Date.HOUR = "h"; - -Date.DAY = "d"; - -Date.MONTH = "mo"; - -Date.YEAR = "y"; - - -Date.prototype.add = function(interval, value){ - var d = this.clone(); - if (!interval || value === 0) return d; - switch(interval.toLowerCase()){ - case Date.MILLI: - d.setMilliseconds(this.getMilliseconds() + value); - break; - case Date.SECOND: - d.setSeconds(this.getSeconds() + value); - break; - case Date.MINUTE: - d.setMinutes(this.getMinutes() + value); - break; - case Date.HOUR: - d.setHours(this.getHours() + value); - break; - case Date.DAY: - d.setDate(this.getDate() + value); - break; - case Date.MONTH: - var day = this.getDate(); - if(day > 28){ - day = Math.min(day, this.getFirstDateOfMonth().add('mo', value).getLastDateOfMonth().getDate()); - } - d.setDate(day); - d.setMonth(this.getMonth() + value); - break; - case Date.YEAR: - d.setFullYear(this.getFullYear() + value); - break; - } - return d; -}; - -Ext.util.DelayedTask = function(fn, scope, args){ - var id = null, d, t; - - var call = function(){ - var now = new Date().getTime(); - if(now - t >= d){ - clearInterval(id); - id = null; - fn.apply(scope, args || []); - } - }; - - this.delay = function(delay, newFn, newScope, newArgs){ - if(id && delay != d){ - this.cancel(); - } - d = delay; - t = new Date().getTime(); - fn = newFn || fn; - scope = newScope || scope; - args = newArgs || args; - if(!id){ - id = setInterval(call, d); - } - }; - - - this.cancel = function(){ - if(id){ - clearInterval(id); - id = null; - } - }; -}; -Ext.util.TaskRunner = function(interval){ - interval = interval || 10; - var tasks = [], removeQueue = []; - var id = 0; - var running = false; - - var stopThread = function(){ - running = false; - clearInterval(id); - id = 0; - }; - - var startThread = function(){ - if(!running){ - running = true; - id = setInterval(runTasks, interval); - } - }; - - var removeTask = function(task){ - removeQueue.push(task); - if(task.onStop){ - task.onStop(); - } - }; - - var runTasks = function(){ - if(removeQueue.length > 0){ - for(var i = 0, len = removeQueue.length; i < len; i++){ - tasks.remove(removeQueue[i]); - } - removeQueue = []; - if(tasks.length < 1){ - stopThread(); - return; - } - } - var now = new Date().getTime(); - for(var i = 0, len = tasks.length; i < len; ++i){ - var t = tasks[i]; - var itime = now - t.taskRunTime; - if(t.interval <= itime){ - var rt = t.run.apply(t.scope || t, t.args || [++t.taskRunCount]); - t.taskRunTime = now; - if(rt === false || t.taskRunCount === t.repeat){ - removeTask(t); - return; - } - } - if(t.duration && t.duration <= (now - t.taskStartTime)){ - removeTask(t); - } - } - }; - - - this.start = function(task){ - tasks.push(task); - task.taskStartTime = new Date().getTime(); - task.taskRunTime = 0; - task.taskRunCount = 0; - startThread(); - return task; - }; - - this.stop = function(task){ - removeTask(task); - return task; - }; - - this.stopAll = function(){ - stopThread(); - for(var i = 0, len = tasks.length; i < len; i++){ - if(tasks[i].onStop){ - tasks[i].onStop(); - } - } - tasks = []; - removeQueue = []; - }; -}; - -Ext.TaskMgr = new Ext.util.TaskRunner(); - -Ext.util.MixedCollection = function(allowFunctions, keyFn){ - this.items = []; - this.map = {}; - this.keys = []; - this.length = 0; - this.addEvents({ - - "clear" : true, - - "add" : true, - - "replace" : true, - - "remove" : true, - "sort" : true - }); - this.allowFunctions = allowFunctions === true; - if(keyFn){ - this.getKey = keyFn; - } - Ext.util.MixedCollection.superclass.constructor.call(this); -}; - -Ext.extend(Ext.util.MixedCollection, Ext.util.Observable, { - allowFunctions : false, - - - add : function(key, o){ - if(arguments.length == 1){ - o = arguments[0]; - key = this.getKey(o); - } - if(typeof key == "undefined" || key === null){ - this.length++; - this.items.push(o); - this.keys.push(null); - }else{ - var old = this.map[key]; - if(old){ - return this.replace(key, o); - } - this.length++; - this.items.push(o); - this.map[key] = o; - this.keys.push(key); - } - this.fireEvent("add", this.length-1, o, key); - return o; - }, - - - getKey : function(o){ - return o.id; - }, - - - replace : function(key, o){ - if(arguments.length == 1){ - o = arguments[0]; - key = this.getKey(o); - } - var old = this.item(key); - if(typeof key == "undefined" || key === null || typeof old == "undefined"){ - return this.add(key, o); - } - var index = this.indexOfKey(key); - this.items[index] = o; - this.map[key] = o; - this.fireEvent("replace", key, old, o); - return o; - }, - - - addAll : function(objs){ - if(arguments.length > 1 || objs instanceof Array){ - var args = arguments.length > 1 ? arguments : objs; - for(var i = 0, len = args.length; i < len; i++){ - this.add(args[i]); - } - }else{ - for(var key in objs){ - if(this.allowFunctions || typeof objs[key] != "function"){ - this.add(objs[key], key); - } - } - } - }, - - - each : function(fn, scope){ - var items = [].concat(this.items); // each safe for removal - for(var i = 0, len = items.length; i < len; i++){ - if(fn.call(scope || items[i], items[i], i, len) === false){ - break; - } - } - }, - - - eachKey : function(fn, scope){ - for(var i = 0, len = this.keys.length; i < len; i++){ - fn.call(scope || window, this.keys[i], this.items[i], i, len); - } - }, - - - find : function(fn, scope){ - for(var i = 0, len = this.items.length; i < len; i++){ - if(fn.call(scope || window, this.items[i], this.keys[i])){ - return this.items[i]; - } - } - return null; - }, - - - insert : function(index, key, o){ - if(arguments.length == 2){ - o = arguments[1]; - key = this.getKey(o); - } - if(index >= this.length){ - return this.add(key, o); - } - this.length++; - this.items.splice(index, 0, o); - if(typeof key != "undefined" && key != null){ - this.map[key] = o; - } - this.keys.splice(index, 0, key); - this.fireEvent("add", index, o, key); - return o; - }, - - - remove : function(o){ - return this.removeAt(this.indexOf(o)); - }, - - - removeAt : function(index){ - if(index < this.length && index >= 0){ - this.length--; - var o = this.items[index]; - this.items.splice(index, 1); - var key = this.keys[index]; - if(typeof key != "undefined"){ - delete this.map[key]; - } - this.keys.splice(index, 1); - this.fireEvent("remove", o, key); - } - }, - - - removeKey : function(key){ - return this.removeAt(this.indexOfKey(key)); - }, - - - getCount : function(){ - return this.length; - }, - - - indexOf : function(o){ - if(!this.items.indexOf){ - for(var i = 0, len = this.items.length; i < len; i++){ - if(this.items[i] == o) return i; - } - return -1; - }else{ - return this.items.indexOf(o); - } - }, - - - indexOfKey : function(key){ - if(!this.keys.indexOf){ - for(var i = 0, len = this.keys.length; i < len; i++){ - if(this.keys[i] == key) return i; - } - return -1; - }else{ - return this.keys.indexOf(key); - } - }, - - - item : function(key){ - var item = typeof this.map[key] != "undefined" ? this.map[key] : this.items[key]; - return typeof item != 'function' || this.allowFunctions ? item : null; // for prototype! - }, - - - itemAt : function(index){ - return this.items[index]; - }, - - - key : function(key){ - return this.map[key]; - }, - - - contains : function(o){ - return this.indexOf(o) != -1; - }, - - - containsKey : function(key){ - return typeof this.map[key] != "undefined"; - }, - - - clear : function(){ - this.length = 0; - this.items = []; - this.keys = []; - this.map = {}; - this.fireEvent("clear"); - }, - - - first : function(){ - return this.items[0]; - }, - - - last : function(){ - return this.items[this.length-1]; - }, - - _sort : function(property, dir, fn){ - var dsc = String(dir).toUpperCase() == "DESC" ? -1 : 1; - fn = fn || function(a, b){ - return a-b; - }; - var c = [], k = this.keys, items = this.items; - for(var i = 0, len = items.length; i < len; i++){ - c[c.length] = {key: k[i], value: items[i], index: i}; - } - c.sort(function(a, b){ - var v = fn(a[property], b[property]) * dsc; - if(v == 0){ - v = (a.index < b.index ? -1 : 1); - } - return v; - }); - for(var i = 0, len = c.length; i < len; i++){ - items[i] = c[i].value; - k[i] = c[i].key; - } - this.fireEvent("sort", this); - }, - - - sort : function(dir, fn){ - this._sort("value", dir, fn); - }, - - - keySort : function(dir, fn){ - this._sort("key", dir, fn || function(a, b){ - return String(a).toUpperCase()-String(b).toUpperCase(); - }); - }, - - - getRange : function(start, end){ - var items = this.items; - if(items.length < 1){ - return []; - } - start = start || 0; - end = Math.min(typeof end == "undefined" ? this.length-1 : end, this.length-1); - var r = []; - if(start <= end){ - for(var i = start; i <= end; i++) { - r[r.length] = items[i]; - } - }else{ - for(var i = start; i >= end; i--) { - r[r.length] = items[i]; - } - } - return r; - }, - - - filter : function(property, value){ - if(!value.exec){ // not a regex - value = String(value); - if(value.length == 0){ - return this.clone(); - } - value = new RegExp("^" + Ext.escapeRe(value), "i"); - } - return this.filterBy(function(o){ - return o && value.test(o[property]); - }); - }, - - - filterBy : function(fn, scope){ - var r = new Ext.util.MixedCollection(); - r.getKey = this.getKey; - var k = this.keys, it = this.items; - for(var i = 0, len = it.length; i < len; i++){ - if(fn.call(scope||this, it[i], k[i])){ - r.add(k[i], it[i]); - } - } - return r; - }, - - - clone : function(){ - var r = new Ext.util.MixedCollection(); - var k = this.keys, it = this.items; - for(var i = 0, len = it.length; i < len; i++){ - r.add(k[i], it[i]); - } - r.getKey = this.getKey; - return r; - } -}); - -Ext.util.MixedCollection.prototype.get = Ext.util.MixedCollection.prototype.item; - -Ext.util.JSON = new (function(){ - var useHasOwn = {}.hasOwnProperty ? true : false; - - // crashes Safari in some instances - //var validRE = /^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/; - - var pad = function(n) { - return n < 10 ? "0" + n : n; - }; - - var m = { - "\b": '\\b', - "\t": '\\t', - "\n": '\\n', - "\f": '\\f', - "\r": '\\r', - '"' : '\\"', - "\\": '\\\\' - }; - - var encodeString = function(s){ - if (/["\\\x00-\x1f]/.test(s)) { - return '"' + s.replace(/([\x00-\x1f\\"])/g, function(a, b) { - var c = m[b]; - if(c){ - return c; - } - c = b.charCodeAt(); - return "\\u00" + - Math.floor(c / 16).toString(16) + - (c % 16).toString(16); - }) + '"'; - } - return '"' + s + '"'; - }; - - var encodeArray = function(o){ - var a = ["["], b, i, l = o.length, v; - for (i = 0; i < l; i += 1) { - v = o[i]; - switch (typeof v) { - case "undefined": - case "function": - case "unknown": - break; - default: - if (b) { - a.push(','); - } - a.push(v === null ? "null" : Ext.util.JSON.encode(v)); - b = true; - } - } - a.push("]"); - return a.join(""); - }; - - var encodeDate = function(o){ - return '"' + o.getFullYear() + "-" + - pad(o.getMonth() + 1) + "-" + - pad(o.getDate()) + "T" + - pad(o.getHours()) + ":" + - pad(o.getMinutes()) + ":" + - pad(o.getSeconds()) + '"'; - }; - - - this.encode = function(o){ - if(typeof o == "undefined" || o === null){ - return "null"; - }else if(o instanceof Array){ - return encodeArray(o); - }else if(o instanceof Date){ - return encodeDate(o); - }else if(typeof o == "string"){ - return encodeString(o); - }else if(typeof o == "number"){ - return isFinite(o) ? String(o) : "null"; - }else if(typeof o == "boolean"){ - return String(o); - }else { - var a = ["{"], b, i, v; - for (i in o) { - if(!useHasOwn || o.hasOwnProperty(i)) { - v = o[i]; - switch (typeof v) { - case "undefined": - case "function": - case "unknown": - break; - default: - if(b){ - a.push(','); - } - a.push(this.encode(i), ":", - v === null ? "null" : this.encode(v)); - b = true; - } - } - } - a.push("}"); - return a.join(""); - } - }; - - - this.decode = function(json){ - return eval("(" + json + ')'); - }; -})(); - -Ext.encode = Ext.util.JSON.encode; - -Ext.decode = Ext.util.JSON.decode; - - -Ext.util.Format = function(){ - var trimRe = /^\s+|\s+$/g; - return { - - ellipsis : function(value, len){ - if(value && value.length > len){ - return value.substr(0, len-3)+"..."; - } - return value; - }, - - - undef : function(value){ - return typeof value != "undefined" ? value : ""; - }, - - - htmlEncode : function(value){ - return !value ? value : String(value).replace(/&/g, "&").replace(/>/g, ">").replace(/</g, "<").replace(/"/g, """); - }, - - - trim : function(value){ - return String(value).replace(trimRe, ""); - }, - - - substr : function(value, start, length){ - return String(value).substr(start, length); - }, - - - lowercase : function(value){ - return String(value).toLowerCase(); - }, - - - uppercase : function(value){ - return String(value).toUpperCase(); - }, - - - capitalize : function(value){ - return !value ? value : value.charAt(0).toUpperCase() + value.substr(1).toLowerCase(); - }, - - // private - call : function(value, fn){ - if(arguments.length > 2){ - var args = Array.prototype.slice.call(arguments, 2); - args.unshift(value); - return eval(fn).apply(window, args); - }else{ - return eval(fn).call(window, value); - } - }, - - - usMoney : function(v){ - v = (Math.round((v-0)*100))/100; - v = (v == Math.floor(v)) ? v + ".00" : ((v*10 == Math.floor(v*10)) ? v + "0" : v); - return "$" + v ; - }, - - - date : function(v, format){ - if(!v){ - return ""; - } - if(!(v instanceof Date)){ - v = new Date(Date.parse(v)); - } - return v.dateFormat(format || "m/d/Y"); - }, - - - dateRenderer : function(format){ - return function(v){ - return Ext.util.Format.date(v, format); - }; - }, - - // private - stripTagsRE : /<\/?[^>]+>/gi, - - - stripTags : function(v){ - return !v ? v : String(v).replace(this.stripTagsRE, ""); - } - }; -}(); - -Ext.util.CSS = function(){ - var rules = null; - var doc = document; - - var camelRe = /(-[a-z])/gi; - var camelFn = function(m, a){ return a.charAt(1).toUpperCase(); }; - - return { - - createStyleSheet : function(cssText){ - var ss; - if(Ext.isIE){ - ss = doc.createStyleSheet(); - ss.cssText = cssText; - }else{ - var head = doc.getElementsByTagName("head")[0]; - var rules = doc.createElement("style"); - rules.setAttribute("type", "text/css"); - try{ - rules.appendChild(doc.createTextNode(cssText)); - }catch(e){ - rules.cssText = cssText; - } - head.appendChild(rules); - ss = rules.styleSheet ? rules.styleSheet : (rules.sheet || doc.styleSheets[doc.styleSheets.length-1]); - } - this.cacheStyleSheet(ss); - return ss; - }, - - - removeStyleSheet : function(id){ - var existing = doc.getElementById(id); - if(existing){ - existing.parentNode.removeChild(existing); - } - }, - - - swapStyleSheet : function(id, url){ - this.removeStyleSheet(id); - var ss = doc.createElement("link"); - ss.setAttribute("rel", "stylesheet"); - ss.setAttribute("type", "text/css"); - ss.setAttribute("id", id); - ss.setAttribute("href", url); - doc.getElementsByTagName("head")[0].appendChild(ss); - }, - - - refreshCache : function(){ - return this.getRules(true); - }, - - // private - cacheStyleSheet : function(ss){ - if(!rules){ - rules = {}; - } - try{// try catch for cross domain access issue - var ssRules = ss.cssRules || ss.rules; - for(var j = ssRules.length-1; j >= 0; --j){ - rules[ssRules[j].selectorText] = ssRules[j]; - } - }catch(e){} - }, - - - getRules : function(refreshCache){ - if(rules == null || refreshCache){ - rules = {}; - var ds = doc.styleSheets; - for(var i =0, len = ds.length; i < len; i++){ - try{ - this.cacheStyleSheet(ds[i]); - }catch(e){} - } - } - return rules; - }, - - - getRule : function(selector, refreshCache){ - var rs = this.getRules(refreshCache); - if(!(selector instanceof Array)){ - return rs[selector]; - } - for(var i = 0; i < selector.length; i++){ - if(rs[selector[i]]){ - return rs[selector[i]]; - } - } - return null; - }, - - - - updateRule : function(selector, property, value){ - if(!(selector instanceof Array)){ - var rule = this.getRule(selector); - if(rule){ - rule.style[property.replace(camelRe, camelFn)] = value; - return true; - } - }else{ - for(var i = 0; i < selector.length; i++){ - if(this.updateRule(selector[i], property, value)){ - return true; - } - } - } - return false; - } - }; -}(); - -Ext.util.ClickRepeater = function(el, config) -{ - this.el = Ext.get(el); - this.el.unselectable(); - - Ext.apply(this, config); - - this.addEvents({ - - "mousedown" : true, - - "click" : true, - - "mouseup" : true - }); - - this.el.on("mousedown", this.handleMouseDown, this); - if(this.preventDefault || this.stopDefault){ - this.el.on("click", function(e){ - if(this.preventDefault){ - e.preventDefault(); - } - if(this.stopDefault){ - e.stopEvent(); - } - }, this); - } - - // allow inline handler - if(this.handler){ - this.on("click", this.handler, this.scope || this); - } - - Ext.util.ClickRepeater.superclass.constructor.call(this); -}; - -Ext.extend(Ext.util.ClickRepeater, Ext.util.Observable, { - interval : 20, - delay: 250, - preventDefault : true, - stopDefault : false, - timer : 0, - docEl : Ext.get(document), - - // private - handleMouseDown : function(){ - clearTimeout(this.timer); - this.el.blur(); - if(this.pressClass){ - this.el.addClass(this.pressClass); - } - this.mousedownTime = new Date(); - - this.docEl.on("mouseup", this.handleMouseUp, this); - this.el.on("mouseout", this.handleMouseOut, this); - - this.fireEvent("mousedown", this); - this.fireEvent("click", this); - - this.timer = this.click.defer(this.delay || this.interval, this); - }, - - // private - click : function(){ - this.fireEvent("click", this); - this.timer = this.click.defer(this.getInterval(), this); - }, - - // private - getInterval: function(){ - if(!this.accelerate){ - return this.interval; - } - var pressTime = this.mousedownTime.getElapsed(); - if(pressTime < 500){ - return 400; - }else if(pressTime < 1700){ - return 320; - }else if(pressTime < 2600){ - return 250; - }else if(pressTime < 3500){ - return 180; - }else if(pressTime < 4400){ - return 140; - }else if(pressTime < 5300){ - return 80; - }else if(pressTime < 6200){ - return 50; - }else{ - return 10; - } - }, - - // private - handleMouseOut : function(){ - clearTimeout(this.timer); - if(this.pressClass){ - this.el.removeClass(this.pressClass); - } - this.el.on("mouseover", this.handleMouseReturn, this); - }, - - // private - handleMouseReturn : function(){ - this.el.un("mouseover", this.handleMouseReturn); - if(this.pressClass){ - this.el.addClass(this.pressClass); - } - this.click(); - }, - - // private - handleMouseUp : function(){ - clearTimeout(this.timer); - this.el.un("mouseover", this.handleMouseReturn); - this.el.un("mouseout", this.handleMouseOut); - this.docEl.un("mouseup", this.handleMouseUp); - this.el.removeClass(this.pressClass); - this.fireEvent("mouseup", this); - } -}); - -Ext.KeyNav = function(el, config){ - this.el = Ext.get(el); - Ext.apply(this, config); - if(!this.disabled){ - this.disabled = true; - this.enable(); - } -}; - -Ext.KeyNav.prototype = { - disabled : false, - defaultEventAction: "stopEvent", - - prepareEvent : function(e){ - var k = e.getKey(); - var h = this.keyToHandler[k]; - //if(h && this[h]){ - // e.stopPropagation(); - //} - if(Ext.isSafari && h && k >= 37 && k <= 40){ - e.stopEvent(); - } - }, - - relay : function(e){ - var k = e.getKey(); - var h = this.keyToHandler[k]; - if(h && this[h]){ - if(this.doRelay(e, this[h], h) !== true){ - e[this.defaultEventAction](); - } - } - }, - - doRelay : function(e, h, hname){ - return h.call(this.scope || this, e); - }, - - // possible handlers - enter : false, - left : false, - right : false, - up : false, - down : false, - tab : false, - esc : false, - pageUp : false, - pageDown : false, - del : false, - home : false, - end : false, - - // quick lookup hash - keyToHandler : { - 37 : "left", - 39 : "right", - 38 : "up", - 40 : "down", - 33 : "pageUp", - 34 : "pageDown", - 46 : "del", - 36 : "home", - 35 : "end", - 13 : "enter", - 27 : "esc", - 9 : "tab" - }, - - - enable: function(){ - if(this.disabled){ - // ie won't do special keys on keypress, no one else will repeat keys with keydown - // the EventObject will normalize Safari automatically - if(Ext.isIE){ - this.el.on("keydown", this.relay, this); - }else{ - this.el.on("keydown", this.prepareEvent, this); - this.el.on("keypress", this.relay, this); - } - this.disabled = false; - } - }, - - - disable: function(){ - if(!this.disabled){ - if(Ext.isIE){ - this.el.un("keydown", this.relay); - }else{ - this.el.un("keydown", this.prepareEvent); - this.el.un("keypress", this.relay); - } - this.disabled = true; - } - } -}; - -Ext.KeyMap = function(el, config, eventName){ - this.el = Ext.get(el); - this.eventName = eventName || "keydown"; - this.bindings = []; - if(config instanceof Array){ - for(var i = 0, len = config.length; i < len; i++){ - this.addBinding(config[i]); - } - }else{ - this.addBinding(config); - } - this.keyDownDelegate = Ext.EventManager.wrap(this.handleKeyDown, this, true); - this.enable(); -}; - -Ext.KeyMap.prototype = { - - stopEvent : false, - - - addBinding : function(config){ - var keyCode = config.key, - shift = config.shift, - ctrl = config.ctrl, - alt = config.alt, - fn = config.fn, - scope = config.scope; - if(typeof keyCode == "string"){ - var ks = []; - var keyString = keyCode.toUpperCase(); - for(var j = 0, len = keyString.length; j < len; j++){ - ks.push(keyString.charCodeAt(j)); - } - keyCode = ks; - } - var keyArray = keyCode instanceof Array; - var handler = function(e){ - if((!shift || e.shiftKey) && (!ctrl || e.ctrlKey) && (!alt || e.altKey)){ - var k = e.getKey(); - if(keyArray){ - for(var i = 0, len = keyCode.length; i < len; i++){ - if(keyCode[i] == k){ - if(this.stopEvent){ - e.stopEvent(); - } - fn.call(scope || window, k, e); - return; - } - } - }else{ - if(k == keyCode){ - if(this.stopEvent){ - e.stopEvent(); - } - fn.call(scope || window, k, e); - } - } - } - }; - this.bindings.push(handler); - }, - - // private - handleKeyDown : function(e){ - if(this.enabled){ //just in case - var b = this.bindings; - for(var i = 0, len = b.length; i < len; i++){ - b[i].call(this, e); - } - } - }, - - - isEnabled : function(){ - return this.enabled; - }, - - - enable: function(){ - if(!this.enabled){ - this.el.on(this.eventName, this.keyDownDelegate); - this.enabled = true; - } - }, - - - disable: function(){ - if(this.enabled){ - this.el.removeListener(this.eventName, this.keyDownDelegate); - this.enabled = false; - } - } -}; - -Ext.util.TextMetrics = function(){ - var shared; - return { - - measure : function(el, text, fixedWidth){ - if(!shared){ - shared = Ext.util.TextMetrics.Instance(el, fixedWidth); - } - shared.bind(el); - shared.setFixedWidth(fixedWidth || 'auto'); - return shared.getSize(text); - }, - - - createInstance : function(el, fixedWidth){ - return Ext.util.TextMetrics.Instance(el, fixedWidth); - } - }; -}(); - -Ext.util.TextMetrics.Instance = function(bindTo, fixedWidth){ - var ml = new Ext.Element(document.createElement('div')); - document.body.appendChild(ml.dom); - ml.position('absolute'); - ml.setLeftTop(-1000, -1000); - ml.hide(); - - if(fixedWidth){ - ml.setWidth(fixedWidth); - } - - var instance = { - - getSize : function(text){ - ml.update(text); - var s = ml.getSize(); - ml.update(''); - return s; - }, - - - bind : function(el){ - ml.setStyle( - Ext.fly(el).getStyles('font-size','font-style', 'font-weight', 'font-family','line-height') - ); - }, - - - setFixedWidth : function(width){ - ml.setWidth(width); - }, - - - getWidth : function(text){ - ml.dom.style.width = 'auto'; - return this.getSize(text).width; - }, - - - getHeight : function(text){ - return this.getSize(text).height; - } - }; - - instance.bind(bindTo); - - return instance; -}; - -// backwards compat -Ext.Element.measureText = Ext.util.TextMetrics.measure; - -Ext.state.Provider = function(){ - Ext.state.Provider.superclass.constructor.call(this); - - this.addEvents({ - "statechange": true - }); - this.state = {}; - Ext.state.Provider.superclass.constructor.call(this); -}; -Ext.extend(Ext.state.Provider, Ext.util.Observable, { - - get : function(name, defaultValue){ - return typeof this.state[name] == "undefined" ? - defaultValue : this.state[name]; - }, - - - clear : function(name){ - delete this.state[name]; - this.fireEvent("statechange", this, name, null); - }, - - - set : function(name, value){ - this.state[name] = value; - this.fireEvent("statechange", this, name, value); - }, - - - decodeValue : function(cookie){ - var re = /^(a|n|d|b|s|o)\:(.*)$/; - var matches = re.exec(unescape(cookie)); - if(!matches || !matches[1]) return; // non state cookie - var type = matches[1]; - var v = matches[2]; - switch(type){ - case "n": - return parseFloat(v); - case "d": - return new Date(Date.parse(v)); - case "b": - return (v == "1"); - case "a": - var all = []; - var values = v.split("^"); - for(var i = 0, len = values.length; i < len; i++){ - all.push(this.decodeValue(values[i])); - } - return all; - case "o": - var all = {}; - var values = v.split("^"); - for(var i = 0, len = values.length; i < len; i++){ - var kv = values[i].split("="); - all[kv[0]] = this.decodeValue(kv[1]); - } - return all; - default: - return v; - } - }, - - - encodeValue : function(v){ - var enc; - if(typeof v == "number"){ - enc = "n:" + v; - }else if(typeof v == "boolean"){ - enc = "b:" + (v ? "1" : "0"); - }else if(v instanceof Date){ - enc = "d:" + v.toGMTString(); - }else if(v instanceof Array){ - var flat = ""; - for(var i = 0, len = v.length; i < len; i++){ - flat += this.encodeValue(v[i]); - if(i != len-1) flat += "^"; - } - enc = "a:" + flat; - }else if(typeof v == "object"){ - var flat = ""; - for(var key in v){ - if(typeof v[key] != "function"){ - flat += key + "=" + this.encodeValue(v[key]) + "^"; - } - } - enc = "o:" + flat.substring(0, flat.length-1); - }else{ - enc = "s:" + v; - } - return escape(enc); - } -}); - - -Ext.state.Manager = function(){ - var provider = new Ext.state.Provider(); - - return { - - setProvider : function(stateProvider){ - provider = stateProvider; - }, - - - get : function(key, defaultValue){ - return provider.get(key, defaultValue); - }, - - - set : function(key, value){ - provider.set(key, value); - }, - - - clear : function(key){ - provider.clear(key); - }, - - - getProvider : function(){ - return provider; - } - }; -}(); - - -Ext.state.CookieProvider = function(config){ - Ext.state.CookieProvider.superclass.constructor.call(this); - this.path = "/"; - this.expires = new Date(new Date().getTime()+(1000*60*60*24*7)); //7 days - this.domain = null; - this.secure = false; - Ext.apply(this, config); - this.state = this.readCookies(); -}; - -Ext.extend(Ext.state.CookieProvider, Ext.state.Provider, { - // private - set : function(name, value){ - if(typeof value == "undefined" || value === null){ - this.clear(name); - return; - } - this.setCookie(name, value); - Ext.state.CookieProvider.superclass.set.call(this, name, value); - }, - - // private - clear : function(name){ - this.clearCookie(name); - Ext.state.CookieProvider.superclass.clear.call(this, name); - }, - - // private - readCookies : function(){ - var cookies = {}; - var c = document.cookie + ";"; - var re = /\s?(.*?)=(.*?);/g; - var matches; - while((matches = re.exec(c)) != null){ - var name = matches[1]; - var value = matches[2]; - if(name && name.substring(0,3) == "ys-"){ - cookies[name.substr(3)] = this.decodeValue(value); - } - } - return cookies; - }, - - // private - setCookie : function(name, value){ - document.cookie = "ys-"+ name + "=" + this.encodeValue(value) + - ((this.expires == null) ? "" : ("; expires=" + this.expires.toGMTString())) + - ((this.path == null) ? "" : ("; path=" + this.path)) + - ((this.domain == null) ? "" : ("; domain=" + this.domain)) + - ((this.secure == true) ? "; secure" : ""); - }, - - // private - clearCookie : function(name){ - document.cookie = "ys-" + name + "=null; expires=Thu, 01-Jan-70 00:00:01 GMT" + - ((this.path == null) ? "" : ("; path=" + this.path)) + - ((this.domain == null) ? "" : ("; domain=" + this.domain)) + - ((this.secure == true) ? "; secure" : ""); - } -}); - - - -(function() { - -var Event=Ext.EventManager; -var Dom=Ext.lib.Dom; - - -Ext.dd.DragDrop = function(id, sGroup, config) { - if (id) { - this.init(id, sGroup, config); - } -}; - -Ext.dd.DragDrop.prototype = { - - - id: null, - - - config: null, - - - dragElId: null, - - - handleElId: null, - - - invalidHandleTypes: null, - - - invalidHandleIds: null, - - - invalidHandleClasses: null, - - - startPageX: 0, - - - startPageY: 0, - - - groups: null, - - - locked: false, - - - lock: function() { this.locked = true; }, - - - unlock: function() { this.locked = false; }, - - - isTarget: true, - - - padding: null, - - - _domRef: null, - - - __ygDragDrop: true, - - - constrainX: false, - - - constrainY: false, - - - minX: 0, - - - maxX: 0, - - - minY: 0, - - - maxY: 0, - - - maintainOffset: false, - - - xTicks: null, - - - yTicks: null, - - - primaryButtonOnly: true, - - - available: false, - - - hasOuterHandles: false, - - - b4StartDrag: function(x, y) { }, - - - startDrag: function(x, y) { }, - - - b4Drag: function(e) { }, - - - onDrag: function(e) { }, - - - onDragEnter: function(e, id) { }, - - - b4DragOver: function(e) { }, - - - onDragOver: function(e, id) { }, - - - b4DragOut: function(e) { }, - - - onDragOut: function(e, id) { }, - - - b4DragDrop: function(e) { }, - - - onDragDrop: function(e, id) { }, - - - onInvalidDrop: function(e) { }, - - - b4EndDrag: function(e) { }, - - - endDrag: function(e) { }, - - - b4MouseDown: function(e) { }, - - - onMouseDown: function(e) { }, - - - onMouseUp: function(e) { }, - - - onAvailable: function () { - }, - - - defaultPadding : {left:0, right:0, top:0, bottom:0}, - - - constrainTo : function(constrainTo, pad, inContent){ - if(typeof pad == "number"){ - pad = {left: pad, right:pad, top:pad, bottom:pad}; - } - pad = pad || this.defaultPadding; - var b = Ext.get(this.getEl()).getBox(); - var ce = Ext.get(constrainTo); - var s = ce.getScroll(); - var c, cd = ce.dom; - if(cd == document.body){ - c = { x: s.left, y: s.top, width: Ext.lib.Dom.getViewWidth(), height: Ext.lib.Dom.getViewHeight()}; - }else{ - xy = ce.getXY(); - c = {x : xy[0]+s.left, y: xy[1]+s.top, width: cd.clientWidth, height: cd.clientHeight}; - } - - - var topSpace = b.y - c.y; - var leftSpace = b.x - c.x; - - this.resetConstraints(); - this.setXConstraint(leftSpace - (pad.left||0), // left - c.width - leftSpace - b.width - (pad.right||0) //right - ); - this.setYConstraint(topSpace - (pad.top||0), //top - c.height - topSpace - b.height - (pad.bottom||0) //bottom - ); - }, - - - getEl: function() { - if (!this._domRef) { - this._domRef = Ext.getDom(this.id); - } - - return this._domRef; - }, - - - getDragEl: function() { - return Ext.getDom(this.dragElId); - }, - - - init: function(id, sGroup, config) { - this.initTarget(id, sGroup, config); - Event.on(this.id, "mousedown", this.handleMouseDown, this); - // Event.on(this.id, "selectstart", Event.preventDefault); - }, - - - initTarget: function(id, sGroup, config) { - - // configuration attributes - this.config = config || {}; - - // create a local reference to the drag and drop manager - this.DDM = Ext.dd.DDM; - // initialize the groups array - this.groups = {}; - - // assume that we have an element reference instead of an id if the - // parameter is not a string - if (typeof id !== "string") { - id = Ext.id(id); - } - - // set the id - this.id = id; - - // add to an interaction group - this.addToGroup((sGroup) ? sGroup : "default"); - - // We don't want to register this as the handle with the manager - // so we just set the id rather than calling the setter. - this.handleElId = id; - - // the linked element is the element that gets dragged by default - this.setDragElId(id); - - // by default, clicked anchors will not start drag operations. - this.invalidHandleTypes = { A: "A" }; - this.invalidHandleIds = {}; - this.invalidHandleClasses = []; - - this.applyConfig(); - - this.handleOnAvailable(); - }, - - - applyConfig: function() { - - // configurable properties: - // padding, isTarget, maintainOffset, primaryButtonOnly - this.padding = this.config.padding || [0, 0, 0, 0]; - this.isTarget = (this.config.isTarget !== false); - this.maintainOffset = (this.config.maintainOffset); - this.primaryButtonOnly = (this.config.primaryButtonOnly !== false); - - }, - - - handleOnAvailable: function() { - this.available = true; - this.resetConstraints(); - this.onAvailable(); - }, - - - setPadding: function(iTop, iRight, iBot, iLeft) { - // this.padding = [iLeft, iRight, iTop, iBot]; - if (!iRight && 0 !== iRight) { - this.padding = [iTop, iTop, iTop, iTop]; - } else if (!iBot && 0 !== iBot) { - this.padding = [iTop, iRight, iTop, iRight]; - } else { - this.padding = [iTop, iRight, iBot, iLeft]; - } - }, - - - setInitPosition: function(diffX, diffY) { - var el = this.getEl(); - - if (!this.DDM.verifyEl(el)) { - return; - } - - var dx = diffX || 0; - var dy = diffY || 0; - - var p = Dom.getXY( el ); - - this.initPageX = p[0] - dx; - this.initPageY = p[1] - dy; - - this.lastPageX = p[0]; - this.lastPageY = p[1]; - - - this.setStartPosition(p); - }, - - - setStartPosition: function(pos) { - var p = pos || Dom.getXY( this.getEl() ); - this.deltaSetXY = null; - - this.startPageX = p[0]; - this.startPageY = p[1]; - }, - - - addToGroup: function(sGroup) { - this.groups[sGroup] = true; - this.DDM.regDragDrop(this, sGroup); - }, - - - removeFromGroup: function(sGroup) { - if (this.groups[sGroup]) { - delete this.groups[sGroup]; - } - - this.DDM.removeDDFromGroup(this, sGroup); - }, - - - setDragElId: function(id) { - this.dragElId = id; - }, - - - setHandleElId: function(id) { - if (typeof id !== "string") { - id = Ext.id(id); - } - this.handleElId = id; - this.DDM.regHandle(this.id, id); - }, - - - setOuterHandleElId: function(id) { - if (typeof id !== "string") { - id = Ext.id(id); - } - Event.on(id, "mousedown", - this.handleMouseDown, this); - this.setHandleElId(id); - - this.hasOuterHandles = true; - }, - - - unreg: function() { - Event.un(this.id, "mousedown", - this.handleMouseDown); - this._domRef = null; - this.DDM._remove(this); - }, - - destroy : function(){ - this.unreg(); - }, - - - isLocked: function() { - return (this.DDM.isLocked() || this.locked); - }, - - - handleMouseDown: function(e, oDD){ - if (this.primaryButtonOnly && e.button != 0) { - return; - } - - if (this.isLocked()) { - return; - } - - this.DDM.refreshCache(this.groups); - - var pt = new Ext.lib.Point(Ext.lib.Event.getPageX(e), Ext.lib.Event.getPageY(e)); - if (!this.hasOuterHandles && !this.DDM.isOverTarget(pt, this) ) { - } else { - if (this.clickValidator(e)) { - - // set the initial element position - this.setStartPosition(); - - - this.b4MouseDown(e); - this.onMouseDown(e); - - this.DDM.handleMouseDown(e, this); - - this.DDM.stopEvent(e); - } else { - - - } - } - }, - - clickValidator: function(e) { - var target = Ext.lib.Event.getTarget(e); - return ( this.isValidHandleChild(target) && - (this.id == this.handleElId || - this.DDM.handleWasClicked(target, this.id)) ); - }, - - - addInvalidHandleType: function(tagName) { - var type = tagName.toUpperCase(); - this.invalidHandleTypes[type] = type; - }, - - - addInvalidHandleId: function(id) { - if (typeof id !== "string") { - id = Ext.id(id); - } - this.invalidHandleIds[id] = id; - }, - - - addInvalidHandleClass: function(cssClass) { - this.invalidHandleClasses.push(cssClass); - }, - - - removeInvalidHandleType: function(tagName) { - var type = tagName.toUpperCase(); - // this.invalidHandleTypes[type] = null; - delete this.invalidHandleTypes[type]; - }, - - - removeInvalidHandleId: function(id) { - if (typeof id !== "string") { - id = Ext.id(id); - } - delete this.invalidHandleIds[id]; - }, - - - removeInvalidHandleClass: function(cssClass) { - for (var i=0, len=this.invalidHandleClasses.length; i<len; ++i) { - if (this.invalidHandleClasses[i] == cssClass) { - delete this.invalidHandleClasses[i]; - } - } - }, - - - isValidHandleChild: function(node) { - - var valid = true; - // var n = (node.nodeName == "#text") ? node.parentNode : node; - var nodeName; - try { - nodeName = node.nodeName.toUpperCase(); - } catch(e) { - nodeName = node.nodeName; - } - valid = valid && !this.invalidHandleTypes[nodeName]; - valid = valid && !this.invalidHandleIds[node.id]; - - for (var i=0, len=this.invalidHandleClasses.length; valid && i<len; ++i) { - valid = !Dom.hasClass(node, this.invalidHandleClasses[i]); - } - - - return valid; - - }, - - - setXTicks: function(iStartX, iTickSize) { - this.xTicks = []; - this.xTickSize = iTickSize; - - var tickMap = {}; - - for (var i = this.initPageX; i >= this.minX; i = i - iTickSize) { - if (!tickMap[i]) { - this.xTicks[this.xTicks.length] = i; - tickMap[i] = true; - } - } - - for (i = this.initPageX; i <= this.maxX; i = i + iTickSize) { - if (!tickMap[i]) { - this.xTicks[this.xTicks.length] = i; - tickMap[i] = true; - } - } - - this.xTicks.sort(this.DDM.numericSort) ; - }, - - - setYTicks: function(iStartY, iTickSize) { - this.yTicks = []; - this.yTickSize = iTickSize; - - var tickMap = {}; - - for (var i = this.initPageY; i >= this.minY; i = i - iTickSize) { - if (!tickMap[i]) { - this.yTicks[this.yTicks.length] = i; - tickMap[i] = true; - } - } - - for (i = this.initPageY; i <= this.maxY; i = i + iTickSize) { - if (!tickMap[i]) { - this.yTicks[this.yTicks.length] = i; - tickMap[i] = true; - } - } - - this.yTicks.sort(this.DDM.numericSort) ; - }, - - - setXConstraint: function(iLeft, iRight, iTickSize) { - this.leftConstraint = iLeft; - this.rightConstraint = iRight; - - this.minX = this.initPageX - iLeft; - this.maxX = this.initPageX + iRight; - if (iTickSize) { this.setXTicks(this.initPageX, iTickSize); } - - this.constrainX = true; - }, - - - clearConstraints: function() { - this.constrainX = false; - this.constrainY = false; - this.clearTicks(); - }, - - - clearTicks: function() { - this.xTicks = null; - this.yTicks = null; - this.xTickSize = 0; - this.yTickSize = 0; - }, - - - setYConstraint: function(iUp, iDown, iTickSize) { - this.topConstraint = iUp; - this.bottomConstraint = iDown; - - this.minY = this.initPageY - iUp; - this.maxY = this.initPageY + iDown; - if (iTickSize) { this.setYTicks(this.initPageY, iTickSize); } - - this.constrainY = true; - - }, - - - resetConstraints: function() { - - - // Maintain offsets if necessary - if (this.initPageX || this.initPageX === 0) { - // figure out how much this thing has moved - var dx = (this.maintainOffset) ? this.lastPageX - this.initPageX : 0; - var dy = (this.maintainOffset) ? this.lastPageY - this.initPageY : 0; - - this.setInitPosition(dx, dy); - - // This is the first time we have detected the element's position - } else { - this.setInitPosition(); - } - - if (this.constrainX) { - this.setXConstraint( this.leftConstraint, - this.rightConstraint, - this.xTickSize ); - } - - if (this.constrainY) { - this.setYConstraint( this.topConstraint, - this.bottomConstraint, - this.yTickSize ); - } - }, - - - getTick: function(val, tickArray) { - - if (!tickArray) { - // If tick interval is not defined, it is effectively 1 pixel, - // so we return the value passed to us. - return val; - } else if (tickArray[0] >= val) { - // The value is lower than the first tick, so we return the first - // tick. - return tickArray[0]; - } else { - for (var i=0, len=tickArray.length; i<len; ++i) { - var next = i + 1; - if (tickArray[next] && tickArray[next] >= val) { - var diff1 = val - tickArray[i]; - var diff2 = tickArray[next] - val; - return (diff2 > diff1) ? tickArray[i] : tickArray[next]; - } - } - - // The value is larger than the last tick, so we return the last - // tick. - return tickArray[tickArray.length - 1]; - } - }, - - - toString: function() { - return ("DragDrop " + this.id); - } - -}; - -})(); - - -// Only load the library once. Rewriting the manager class would orphan -// existing drag and drop instances. -if (!Ext.dd.DragDropMgr) { - - -Ext.dd.DragDropMgr = function() { - - var Event = Ext.EventManager; - - return { - - - ids: {}, - - - handleIds: {}, - - - dragCurrent: null, - - - dragOvers: {}, - - - deltaX: 0, - - - deltaY: 0, - - - preventDefault: true, - - - stopPropagation: true, - - - initalized: false, - - - locked: false, - - - init: function() { - this.initialized = true; - }, - - - POINT: 0, - - - INTERSECT: 1, - - - mode: 0, - - - _execOnAll: function(sMethod, args) { - for (var i in this.ids) { - for (var j in this.ids[i]) { - var oDD = this.ids[i][j]; - if (! this.isTypeOfDD(oDD)) { - continue; - } - oDD[sMethod].apply(oDD, args); - } - } - }, - - - _onLoad: function() { - - this.init(); - - - Event.on(document, "mouseup", this.handleMouseUp, this, true); - Event.on(document, "mousemove", this.handleMouseMove, this, true); - Event.on(window, "unload", this._onUnload, this, true); - Event.on(window, "resize", this._onResize, this, true); - // Event.on(window, "mouseout", this._test); - - }, - - - _onResize: function(e) { - this._execOnAll("resetConstraints", []); - }, - - - lock: function() { this.locked = true; }, - - - unlock: function() { this.locked = false; }, - - - isLocked: function() { return this.locked; }, - - - locationCache: {}, - - - useCache: true, - - - clickPixelThresh: 3, - - - clickTimeThresh: 350, - - - dragThreshMet: false, - - - clickTimeout: null, - - - startX: 0, - - - startY: 0, - - - regDragDrop: function(oDD, sGroup) { - if (!this.initialized) { this.init(); } - - if (!this.ids[sGroup]) { - this.ids[sGroup] = {}; - } - this.ids[sGroup][oDD.id] = oDD; - }, - - - removeDDFromGroup: function(oDD, sGroup) { - if (!this.ids[sGroup]) { - this.ids[sGroup] = {}; - } - - var obj = this.ids[sGroup]; - if (obj && obj[oDD.id]) { - delete obj[oDD.id]; - } - }, - - - _remove: function(oDD) { - for (var g in oDD.groups) { - if (g && this.ids[g][oDD.id]) { - delete this.ids[g][oDD.id]; - } - } - delete this.handleIds[oDD.id]; - }, - - - regHandle: function(sDDId, sHandleId) { - if (!this.handleIds[sDDId]) { - this.handleIds[sDDId] = {}; - } - this.handleIds[sDDId][sHandleId] = sHandleId; - }, - - - isDragDrop: function(id) { - return ( this.getDDById(id) ) ? true : false; - }, - - - getRelated: function(p_oDD, bTargetsOnly) { - var oDDs = []; - for (var i in p_oDD.groups) { - for (j in this.ids[i]) { - var dd = this.ids[i][j]; - if (! this.isTypeOfDD(dd)) { - continue; - } - if (!bTargetsOnly || dd.isTarget) { - oDDs[oDDs.length] = dd; - } - } - } - - return oDDs; - }, - - - isLegalTarget: function (oDD, oTargetDD) { - var targets = this.getRelated(oDD, true); - for (var i=0, len=targets.length;i<len;++i) { - if (targets[i].id == oTargetDD.id) { - return true; - } - } - - return false; - }, - - - isTypeOfDD: function (oDD) { - return (oDD && oDD.__ygDragDrop); - }, - - - isHandle: function(sDDId, sHandleId) { - return ( this.handleIds[sDDId] && - this.handleIds[sDDId][sHandleId] ); - }, - - - getDDById: function(id) { - for (var i in this.ids) { - if (this.ids[i][id]) { - return this.ids[i][id]; - } - } - return null; - }, - - - handleMouseDown: function(e, oDD) { - - if(Ext.QuickTips){ - Ext.QuickTips.disable(); - } - this.currentTarget = Ext.lib.Event.getTarget(e); - - this.dragCurrent = oDD; - - var el = oDD.getEl(); - - // track start position - this.startX = Ext.lib.Event.getPageX(e); - this.startY = Ext.lib.Event.getPageY(e); - - this.deltaX = this.startX - el.offsetLeft; - this.deltaY = this.startY - el.offsetTop; - - this.dragThreshMet = false; - - this.clickTimeout = setTimeout( - function() { - var DDM = Ext.dd.DDM; - DDM.startDrag(DDM.startX, DDM.startY); - }, - this.clickTimeThresh ); - }, - - - startDrag: function(x, y) { - clearTimeout(this.clickTimeout); - if (this.dragCurrent) { - this.dragCurrent.b4StartDrag(x, y); - this.dragCurrent.startDrag(x, y); - } - this.dragThreshMet = true; - }, - - - handleMouseUp: function(e) { - - if(Ext.QuickTips){ - Ext.QuickTips.enable(); - } - if (! this.dragCurrent) { - return; - } - - clearTimeout(this.clickTimeout); - - if (this.dragThreshMet) { - this.fireEvents(e, true); - } else { - } - - this.stopDrag(e); - - this.stopEvent(e); - }, - - - stopEvent: function(e){ - if(this.stopPropagation) { - e.stopPropagation(); - } - - if (this.preventDefault) { - e.preventDefault(); - } - }, - - - stopDrag: function(e) { - // Fire the drag end event for the item that was dragged - if (this.dragCurrent) { - if (this.dragThreshMet) { - this.dragCurrent.b4EndDrag(e); - this.dragCurrent.endDrag(e); - } - - this.dragCurrent.onMouseUp(e); - } - - this.dragCurrent = null; - this.dragOvers = {}; - }, - - - handleMouseMove: function(e) { - if (! this.dragCurrent) { - return true; - } - - // var button = e.which || e.button; - - // check for IE mouseup outside of page boundary - if (Ext.isIE && (e.button !== 0 && e.button !== 1 && e.button !== 2)) { - this.stopEvent(e); - return this.handleMouseUp(e); - } - - if (!this.dragThreshMet) { - var diffX = Math.abs(this.startX - Ext.lib.Event.getPageX(e)); - var diffY = Math.abs(this.startY - Ext.lib.Event.getPageY(e)); - if (diffX > this.clickPixelThresh || - diffY > this.clickPixelThresh) { - this.startDrag(this.startX, this.startY); - } - } - - if (this.dragThreshMet) { - this.dragCurrent.b4Drag(e); - this.dragCurrent.onDrag(e); - if(!this.dragCurrent.moveOnly){ - this.fireEvents(e, false); - } - } - - this.stopEvent(e); - - return true; - }, - - - fireEvents: function(e, isDrop) { - var dc = this.dragCurrent; - - // If the user did the mouse up outside of the window, we could - // get here even though we have ended the drag. - if (!dc || dc.isLocked()) { - return; - } - - var x = Ext.lib.Event.getPageX(e); - var y = Ext.lib.Event.getPageY(e); - var pt = new Ext.lib.Point(x,y); - - // cache the previous dragOver array - var oldOvers = []; - - var outEvts = []; - var overEvts = []; - var dropEvts = []; - var enterEvts = []; - - // Check to see if the object(s) we were hovering over is no longer - // being hovered over so we can fire the onDragOut event - for (var i in this.dragOvers) { - - var ddo = this.dragOvers[i]; - - if (! this.isTypeOfDD(ddo)) { - continue; - } - - if (! this.isOverTarget(pt, ddo, this.mode)) { - outEvts.push( ddo ); - } - - oldOvers[i] = true; - delete this.dragOvers[i]; - } - - for (var sGroup in dc.groups) { - - if ("string" != typeof sGroup) { - continue; - } - - for (i in this.ids[sGroup]) { - var oDD = this.ids[sGroup][i]; - if (! this.isTypeOfDD(oDD)) { - continue; - } - - if (oDD.isTarget && !oDD.isLocked() && oDD != dc) { - if (this.isOverTarget(pt, oDD, this.mode)) { - // look for drop interactions - if (isDrop) { - dropEvts.push( oDD ); - // look for drag enter and drag over interactions - } else { - - // initial drag over: dragEnter fires - if (!oldOvers[oDD.id]) { - enterEvts.push( oDD ); - // subsequent drag overs: dragOver fires - } else { - overEvts.push( oDD ); - } - - this.dragOvers[oDD.id] = oDD; - } - } - } - } - } - - if (this.mode) { - if (outEvts.length) { - dc.b4DragOut(e, outEvts); - dc.onDragOut(e, outEvts); - } - - if (enterEvts.length) { - dc.onDragEnter(e, enterEvts); - } - - if (overEvts.length) { - dc.b4DragOver(e, overEvts); - dc.onDragOver(e, overEvts); - } - - if (dropEvts.length) { - dc.b4DragDrop(e, dropEvts); - dc.onDragDrop(e, dropEvts); - } - - } else { - // fire dragout events - var len = 0; - for (i=0, len=outEvts.length; i<len; ++i) { - dc.b4DragOut(e, outEvts[i].id); - dc.onDragOut(e, outEvts[i].id); - } - - // fire enter events - for (i=0,len=enterEvts.length; i<len; ++i) { - // dc.b4DragEnter(e, oDD.id); - dc.onDragEnter(e, enterEvts[i].id); - } - - // fire over events - for (i=0,len=overEvts.length; i<len; ++i) { - dc.b4DragOver(e, overEvts[i].id); - dc.onDragOver(e, overEvts[i].id); - } - - // fire drop events - for (i=0, len=dropEvts.length; i<len; ++i) { - dc.b4DragDrop(e, dropEvts[i].id); - dc.onDragDrop(e, dropEvts[i].id); - } - - } - - // notify about a drop that did not find a target - if (isDrop && !dropEvts.length) { - dc.onInvalidDrop(e); - } - - }, - - - getBestMatch: function(dds) { - var winner = null; - // Return null if the input is not what we expect - //if (!dds || !dds.length || dds.length == 0) { - // winner = null; - // If there is only one item, it wins - //} else if (dds.length == 1) { - - var len = dds.length; - - if (len == 1) { - winner = dds[0]; - } else { - // Loop through the targeted items - for (var i=0; i<len; ++i) { - var dd = dds[i]; - // If the cursor is over the object, it wins. If the - // cursor is over multiple matches, the first one we come - // to wins. - if (dd.cursorIsOver) { - winner = dd; - break; - // Otherwise the object with the most overlap wins - } else { - if (!winner || - winner.overlap.getArea() < dd.overlap.getArea()) { - winner = dd; - } - } - } - } - - return winner; - }, - - - refreshCache: function(groups) { - for (var sGroup in groups) { - if ("string" != typeof sGroup) { - continue; - } - for (var i in this.ids[sGroup]) { - var oDD = this.ids[sGroup][i]; - - if (this.isTypeOfDD(oDD)) { - // if (this.isTypeOfDD(oDD) && oDD.isTarget) { - var loc = this.getLocation(oDD); - if (loc) { - this.locationCache[oDD.id] = loc; - } else { - delete this.locationCache[oDD.id]; - // this will unregister the drag and drop object if - // the element is not in a usable state - // oDD.unreg(); - } - } - } - } - }, - - - verifyEl: function(el) { - try { - if (el) { - var parent = el.offsetParent; - if (parent) { - return true; - } - } - } catch(e) { - } - - return false; - }, - - - getLocation: function(oDD) { - if (! this.isTypeOfDD(oDD)) { - return null; - } - - var el = oDD.getEl(), pos, x1, x2, y1, y2, t, r, b, l; - - try { - pos= Ext.lib.Dom.getXY(el); - } catch (e) { } - - if (!pos) { - return null; - } - - x1 = pos[0]; - x2 = x1 + el.offsetWidth; - y1 = pos[1]; - y2 = y1 + el.offsetHeight; - - t = y1 - oDD.padding[0]; - r = x2 + oDD.padding[1]; - b = y2 + oDD.padding[2]; - l = x1 - oDD.padding[3]; - - return new Ext.lib.Region( t, r, b, l ); - }, - - - isOverTarget: function(pt, oTarget, intersect) { - // use cache if available - var loc = this.locationCache[oTarget.id]; - if (!loc || !this.useCache) { - loc = this.getLocation(oTarget); - this.locationCache[oTarget.id] = loc; - - } - - if (!loc) { - return false; - } - - oTarget.cursorIsOver = loc.contains( pt ); - - // DragDrop is using this as a sanity check for the initial mousedown - // in this case we are done. In POINT mode, if the drag obj has no - // contraints, we are also done. Otherwise we need to evaluate the - // location of the target as related to the actual location of the - // dragged element. - var dc = this.dragCurrent; - if (!dc || !dc.getTargetCoord || - (!intersect && !dc.constrainX && !dc.constrainY)) { - return oTarget.cursorIsOver; - } - - oTarget.overlap = null; - - // Get the current location of the drag element, this is the - // location of the mouse event less the delta that represents - // where the original mousedown happened on the element. We - // need to consider constraints and ticks as well. - var pos = dc.getTargetCoord(pt.x, pt.y); - - var el = dc.getDragEl(); - var curRegion = new Ext.lib.Region( pos.y, - pos.x + el.offsetWidth, - pos.y + el.offsetHeight, - pos.x ); - - var overlap = curRegion.intersect(loc); - - if (overlap) { - oTarget.overlap = overlap; - return (intersect) ? true : oTarget.cursorIsOver; - } else { - return false; - } - }, - - - _onUnload: function(e, me) { - Ext.dd.DragDropMgr.unregAll(); - }, - - - unregAll: function() { - - if (this.dragCurrent) { - this.stopDrag(); - this.dragCurrent = null; - } - - this._execOnAll("unreg", []); - - for (i in this.elementCache) { - delete this.elementCache[i]; - } - - this.elementCache = {}; - this.ids = {}; - }, - - - elementCache: {}, - - - getElWrapper: function(id) { - var oWrapper = this.elementCache[id]; - if (!oWrapper || !oWrapper.el) { - oWrapper = this.elementCache[id] = - new this.ElementWrapper(Ext.getDom(id)); - } - return oWrapper; - }, - - - getElement: function(id) { - return Ext.getDom(id); - }, - - - getCss: function(id) { - var el = Ext.getDom(id); - return (el) ? el.style : null; - }, - - - ElementWrapper: function(el) { - - this.el = el || null; - - this.id = this.el && el.id; - - this.css = this.el && el.style; - }, - - - getPosX: function(el) { - return Ext.lib.Dom.getX(el); - }, - - - getPosY: function(el) { - return Ext.lib.Dom.getY(el); - }, - - - swapNode: function(n1, n2) { - if (n1.swapNode) { - n1.swapNode(n2); - } else { - var p = n2.parentNode; - var s = n2.nextSibling; - - if (s == n1) { - p.insertBefore(n1, n2); - } else if (n2 == n1.nextSibling) { - p.insertBefore(n2, n1); - } else { - n1.parentNode.replaceChild(n2, n1); - p.insertBefore(n1, s); - } - } - }, - - - getScroll: function () { - var t, l, dde=document.documentElement, db=document.body; - if (dde && (dde.scrollTop || dde.scrollLeft)) { - t = dde.scrollTop; - l = dde.scrollLeft; - } else if (db) { - t = db.scrollTop; - l = db.scrollLeft; - } else { - - } - return { top: t, left: l }; - }, - - - getStyle: function(el, styleProp) { - return Ext.fly(el).getStyle(styleProp); - }, - - - getScrollTop: function () { return this.getScroll().top; }, - - - getScrollLeft: function () { return this.getScroll().left; }, - - - moveToEl: function (moveEl, targetEl) { - var aCoord = Ext.lib.Dom.getXY(targetEl); - Ext.lib.Dom.setXY(moveEl, aCoord); - }, - - - numericSort: function(a, b) { return (a - b); }, - - - _timeoutCount: 0, - - - _addListeners: function() { - var DDM = Ext.dd.DDM; - if ( Ext.lib.Event && document ) { - DDM._onLoad(); - } else { - if (DDM._timeoutCount > 2000) { - } else { - setTimeout(DDM._addListeners, 10); - if (document && document.body) { - DDM._timeoutCount += 1; - } - } - } - }, - - - handleWasClicked: function(node, id) { - if (this.isHandle(id, node.id)) { - return true; - } else { - // check to see if this is a text node child of the one we want - var p = node.parentNode; - - while (p) { - if (this.isHandle(id, p.id)) { - return true; - } else { - p = p.parentNode; - } - } - } - - return false; - } - - }; - -}(); - -// shorter alias, save a few bytes -Ext.dd.DDM = Ext.dd.DragDropMgr; -Ext.dd.DDM._addListeners(); - -} - - -Ext.dd.DD = function(id, sGroup, config) { - if (id) { - this.init(id, sGroup, config); - } -}; - -Ext.extend(Ext.dd.DD, Ext.dd.DragDrop, { - - - scroll: true, - - - autoOffset: function(iPageX, iPageY) { - var x = iPageX - this.startPageX; - var y = iPageY - this.startPageY; - this.setDelta(x, y); - }, - - - setDelta: function(iDeltaX, iDeltaY) { - this.deltaX = iDeltaX; - this.deltaY = iDeltaY; - }, - - - setDragElPos: function(iPageX, iPageY) { - // the first time we do this, we are going to check to make sure - // the element has css positioning - - var el = this.getDragEl(); - this.alignElWithMouse(el, iPageX, iPageY); - }, - - - alignElWithMouse: function(el, iPageX, iPageY) { - var oCoord = this.getTargetCoord(iPageX, iPageY); - var fly = el.dom ? el : Ext.fly(el); - if (!this.deltaSetXY) { - var aCoord = [oCoord.x, oCoord.y]; - fly.setXY(aCoord); - var newLeft = fly.getLeft(true); - var newTop = fly.getTop(true); - this.deltaSetXY = [ newLeft - oCoord.x, newTop - oCoord.y ]; - } else { - fly.setLeftTop(oCoord.x + this.deltaSetXY[0], oCoord.y + this.deltaSetXY[1]); - } - - this.cachePosition(oCoord.x, oCoord.y); - this.autoScroll(oCoord.x, oCoord.y, el.offsetHeight, el.offsetWidth); - return oCoord; - }, - - - cachePosition: function(iPageX, iPageY) { - if (iPageX) { - this.lastPageX = iPageX; - this.lastPageY = iPageY; - } else { - var aCoord = Ext.lib.Dom.getXY(this.getEl()); - this.lastPageX = aCoord[0]; - this.lastPageY = aCoord[1]; - } - }, - - - autoScroll: function(x, y, h, w) { - - if (this.scroll) { - // The client height - var clientH = Ext.lib.Dom.getViewWidth(); - - // The client width - var clientW = Ext.lib.Dom.getViewHeight(); - - // The amt scrolled down - var st = this.DDM.getScrollTop(); - - // The amt scrolled right - var sl = this.DDM.getScrollLeft(); - - // Location of the bottom of the element - var bot = h + y; - - // Location of the right of the element - var right = w + x; - - // The distance from the cursor to the bottom of the visible area, - // adjusted so that we don't scroll if the cursor is beyond the - // element drag constraints - var toBot = (clientH + st - y - this.deltaY); - - // The distance from the cursor to the right of the visible area - var toRight = (clientW + sl - x - this.deltaX); - - - // How close to the edge the cursor must be before we scroll - // var thresh = (document.all) ? 100 : 40; - var thresh = 40; - - // How many pixels to scroll per autoscroll op. This helps to reduce - // clunky scrolling. IE is more sensitive about this ... it needs this - // value to be higher. - var scrAmt = (document.all) ? 80 : 30; - - // Scroll down if we are near the bottom of the visible page and the - // obj extends below the crease - if ( bot > clientH && toBot < thresh ) { - window.scrollTo(sl, st + scrAmt); - } - - // Scroll up if the window is scrolled down and the top of the object - // goes above the top border - if ( y < st && st > 0 && y - st < thresh ) { - window.scrollTo(sl, st - scrAmt); - } - - // Scroll right if the obj is beyond the right border and the cursor is - // near the border. - if ( right > clientW && toRight < thresh ) { - window.scrollTo(sl + scrAmt, st); - } - - // Scroll left if the window has been scrolled to the right and the obj - // extends past the left border - if ( x < sl && sl > 0 && x - sl < thresh ) { - window.scrollTo(sl - scrAmt, st); - } - } - }, - - - getTargetCoord: function(iPageX, iPageY) { - - - var x = iPageX - this.deltaX; - var y = iPageY - this.deltaY; - - if (this.constrainX) { - if (x < this.minX) { x = this.minX; } - if (x > this.maxX) { x = this.maxX; } - } - - if (this.constrainY) { - if (y < this.minY) { y = this.minY; } - if (y > this.maxY) { y = this.maxY; } - } - - x = this.getTick(x, this.xTicks); - y = this.getTick(y, this.yTicks); - - - return {x:x, y:y}; - }, - - - applyConfig: function() { - Ext.dd.DD.superclass.applyConfig.call(this); - this.scroll = (this.config.scroll !== false); - }, - - - b4MouseDown: function(e) { - // this.resetConstraints(); - this.autoOffset(Ext.lib.Event.getPageX(e), - Ext.lib.Event.getPageY(e)); - }, - - - b4Drag: function(e) { - this.setDragElPos(Ext.lib.Event.getPageX(e), - Ext.lib.Event.getPageY(e)); - }, - - toString: function() { - return ("DD " + this.id); - } - - ////////////////////////////////////////////////////////////////////////// - // Debugging ygDragDrop events that can be overridden - ////////////////////////////////////////////////////////////////////////// - - -}); - -Ext.dd.DDProxy = function(id, sGroup, config) { - if (id) { - this.init(id, sGroup, config); - this.initFrame(); - } -}; - - -Ext.dd.DDProxy.dragElId = "ygddfdiv"; - -Ext.extend(Ext.dd.DDProxy, Ext.dd.DD, { - - - resizeFrame: true, - - - centerFrame: false, - - - createFrame: function() { - var self = this; - var body = document.body; - - if (!body || !body.firstChild) { - setTimeout( function() { self.createFrame(); }, 50 ); - return; - } - - var div = this.getDragEl(); - - if (!div) { - div = document.createElement("div"); - div.id = this.dragElId; - var s = div.style; - - s.position = "absolute"; - s.visibility = "hidden"; - s.cursor = "move"; - s.border = "2px solid #aaa"; - s.zIndex = 999; - - // appendChild can blow up IE if invoked prior to the window load event - // while rendering a table. It is possible there are other scenarios - // that would cause this to happen as well. - body.insertBefore(div, body.firstChild); - } - }, - - - initFrame: function() { - this.createFrame(); - }, - - applyConfig: function() { - Ext.dd.DDProxy.superclass.applyConfig.call(this); - - this.resizeFrame = (this.config.resizeFrame !== false); - this.centerFrame = (this.config.centerFrame); - this.setDragElId(this.config.dragElId || Ext.dd.DDProxy.dragElId); - }, - - - showFrame: function(iPageX, iPageY) { - var el = this.getEl(); - var dragEl = this.getDragEl(); - var s = dragEl.style; - - this._resizeProxy(); - - if (this.centerFrame) { - this.setDelta( Math.round(parseInt(s.width, 10)/2), - Math.round(parseInt(s.height, 10)/2) ); - } - - this.setDragElPos(iPageX, iPageY); - - Ext.fly(dragEl).show(); - }, - - - _resizeProxy: function() { - if (this.resizeFrame) { - var el = this.getEl(); - Ext.fly(this.getDragEl()).setSize(el.offsetWidth, el.offsetHeight); - } - }, - - // overrides Ext.dd.DragDrop - b4MouseDown: function(e) { - var x = Ext.lib.Event.getPageX(e); - var y = Ext.lib.Event.getPageY(e); - this.autoOffset(x, y); - this.setDragElPos(x, y); - }, - - // overrides Ext.dd.DragDrop - b4StartDrag: function(x, y) { - // show the drag frame - this.showFrame(x, y); - }, - - // overrides Ext.dd.DragDrop - b4EndDrag: function(e) { - Ext.fly(this.getDragEl()).hide(); - }, - - // overrides Ext.dd.DragDrop - // By default we try to move the element to the last location of the frame. - // This is so that the default behavior mirrors that of Ext.dd.DD. - endDrag: function(e) { - - var lel = this.getEl(); - var del = this.getDragEl(); - - // Show the drag frame briefly so we can get its position - del.style.visibility = ""; - - this.beforeMove(); - // Hide the linked element before the move to get around a Safari - // rendering bug. - lel.style.visibility = "hidden"; - Ext.dd.DDM.moveToEl(lel, del); - del.style.visibility = "hidden"; - lel.style.visibility = ""; - - this.afterDrag(); - }, - - beforeMove : function(){ - - }, - - afterDrag : function(){ - - }, - - toString: function() { - return ("DDProxy " + this.id); - } - -}); - -Ext.dd.DDTarget = function(id, sGroup, config) { - if (id) { - this.initTarget(id, sGroup, config); - } -}; - -// Ext.dd.DDTarget.prototype = new Ext.dd.DragDrop(); -Ext.extend(Ext.dd.DDTarget, Ext.dd.DragDrop, { - toString: function() { - return ("DDTarget " + this.id); - } -}); - - -Ext.dd.ScrollManager = function(){ - var ddm = Ext.dd.DragDropMgr; - var els = {}; - var dragEl = null; - var proc = {}; - - var onStop = function(e){ - dragEl = null; - clearProc(); - }; - - var triggerRefresh = function(){ - if(ddm.dragCurrent){ - ddm.refreshCache(ddm.dragCurrent.groups); - } - }; - - var doScroll = function(){ - if(ddm.dragCurrent){ - var dds = Ext.dd.ScrollManager; - if(!dds.animate){ - if(proc.el.scroll(proc.dir, dds.increment)){ - triggerRefresh(); - } - }else{ - proc.el.scroll(proc.dir, dds.increment, true, dds.animDuration, triggerRefresh); - } - } - }; - - var clearProc = function(){ - if(proc.id){ - clearInterval(proc.id); - } - proc.id = 0; - proc.el = null; - proc.dir = ""; - }; - - var startProc = function(el, dir){ - clearProc(); - proc.el = el; - proc.dir = dir; - proc.id = setInterval(doScroll, Ext.dd.ScrollManager.frequency); - }; - - var onFire = function(e, isDrop){ - if(isDrop || !ddm.dragCurrent){ return; } - var dds = Ext.dd.ScrollManager; - if(!dragEl || dragEl != ddm.dragCurrent){ - dragEl = ddm.dragCurrent; - // refresh regions on drag start - dds.refreshCache(); - } - - var xy = Ext.lib.Event.getXY(e); - var pt = new Ext.lib.Point(xy[0], xy[1]); - for(var id in els){ - var el = els[id], r = el._region; - if(r && r.contains(pt) && el.isScrollable()){ - if(r.bottom - pt.y <= dds.thresh){ - if(proc.el != el){ - startProc(el, "down"); - } - return; - }else if(r.right - pt.x <= dds.thresh){ - if(proc.el != el){ - startProc(el, "left"); - } - return; - }else if(pt.y - r.top <= dds.thresh){ - if(proc.el != el){ - startProc(el, "up"); - } - return; - }else if(pt.x - r.left <= dds.thresh){ - if(proc.el != el){ - startProc(el, "right"); - } - return; - } - } - } - clearProc(); - }; - - ddm.fireEvents = ddm.fireEvents.createSequence(onFire, ddm); - ddm.stopDrag = ddm.stopDrag.createSequence(onStop, ddm); - - return { - - register : function(el){ - if(el instanceof Array){ - for(var i = 0, len = el.length; i < len; i++) { - this.register(el[i]); - } - }else{ - el = Ext.get(el); - els[el.id] = el; - } - }, - - - unregister : function(el){ - if(el instanceof Array){ - for(var i = 0, len = el.length; i < len; i++) { - this.unregister(el[i]); - } - }else{ - el = Ext.get(el); - delete els[el.id]; - } - }, - - - thresh : 25, - - - increment : 100, - - - frequency : 500, - - - animate: true, - - - animDuration: .4, - - - refreshCache : function(){ - for(var id in els){ - if(typeof els[id] == 'object'){ // for people extending the object prototype - els[id]._region = els[id].getRegion(); - } - } - } - }; -}(); - -Ext.dd.Registry = function(){ - var elements = {}; - var handles = {}; - var autoIdSeed = 0; - - var getId = function(el, autogen){ - if(typeof el == "string"){ - return el; - } - var id = el.id; - if(!id && autogen !== false){ - id = "extdd-" + (++autoIdSeed); - el.id = id; - } - return id; - }; - - return { - - register : function(el, data){ - data = data || {}; - if(typeof el == "string"){ - el = document.getElementById(el); - } - data.ddel = el; - elements[getId(el)] = data; - if(data.isHandle !== false){ - handles[data.ddel.id] = data; - } - if(data.handles){ - var hs = data.handles; - for(var i = 0, len = hs.length; i < len; i++){ - handles[getId(hs[i])] = data; - } - } - }, - - - unregister : function(el){ - var id = getId(el, false); - var data = elements[id]; - if(data){ - delete elements[id]; - if(data.handles){ - var hs = data.handles; - for(var i = 0, len = hs.length; i < len; i++){ - delete handles[getId(hs[i], false)]; - } - } - } - }, - - - getHandle : function(id){ - if(typeof id != "string"){ // must be element? - id = id.id; - } - return handles[id]; - }, - - - getHandleFromEvent : function(e){ - var t = Ext.lib.Event.getTarget(e); - return t ? handles[t.id] : null; - }, - - - getTarget : function(id){ - if(typeof id != "string"){ // must be element? - id = id.id; - } - return elements[id]; - }, - - - getTargetFromEvent : function(e){ - var t = Ext.lib.Event.getTarget(e); - return t ? elements[t.id] || handles[t.id] : null; - } - }; -}(); - -Ext.dd.StatusProxy = function(config){ - Ext.apply(this, config); - this.id = this.id || Ext.id(); - this.el = new Ext.Layer({ - dh: { - id: this.id, tag: "div", cls: "x-dd-drag-proxy "+this.dropNotAllowed, children: [ - {tag: "div", cls: "x-dd-drop-icon"}, - {tag: "div", cls: "x-dd-drag-ghost"} - ] - }, - shadow: !config || config.shadow !== false - }); - this.ghost = Ext.get(this.el.dom.childNodes[1]); - this.dropStatus = this.dropNotAllowed; -}; - -Ext.dd.StatusProxy.prototype = { - - dropAllowed : "x-dd-drop-ok", - - dropNotAllowed : "x-dd-drop-nodrop", - - - setStatus : function(cssClass){ - cssClass = cssClass || this.dropNotAllowed; - if(this.dropStatus != cssClass){ - this.el.replaceClass(this.dropStatus, cssClass); - this.dropStatus = cssClass; - } - }, - - - reset : function(clearGhost){ - this.el.dom.className = "x-dd-drag-proxy " + this.dropNotAllowed; - this.dropStatus = this.dropNotAllowed; - if(clearGhost){ - this.ghost.update(""); - } - }, - - - update : function(html){ - if(typeof html == "string"){ - this.ghost.update(html); - }else{ - this.ghost.update(""); - html.style.margin = "0"; - this.ghost.dom.appendChild(html); - } - }, - - - getEl : function(){ - return this.el; - }, - - - getGhost : function(){ - return this.ghost; - }, - - - hide : function(clear){ - this.el.hide(); - if(clear){ - this.reset(true); - } - }, - - - stop : function(){ - if(this.anim && this.anim.isAnimated && this.anim.isAnimated()){ - this.anim.stop(); - } - }, - - - show : function(){ - this.el.show(); - }, - - - sync : function(){ - this.el.sync(); - }, - - - repair : function(xy, callback, scope){ - this.callback = callback; - this.scope = scope; - if(xy && this.animRepair !== false){ - this.el.addClass("x-dd-drag-repair"); - this.el.hideUnders(true); - this.anim = this.el.shift({ - duration: this.repairDuration || .5, - easing: 'easeOut', - xy: xy, - stopFx: true, - callback: this.afterRepair, - scope: this - }); - }else{ - this.afterRepair(); - } - }, - - // private - afterRepair : function(){ - this.hide(true); - if(typeof this.callback == "function"){ - this.callback.call(this.scope || this); - } - this.callback = null; - this.scope = null; - } -}; - -Ext.dd.DragSource = function(el, config){ - this.el = Ext.get(el); - this.dragData = {}; - - Ext.apply(this, config); - - if(!this.proxy){ - this.proxy = new Ext.dd.StatusProxy(); - } - Ext.dd.DragSource.superclass.constructor.call(this, this.el.dom, this.ddGroup || this.group, - {dragElId : this.proxy.id, resizeFrame: false, isTarget: false, scroll: this.scroll === true}); - - this.dragging = false; -}; - -Ext.extend(Ext.dd.DragSource, Ext.dd.DDProxy, { - - dropAllowed : "x-dd-drop-ok", - - dropNotAllowed : "x-dd-drop-nodrop", - - - getDragData : function(e){ - return this.dragData; - }, - - // private - onDragEnter : function(e, id){ - var target = Ext.dd.DragDropMgr.getDDById(id); - this.cachedTarget = target; - if(this.beforeDragEnter(target, e, id) !== false){ - if(target.isNotifyTarget){ - var status = target.notifyEnter(this, e, this.dragData); - this.proxy.setStatus(status); - }else{ - this.proxy.setStatus(this.dropAllowed); - } - - if(this.afterDragEnter){ - - this.afterDragEnter(target, e, id); - } - } - }, - - - beforeDragEnter : function(target, e, id){ - return true; - }, - - // private - alignElWithMouse: function() { - Ext.dd.DragSource.superclass.alignElWithMouse.apply(this, arguments); - this.proxy.sync(); - }, - - // private - onDragOver : function(e, id){ - var target = this.cachedTarget || Ext.dd.DragDropMgr.getDDById(id); - if(this.beforeDragOver(target, e, id) !== false){ - if(target.isNotifyTarget){ - var status = target.notifyOver(this, e, this.dragData); - this.proxy.setStatus(status); - } - - if(this.afterDragOver){ - - this.afterDragOver(target, e, id); - } - } - }, - - - beforeDragOver : function(target, e, id){ - return true; - }, - - // private - onDragOut : function(e, id){ - var target = this.cachedTarget || Ext.dd.DragDropMgr.getDDById(id); - if(this.beforeDragOut(target, e, id) !== false){ - if(target.isNotifyTarget){ - target.notifyOut(this, e, this.dragData); - } - this.proxy.reset(); - if(this.afterDragOut){ - - this.afterDragOut(target, e, id); - } - } - this.cachedTarget = null; - }, - - - beforeDragOut : function(target, e, id){ - return true; - }, - - // private - onDragDrop : function(e, id){ - var target = this.cachedTarget || Ext.dd.DragDropMgr.getDDById(id); - if(this.beforeDragDrop(target, e, id) !== false){ - if(target.isNotifyTarget){ - if(target.notifyDrop(this, e, this.dragData)){ // valid drop? - this.onValidDrop(target, e, id); - }else{ - this.onInvalidDrop(target, e, id); - } - }else{ - this.onValidDrop(target, e, id); - } - - if(this.afterDragDrop){ - - this.afterDragDrop(target, e, id); - } - } - }, - - - beforeDragDrop : function(target, e, id){ - return true; - }, - - // private - onValidDrop : function(target, e, id){ - this.hideProxy(); - if(this.afterValidDrop){ - - this.afterValidDrop(target, e, id); - } - }, - - // private - getRepairXY : function(e, data){ - return this.el.getXY(); - }, - - // private - onInvalidDrop : function(target, e, id){ - this.beforeInvalidDrop(target, e, id); - if(this.cachedTarget){ - if(this.cachedTarget.isNotifyTarget){ - this.cachedTarget.notifyOut(this, e, this.dragData); - } - this.cacheTarget = null; - } - this.proxy.repair(this.getRepairXY(e, this.dragData), this.afterRepair, this); - - if(this.afterInvalidDrop){ - - this.afterInvalidDrop(e, id); - } - }, - - // private - afterRepair : function(){ - if(Ext.enableFx){ - this.el.highlight(this.hlColor || "c3daf9"); - } - this.dragging = false; - }, - - - beforeInvalidDrop : function(target, e, id){ - return true; - }, - - // private - handleMouseDown : function(e){ - if(this.dragging) { - return; - } - var data = this.getDragData(e); - if(data && this.onBeforeDrag(data, e) !== false){ - this.dragData = data; - this.proxy.stop(); - Ext.dd.DragSource.superclass.handleMouseDown.apply(this, arguments); - } - }, - - - onBeforeDrag : function(data, e){ - return true; - }, - - - onStartDrag : Ext.emptyFn, - - // private - YUI override - startDrag : function(x, y){ - this.proxy.reset(); - this.dragging = true; - this.proxy.update(""); - this.onInitDrag(x, y); - this.proxy.show(); - }, - - // private - onInitDrag : function(x, y){ - var clone = this.el.dom.cloneNode(true); - clone.id = Ext.id(); // prevent duplicate ids - this.proxy.update(clone); - this.onStartDrag(x, y); - return true; - }, - - - getProxy : function(){ - return this.proxy; - }, - - - hideProxy : function(){ - this.proxy.hide(); - this.proxy.reset(true); - this.dragging = false; - }, - - // private - triggerCacheRefresh : function(){ - Ext.dd.DDM.refreshCache(this.groups); - }, - - // private - override to prevent hiding - b4EndDrag: function(e) { - }, - - // private - override to prevent moving - endDrag : function(e){ - this.onEndDrag(this.dragData, e); - }, - - // private - onEndDrag : function(data, e){ - }, - - // private - pin to cursor - autoOffset : function(x, y) { - this.setDelta(-12, -20); - } -}); - -Ext.dd.DropTarget = function(el, config){ - this.el = Ext.get(el); - - Ext.apply(this, config); - - if(this.containerScroll){ - Ext.dd.ScrollManager.register(this.el); - } - - Ext.dd.DropTarget.superclass.constructor.call(this, this.el.dom, this.ddGroup || this.group, - {isTarget: true}); - -}; - -Ext.extend(Ext.dd.DropTarget, Ext.dd.DDTarget, { - - - dropAllowed : "x-dd-drop-ok", - - dropNotAllowed : "x-dd-drop-nodrop", - - // private - isTarget : true, - - // private - isNotifyTarget : true, - - - notifyEnter : function(dd, e, data){ - if(this.overClass){ - this.el.addClass(this.overClass); - } - return this.dropAllowed; - }, - - - notifyOver : function(dd, e, data){ - return this.dropAllowed; - }, - - - notifyOut : function(dd, e, data){ - if(this.overClass){ - this.el.removeClass(this.overClass); - } - }, - - - notifyDrop : function(dd, e, data){ - return false; - } -}); - -Ext.dd.DragZone = function(el, config){ - Ext.dd.DragZone.superclass.constructor.call(this, el, config); - if(this.containerScroll){ - Ext.dd.ScrollManager.register(this.el); - } -}; - -Ext.extend(Ext.dd.DragZone, Ext.dd.DragSource, { - - - - - getDragData : function(e){ - return Ext.dd.Registry.getHandleFromEvent(e); - }, - - - onInitDrag : function(x, y){ - this.proxy.update(this.dragData.ddel.cloneNode(true)); - this.onStartDrag(x, y); - return true; - }, - - - afterRepair : function(){ - if(Ext.enableFx){ - Ext.Element.fly(this.dragData.ddel).highlight(this.hlColor || "c3daf9"); - } - this.dragging = false; - }, - - - getRepairXY : function(e){ - return Ext.Element.fly(this.dragData.ddel).getXY(); - } -}); - -Ext.dd.DropZone = function(el, config){ - Ext.dd.DropZone.superclass.constructor.call(this, el, config); -}; - -Ext.extend(Ext.dd.DropZone, Ext.dd.DropTarget, { - - getTargetFromEvent : function(e){ - return Ext.dd.Registry.getTargetFromEvent(e); - }, - - - onNodeEnter : function(n, dd, e, data){ - - }, - - - onNodeOver : function(n, dd, e, data){ - return this.dropAllowed; - }, - - - onNodeOut : function(n, dd, e, data){ - - }, - - - onNodeDrop : function(n, dd, e, data){ - return false; - }, - - - onContainerOver : function(dd, e, data){ - return this.dropNotAllowed; - }, - - - onContainerDrop : function(dd, e, data){ - return false; - }, - - - notifyEnter : function(dd, e, data){ - return this.dropNotAllowed; - }, - - - notifyOver : function(dd, e, data){ - var n = this.getTargetFromEvent(e); - if(!n){ // not over valid drop target - if(this.lastOverNode){ - this.onNodeOut(this.lastOverNode, dd, e, data); - this.lastOverNode = null; - } - return this.onContainerOver(dd, e, data); - } - if(this.lastOverNode != n){ - if(this.lastOverNode){ - this.onNodeOut(this.lastOverNode, dd, e, data); - } - this.onNodeEnter(n, dd, e, data); - this.lastOverNode = n; - } - return this.onNodeOver(n, dd, e, data); - }, - - - notifyOut : function(dd, e, data){ - if(this.lastOverNode){ - this.onNodeOut(this.lastOverNode, dd, e, data); - this.lastOverNode = null; - } - }, - - - notifyDrop : function(dd, e, data){ - if(this.lastOverNode){ - this.onNodeOut(this.lastOverNode, dd, e, data); - this.lastOverNode = null; - } - var n = this.getTargetFromEvent(e); - return n ? - this.onNodeDrop(n, dd, e, data) : - this.onContainerDrop(dd, e, data); - }, - - // private - triggerCacheRefresh : function(){ - Ext.dd.DDM.refreshCache(this.groups); - } -}); - - -Ext.data.SortTypes = { - - none : function(s){ - return s; - }, - - - stripTagsRE : /<\/?[^>]+>/gi, - - - asText : function(s){ - return String(s).replace(this.stripTagsRE, ""); - }, - - - asUCText : function(s){ - return String(s).toUpperCase().replace(this.stripTagsRE, ""); - }, - - - asUCString : function(s) { - return String(s).toUpperCase(); - }, - - - asDate : function(s) { - if(!s){ - return 0; - } - if(s instanceof Date){ - return s.getTime(); - } - return Date.parse(String(s)); - }, - - - asFloat : function(s) { - var val = parseFloat(String(s).replace(/,/g, "")); - if(isNaN(val)) val = 0; - return val; - }, - - - asInt : function(s) { - var val = parseInt(String(s).replace(/,/g, "")); - if(isNaN(val)) val = 0; - return val; - } -}; - -Ext.data.Record = function(data, id){ - this.id = (id || id === 0) ? id : ++Ext.data.Record.AUTO_ID; - this.data = data; -}; - - -Ext.data.Record.create = function(o){ - var f = function(){ - f.superclass.constructor.apply(this, arguments); - }; - Ext.extend(f, Ext.data.Record); - var p = f.prototype; - p.fields = new Ext.util.MixedCollection(false, function(field){ - return field.name; - }); - for(var i = 0, len = o.length; i < len; i++){ - p.fields.add(new Ext.data.Field(o[i])); - } - f.getField = function(name){ - return p.fields.get(name); - }; - return f; -}; - -Ext.data.Record.AUTO_ID = 1000; -Ext.data.Record.EDIT = 'edit'; -Ext.data.Record.REJECT = 'reject'; -Ext.data.Record.COMMIT = 'commit'; - -Ext.data.Record.prototype = { - - dirty : false, - editing : false, - error: null, - modified: null, - - // private - join : function(store){ - this.store = store; - }, - - - set : function(name, value){ - if(this.data[name] == value){ - return; - } - this.dirty = true; - if(!this.modified){ - this.modified = {}; - } - if(typeof this.modified[name] == 'undefined'){ - this.modified[name] = this.data[name]; - } - this.data[name] = value; - if(!this.editing){ - this.store.afterEdit(this); - } - }, - - - get : function(name){ - return this.data[name]; - }, - - // private - beginEdit : function(){ - this.editing = true; - this.modified = {}; - }, - - // private - cancelEdit : function(){ - this.editing = false; - delete this.modified; - }, - - // private - endEdit : function(){ - this.editing = false; - if(this.dirty && this.store){ - this.store.afterEdit(this); - } - }, - - - reject : function(){ - var m = this.modified; - for(var n in m){ - if(typeof m[n] != "function"){ - this.data[n] = m[n]; - } - } - this.dirty = false; - delete this.modified; - this.editing = false; - if(this.store){ - this.store.afterReject(this); - } - }, - - - commit : function(){ - this.dirty = false; - delete this.modified; - this.editing = false; - if(this.store){ - this.store.afterCommit(this); - } - }, - - // private - hasError : function(){ - return this.error != null; - }, - - // private - clearError : function(){ - this.error = null; - } -}; - -Ext.data.Store = function(config){ - this.data = new Ext.util.MixedCollection(false); - this.data.getKey = function(o){ - return o.id; - }; - this.baseParams = {}; - // private - this.paramNames = { - "start" : "start", - "limit" : "limit", - "sort" : "sort", - "dir" : "dir" - }; - - if(config && config.data){ - this.inlineData = config.data; - delete config.data; - } - - Ext.apply(this, config); - - if(this.reader){ // reader passed - if(!this.recordType){ - this.recordType = this.reader.recordType; - } - if(this.reader.onMetaChange){ - this.reader.onMetaChange = this.onMetaChange.createDelegate(this); - } - } - - if(this.recordType){ - this.fields = this.recordType.prototype.fields; - } - this.modified = []; - - this.addEvents({ - - datachanged : true, - - metachange : true, - - add : true, - - remove : true, - - update : true, - - clear : true, - - beforeload : true, - - load : true, - - loadexception : true - }); - - if(this.proxy){ - this.relayEvents(this.proxy, ["loadexception"]); - } - this.sortToggle = {}; - - Ext.data.Store.superclass.constructor.call(this); - - if(this.inlineData){ - this.loadData(this.inlineData); - delete this.inlineData; - } -}; -Ext.extend(Ext.data.Store, Ext.util.Observable, { - - - - - - - remoteSort : false, - - // private - lastOptions : null, - - - add : function(records){ - records = [].concat(records); - for(var i = 0, len = records.length; i < len; i++){ - records[i].join(this); - } - var index = this.data.length; - this.data.addAll(records); - this.fireEvent("add", this, records, index); - }, - - - remove : function(record){ - var index = this.data.indexOf(record); - this.data.removeAt(index); - this.fireEvent("remove", this, record, index); - }, - - - removeAll : function(){ - this.data.clear(); - this.fireEvent("clear", this); - }, - - - insert : function(index, records){ - records = [].concat(records); - for(var i = 0, len = records.length; i < len; i++){ - this.data.insert(index, records[i]); - records[i].join(this); - } - this.fireEvent("add", this, records, index); - }, - - - indexOf : function(record){ - return this.data.indexOf(record); - }, - - - indexOfId : function(id){ - return this.data.indexOfKey(id); - }, - - - getById : function(id){ - return this.data.key(id); - }, - - - getAt : function(index){ - return this.data.itemAt(index); - }, - - - getRange : function(start, end){ - return this.data.getRange(start, end); - }, - - // private - storeOptions : function(o){ - o = Ext.apply({}, o); - delete o.callback; - delete o.scope; - this.lastOptions = o; - }, - - - load : function(options){ - options = options || {}; - if(this.fireEvent("beforeload", this, options) !== false){ - this.storeOptions(options); - var p = Ext.apply(options.params || {}, this.baseParams); - if(this.sortInfo && this.remoteSort){ - var pn = this.paramNames; - p[pn["sort"]] = this.sortInfo.field; - p[pn["dir"]] = this.sortInfo.direction; - } - this.proxy.load(p, this.reader, this.loadRecords, this, options); - } - }, - - - reload : function(options){ - this.load(Ext.applyIf(options||{}, this.lastOptions)); - }, - - // private - // Called as a callback by the Reader during a load operation. - loadRecords : function(o, options, success){ - if(!o || success === false){ - if(success !== false){ - this.fireEvent("load", this, [], options); - } - if(options.callback){ - options.callback.call(options.scope || this, [], options, false); - } - return; - } - var r = o.records, t = o.totalRecords || r.length; - for(var i = 0, len = r.length; i < len; i++){ - r[i].join(this); - } - if(!options || options.add !== true){ - this.data.clear(); - this.data.addAll(r); - this.totalLength = t; - this.applySort(); - this.fireEvent("datachanged", this); - }else{ - this.totalLength = Math.max(t, this.data.length+r.length); - this.data.addAll(r); - } - this.fireEvent("load", this, r, options); - if(options.callback){ - options.callback.call(options.scope || this, r, options, true); - } - }, - - - loadData : function(o, append){ - var r = this.reader.readRecords(o); - this.loadRecords(r, {add: append}, true); - }, - - - getCount : function(){ - return this.data.length || 0; - }, - - - getTotalCount : function(){ - return this.totalLength || 0; - }, - - - getSortState : function(){ - return this.sortInfo; - }, - - // private - applySort : function(){ - if(this.sortInfo && !this.remoteSort){ - var s = this.sortInfo, f = s.field; - var st = this.fields.get(f).sortType; - var fn = function(r1, r2){ - var v1 = st(r1.data[f]), v2 = st(r2.data[f]); - return v1 > v2 ? 1 : (v1 < v2 ? -1 : 0); - }; - this.data.sort(s.direction, fn); - if(this.snapshot && this.snapshot != this.data){ - this.snapshot.sort(s.direction, fn); - } - } - }, - - - setDefaultSort : function(field, dir){ - this.sortInfo = {field: field, direction: dir ? dir.toUpperCase() : "ASC"}; - }, - - - sort : function(fieldName, dir){ - var f = this.fields.get(fieldName); - if(!dir){ - if(this.sortInfo && this.sortInfo.field == f.name){ // toggle sort dir - dir = (this.sortToggle[f.name] || "ASC").toggle("ASC", "DESC"); - }else{ - dir = f.sortDir; - } - } - this.sortToggle[f.name] = dir; - this.sortInfo = {field: f.name, direction: dir}; - if(!this.remoteSort){ - this.applySort(); - this.fireEvent("datachanged", this); - }else{ - this.load(this.lastOptions); - } - }, - - - each : function(fn, scope){ - this.data.each(fn, scope); - }, - - - getModifiedRecords : function(){ - return this.modified; - }, - - - filter : function(property, value){ - if(!value.exec){ // not a regex - value = String(value); - if(value.length == 0){ - return this.clearFilter(); - } - value = new RegExp("^" + Ext.escapeRe(value), "i"); - } - this.filterBy(function(r){ - return value.test(r.data[property]); - }); - }, - - - filterBy : function(fn, scope){ - var data = this.snapshot || this.data; - this.snapshot = data; - this.data = data.filterBy(fn, scope); - this.fireEvent("datachanged", this); - }, - - - clearFilter : function(suppressEvent){ - if(this.snapshot && this.snapshot != this.data){ - this.data = this.snapshot; - delete this.snapshot; - if(suppressEvent !== true){ - this.fireEvent("datachanged", this); - } - } - }, - - // private - afterEdit : function(record){ - if(this.modified.indexOf(record) == -1){ - this.modified.push(record); - } - this.fireEvent("update", this, record, Ext.data.Record.EDIT); - }, - - // private - afterReject : function(record){ - this.modified.remove(record); - this.fireEvent("update", this, record, Ext.data.Record.REJECT); - }, - - // private - afterCommit : function(record){ - this.modified.remove(record); - this.fireEvent("update", this, record, Ext.data.Record.COMMIT); - }, - - - commitChanges : function(){ - var m = this.modified.slice(0); - this.modified = []; - for(var i = 0, len = m.length; i < len; i++){ - m[i].commit(); - } - }, - - - rejectChanges : function(){ - var m = this.modified.slice(0); - this.modified = []; - for(var i = 0, len = m.length; i < len; i++){ - m[i].reject(); - } - }, - - onMetaChange : function(meta, rtype, o){ - this.recordType = rtype; - this.fields = rtype.prototype.fields; - delete this.snapshot; - this.sortInfo = meta.sortInfo; - this.modified = []; - this.fireEvent('metachange', this, this.reader.meta); - } -}); - -Ext.data.SimpleStore = function(config){ - Ext.data.SimpleStore.superclass.constructor.call(this, { - reader: new Ext.data.ArrayReader({ - id: config.id - }, - Ext.data.Record.create(config.fields) - ), - proxy : new Ext.data.MemoryProxy(config.data) - }); - this.load(); -}; -Ext.extend(Ext.data.SimpleStore, Ext.data.Store); - -Ext.data.Connection = function(config){ - Ext.apply(this, config); - this.addEvents({ - - "beforerequest" : true, - - "requestcomplete" : true, - - "requestexception" : true - }); - Ext.data.Connection.superclass.constructor.call(this); -}; - -Ext.extend(Ext.data.Connection, Ext.util.Observable, { - - - - - timeout : 30000, - - - request : function(options){ - if(this.fireEvent("beforerequest", this, options) !== false){ - var p = options.params; - if(typeof p == "object"){ - p = Ext.urlEncode(Ext.apply(options.params, this.extraParams)); - } - var cb = { - success: this.handleResponse, - failure: this.handleFailure, - scope: this, - argument: {options: options}, - timeout : this.timeout - }; - var method = options.method||this.method||(p ? "POST" : "GET"); - var url = options.url || this.url; - if(this.autoAbort !== false){ - this.abort(); - } - if(method == 'GET' && p){ - url += (url.indexOf('?') != -1 ? '&' : '?') + p; - p = ''; - } - this.transId = Ext.lib.Ajax.request(method, url, cb, p); - }else{ - if(typeof options.callback == "function"){ - options.callback.call(options.scope||window, options, null, null); - } - } - }, - - - isLoading : function(){ - return this.transId ? true : false; - }, - - - abort : function(){ - if(this.isLoading()){ - Ext.lib.Ajax.abort(this.transId); - } - }, - - // private - handleResponse : function(response){ - this.transId = false; - var options = response.argument.options; - this.fireEvent("requestcomplete", this, response, options); - if(typeof options.callback == "function"){ - options.callback.call(options.scope||window, options, true, response); - } - }, - - // private - handleFailure : function(response, e){ - this.transId = false; - var options = response.argument.options; - this.fireEvent("requestexception", this, response, options, e); - if(typeof options.callback == "function"){ - options.callback.call(options.scope||window, options, false, response); - } - } -}); -Ext.data.Field = function(config){ - if(typeof config == "string"){ - config = {name: config}; - } - Ext.apply(this, config); - - if(!this.type){ - this.type = "auto"; - } - - var st = Ext.data.SortTypes; - // named sortTypes are supported, here we look them up - if(typeof this.sortType == "string"){ - this.sortType = st[this.sortType]; - } - - // set default sortType for strings and dates - if(!this.sortType){ - switch(this.type){ - case "string": - this.sortType = st.asUCString; - break; - case "date": - this.sortType = st.asDate; - break; - default: - this.sortType = st.none; - } - } - - // define once - var stripRe = /[\$,%]/g; - - // prebuilt conversion function for this field, instead of - // switching every time we're reading a value - if(!this.convert){ - var cv, dateFormat = this.dateFormat; - switch(this.type){ - case "": - case "auto": - case undefined: - cv = function(v){ return v; }; - break; - case "string": - cv = function(v){ return String(v); }; - break; - case "int": - cv = function(v){ - return v !== undefined && v !== null && v !== '' ? - parseInt(String(v).replace(stripRe, ""), 10) : ''; - }; - break; - case "float": - cv = function(v){ - return v !== undefined && v !== null && v !== '' ? - parseFloat(String(v).replace(stripRe, ""), 10) : ''; - }; - break; - case "bool": - case "boolean": - cv = function(v){ return v === true || v === "true" || v == 1; }; - break; - case "date": - cv = function(v){ - if(!v){ - return ''; - } - if(v instanceof Date){ - return v; - } - if(dateFormat){ - if(dateFormat == "timestamp"){ - return new Date(v*1000); - } - return Date.parseDate(v, dateFormat); - } - var parsed = Date.parse(v); - return parsed ? new Date(parsed) : null; - }; - break; - - } - this.convert = cv; - } -}; - -Ext.data.Field.prototype = { - dateFormat: null, - defaultValue: "", - mapping: null, - sortType : null, - sortDir : "ASC" -}; -Ext.data.DataReader = function(meta, recordType){ - this.meta = meta; - this.recordType = recordType instanceof Array ? - Ext.data.Record.create(recordType) : recordType; -}; - -Ext.data.DataReader.prototype = { - -}; - -Ext.data.DataProxy = function(){ - this.addEvents({ - - beforeload : true, - - load : true, - - loadexception : true - }); - Ext.data.DataProxy.superclass.constructor.call(this); -}; - -Ext.extend(Ext.data.DataProxy, Ext.util.Observable); - -Ext.data.MemoryProxy = function(data){ - Ext.data.MemoryProxy.superclass.constructor.call(this); - this.data = data; -}; - -Ext.extend(Ext.data.MemoryProxy, Ext.data.DataProxy, { - - load : function(params, reader, callback, scope, arg){ - params = params || {}; - var result; - try { - result = reader.readRecords(this.data); - }catch(e){ - this.fireEvent("loadexception", this, arg, null, e); - callback.call(scope, null, arg, false); - return; - } - callback.call(scope, result, arg, true); - }, - - // private - update : function(params, records){ - - } -}); - -Ext.data.HttpProxy = function(conn){ - Ext.data.HttpProxy.superclass.constructor.call(this); - // is conn a conn config or a real conn? - this.conn = conn.events ? conn : new Ext.data.Connection(conn); -}; - -Ext.extend(Ext.data.HttpProxy, Ext.data.DataProxy, { - - getConnection : function(){ - return this.conn; - }, - - - load : function(params, reader, callback, scope, arg){ - if(this.fireEvent("beforeload", this, params) !== false){ - this.conn.request({ - params : params || {}, - request: { - callback : callback, - scope : scope, - arg : arg - }, - reader: reader, - callback : this.loadResponse, - scope: this - }); - }else{ - callback.call(scope||this, null, arg, false); - } - }, - - // private - loadResponse : function(o, success, response){ - if(!success){ - this.fireEvent("loadexception", this, o, response); - o.request.callback.call(o.request.scope, null, o.request.arg, false); - return; - } - var result; - try { - result = o.reader.read(response); - }catch(e){ - this.fireEvent("loadexception", this, o, response, e); - o.request.callback.call(o.request.scope, null, o.request.arg, false); - return; - } - this.fireEvent("load", this, o, o.request.arg); - o.request.callback.call(o.request.scope, result, o.request.arg, true); - }, - - // private - update : function(dataSet){ - - }, - - // private - updateResponse : function(dataSet){ - - } -}); - -Ext.data.ScriptTagProxy = function(config){ - Ext.data.ScriptTagProxy.superclass.constructor.call(this); - Ext.apply(this, config); - this.head = document.getElementsByTagName("head")[0]; -}; - -Ext.data.ScriptTagProxy.TRANS_ID = 1000; - -Ext.extend(Ext.data.ScriptTagProxy, Ext.data.DataProxy, { - - - timeout : 30000, - - callbackParam : "callback", - - nocache : true, - - - load : function(params, reader, callback, scope, arg){ - if(this.fireEvent("beforeload", this, params) !== false){ - - var p = Ext.urlEncode(Ext.apply(params, this.extraParams)); - - var url = this.url; - url += (url.indexOf("?") != -1 ? "&" : "?") + p; - if(this.nocache){ - url += "&_dc=" + (new Date().getTime()); - } - var transId = ++Ext.data.ScriptTagProxy.TRANS_ID; - var trans = { - id : transId, - cb : "stcCallback"+transId, - scriptId : "stcScript"+transId, - params : params, - arg : arg, - url : url, - callback : callback, - scope : scope, - reader : reader - }; - var conn = this; - - window[trans.cb] = function(o){ - conn.handleResponse(o, trans); - }; - - url += String.format("&{0}={1}", this.callbackParam, trans.cb); - - if(this.autoAbort !== false){ - this.abort(); - } - - trans.timeoutId = this.handleFailure.defer(this.timeout, this, [trans]); - - var script = document.createElement("script"); - script.setAttribute("src", url); - script.setAttribute("type", "text/javascript"); - script.setAttribute("id", trans.scriptId); - this.head.appendChild(script); - - this.trans = trans; - }else{ - callback.call(scope||this, null, arg, false); - } - }, - - // private - isLoading : function(){ - return this.trans ? true : false; - }, - - - abort : function(){ - if(this.isLoading()){ - this.destroyTrans(this.trans); - } - }, - - // private - destroyTrans : function(trans, isLoaded){ - this.head.removeChild(document.getElementById(trans.scriptId)); - clearTimeout(trans.timeoutId); - if(isLoaded){ - window[trans.cb] = undefined; - try{ - delete window[trans.cb]; - }catch(e){} - }else{ - // if hasn't been loaded, wait for load to remove it to prevent script error - window[trans.cb] = function(){ - window[trans.cb] = undefined; - try{ - delete window[trans.cb]; - }catch(e){} - }; - } - }, - - // private - handleResponse : function(o, trans){ - this.trans = false; - this.destroyTrans(trans, true); - var result; - try { - result = trans.reader.readRecords(o); - }catch(e){ - this.fireEvent("loadexception", this, o, trans.arg, e); - trans.callback.call(trans.scope||window, null, trans.arg, false); - return; - } - this.fireEvent("load", this, o, trans.arg); - trans.callback.call(trans.scope||window, result, trans.arg, true); - }, - - // private - handleFailure : function(trans){ - this.trans = false; - this.destroyTrans(trans, false); - this.fireEvent("loadexception", this, null, trans.arg); - trans.callback.call(trans.scope||window, null, trans.arg, false); - } -}); - -Ext.data.JsonReader = function(meta, recordType){ - Ext.data.JsonReader.superclass.constructor.call(this, meta, recordType); -}; -Ext.extend(Ext.data.JsonReader, Ext.data.DataReader, { - - read : function(response){ - var json = response.responseText; - var o = eval("("+json+")"); - if(!o) { - throw {message: "JsonReader.read: Json object not found"}; - } - if(o.metaData){ - delete this.ef; - this.meta = o.metaData; - this.recordType = Ext.data.Record.create(o.metaData.fields); - this.onMetaChange(this.meta, this.recordType, o); - } - return this.readRecords(o); - }, - - // private function a store will implement - onMetaChange : function(meta, recordType, o){ - - }, - - - simpleAccess: function(obj, subsc) { - return obj[subsc]; - }, - - - getJsonAccessor: function(){ - var re = /[\[\.]/; - return function(expr) { - try { - return(re.test(expr)) - ? new Function("obj", "return obj." + expr) - : function(obj){ - return obj[expr]; - }; - } catch(e){} - return Ext.emptyFn; - }; - }(), - - - readRecords : function(o){ - - this.jsonData = o; - var s = this.meta, Record = this.recordType, - f = Record.prototype.fields, fi = f.items, fl = f.length; - -// Generate extraction functions for the totalProperty, the root, the id, and for each field - if (!this.ef) { - if(s.totalProperty) { - this.getTotal = this.getJsonAccessor(s.totalProperty); - } - if(s.successProperty) { - this.getSuccess = this.getJsonAccessor(s.successProperty); - } - this.getRoot = s.root ? this.getJsonAccessor(s.root) : function(p){return p;}; - if (s.id) { - var g = this.getJsonAccessor(s.id); - this.getId = function(rec) { - var r = g(rec); - return (r === undefined || r === "") ? null : r; - }; - } else { - this.getId = function(){return null;}; - } - this.ef = []; - for(var i = 0; i < fl; i++){ - f = fi[i]; - var map = (f.mapping !== undefined && f.mapping !== null) ? f.mapping : f.name; - this.ef[i] = this.getJsonAccessor(map); - } - } - - var root = this.getRoot(o), c = root.length, totalRecords = c, success = true; - if(s.totalProperty){ - var v = parseInt(this.getTotal(o), 10); - if(!isNaN(v)){ - totalRecords = v; - } - } - if(s.successProperty){ - var v = this.getSuccess(o); - if(v === false || v === 'false'){ - success = false; - } - } - var records = []; - for(var i = 0; i < c; i++){ - var n = root[i]; - var values = {}; - var id = this.getId(n); - for(var j = 0; j < fl; j++){ - f = fi[j]; - var v = this.ef[j](n); - values[f.name] = f.convert((v !== undefined) ? v : f.defaultValue); - } - var record = new Record(values, id); - record.json = n; - records[i] = record; - } - return { - success : success, - records : records, - totalRecords : totalRecords - }; - } -}); - -Ext.data.XmlReader = function(meta, recordType){ - Ext.data.XmlReader.superclass.constructor.call(this, meta, recordType); -}; -Ext.extend(Ext.data.XmlReader, Ext.data.DataReader, { - - read : function(response){ - var doc = response.responseXML; - if(!doc) { - throw {message: "XmlReader.read: XML Document not available"}; - } - return this.readRecords(doc); - }, - - - readRecords : function(doc){ - - this.xmlData = doc; - var root = doc.documentElement || doc; - var q = Ext.DomQuery; - var recordType = this.recordType, fields = recordType.prototype.fields; - var sid = this.meta.id; - var totalRecords = 0, success = true; - if(this.meta.totalRecords){ - totalRecords = q.selectNumber(this.meta.totalRecords, root, 0); - } - - if(this.meta.success){ - var sv = q.selectValue(this.meta.success, root, true); - success = sv !== false && sv !== 'false'; - } - var records = []; - var ns = q.select(this.meta.record, root); - for(var i = 0, len = ns.length; i < len; i++) { - var n = ns[i]; - var values = {}; - var id = sid ? q.selectValue(sid, n) : undefined; - for(var j = 0, jlen = fields.length; j < jlen; j++){ - var f = fields.items[j]; - var v = q.selectValue(f.mapping || f.name, n, f.defaultValue); - v = f.convert(v); - values[f.name] = v; - } - var record = new recordType(values, id); - record.node = n; - records[records.length] = record; - } - - return { - success : success, - records : records, - totalRecords : totalRecords || records.length - }; - } -}); - -Ext.data.ArrayReader = function(meta, recordType){ - Ext.data.ArrayReader.superclass.constructor.call(this, meta, recordType); -}; - -Ext.extend(Ext.data.ArrayReader, Ext.data.JsonReader, { - - readRecords : function(o){ - var sid = this.meta ? this.meta.id : null; - var recordType = this.recordType, fields = recordType.prototype.fields; - var records = []; - var root = o; - for(var i = 0; i < root.length; i++){ - var n = root[i]; - var values = {}; - var id = ((sid || sid === 0) && n[sid] !== undefined && n[sid] !== "" ? n[sid] : null); - for(var j = 0, jlen = fields.length; j < jlen; j++){ - var f = fields.items[j]; - var k = f.mapping !== undefined && f.mapping !== null ? f.mapping : j; - var v = n[k] !== undefined ? n[k] : f.defaultValue; - v = f.convert(v); - values[f.name] = v; - } - var record = new recordType(values, id); - record.json = n; - records[records.length] = record; - } - return { - records : records, - totalRecords : records.length - }; - } -}); - -Ext.data.Tree = function(root){ - this.nodeHash = {}; - - this.root = null; - if(root){ - this.setRootNode(root); - } - this.addEvents({ - - "append" : true, - - "remove" : true, - - "move" : true, - - "insert" : true, - - "beforeappend" : true, - - "beforeremove" : true, - - "beforemove" : true, - - "beforeinsert" : true - }); - - Ext.data.Tree.superclass.constructor.call(this); -}; - -Ext.extend(Ext.data.Tree, Ext.util.Observable, { - pathSeparator: "/", - - - getRootNode : function(){ - return this.root; - }, - - - setRootNode : function(node){ - this.root = node; - node.ownerTree = this; - node.isRoot = true; - this.registerNode(node); - return node; - }, - - - getNodeById : function(id){ - return this.nodeHash[id]; - }, - - registerNode : function(node){ - this.nodeHash[node.id] = node; - }, - - unregisterNode : function(node){ - delete this.nodeHash[node.id]; - }, - - toString : function(){ - return "[Tree"+(this.id?" "+this.id:"")+"]"; - } -}); - - -Ext.data.Node = function(attributes){ - - this.attributes = attributes || {}; - this.leaf = this.attributes.leaf; - - this.id = this.attributes.id; - if(!this.id){ - this.id = Ext.id(null, "ynode-"); - this.attributes.id = this.id; - } - - this.childNodes = []; - if(!this.childNodes.indexOf){ // indexOf is a must - this.childNodes.indexOf = function(o){ - for(var i = 0, len = this.length; i < len; i++){ - if(this[i] == o) return i; - } - return -1; - }; - } - - this.parentNode = null; - - this.firstChild = null; - - this.lastChild = null; - - this.previousSibling = null; - - this.nextSibling = null; - - this.addEvents({ - - "append" : true, - - "remove" : true, - - "move" : true, - - "insert" : true, - - "beforeappend" : true, - - "beforeremove" : true, - - "beforemove" : true, - - "beforeinsert" : true - }); - this.listeners = this.attributes.listeners; - Ext.data.Node.superclass.constructor.call(this); -}; - -Ext.extend(Ext.data.Node, Ext.util.Observable, { - fireEvent : function(evtName){ - // first do standard event for this node - if(Ext.data.Node.superclass.fireEvent.apply(this, arguments) === false){ - return false; - } - // then bubble it up to the tree if the event wasn't cancelled - var ot = this.getOwnerTree(); - if(ot){ - if(ot.proxyNodeEvent.apply(ot, arguments) === false){ - return false; - } - } - return true; - }, - - - isLeaf : function(){ - return this.leaf === true; - }, - - // private - setFirstChild : function(node){ - this.firstChild = node; - }, - - //private - setLastChild : function(node){ - this.lastChild = node; - }, - - - - isLast : function(){ - return (!this.parentNode ? true : this.parentNode.lastChild == this); - }, - - - isFirst : function(){ - return (!this.parentNode ? true : this.parentNode.firstChild == this); - }, - - hasChildNodes : function(){ - return !this.isLeaf() && this.childNodes.length > 0; - }, - - - appendChild : function(node){ - var multi = false; - if(node instanceof Array){ - multi = node; - }else if(arguments.length > 1){ - multi = arguments; - } - // if passed an array or multiple args do them one by one - if(multi){ - for(var i = 0, len = multi.length; i < len; i++) { - this.appendChild(multi[i]); - } - }else{ - if(this.fireEvent("beforeappend", this.ownerTree, this, node) === false){ - return false; - } - var index = this.childNodes.length; - var oldParent = node.parentNode; - // it's a move, make sure we move it cleanly - if(oldParent){ - if(node.fireEvent("beforemove", node.getOwnerTree(), node, oldParent, this, index) === false){ - return false; - } - oldParent.removeChild(node); - } - index = this.childNodes.length; - if(index == 0){ - this.setFirstChild(node); - } - this.childNodes.push(node); - node.parentNode = this; - var ps = this.childNodes[index-1]; - if(ps){ - node.previousSibling = ps; - ps.nextSibling = node; - }else{ - node.previousSibling = null; - } - node.nextSibling = null; - this.setLastChild(node); - node.setOwnerTree(this.getOwnerTree()); - this.fireEvent("append", this.ownerTree, this, node, index); - if(oldParent){ - node.fireEvent("move", this.ownerTree, node, oldParent, this, index); - } - return node; - } - }, - - - removeChild : function(node){ - var index = this.childNodes.indexOf(node); - if(index == -1){ - return false; - } - if(this.fireEvent("beforeremove", this.ownerTree, this, node) === false){ - return false; - } - - // remove it from childNodes collection - this.childNodes.splice(index, 1); - - // update siblings - if(node.previousSibling){ - node.previousSibling.nextSibling = node.nextSibling; - } - if(node.nextSibling){ - node.nextSibling.previousSibling = node.previousSibling; - } - - // update child refs - if(this.firstChild == node){ - this.setFirstChild(node.nextSibling); - } - if(this.lastChild == node){ - this.setLastChild(node.previousSibling); - } - - node.setOwnerTree(null); - // clear any references from the node - node.parentNode = null; - node.previousSibling = null; - node.nextSibling = null; - this.fireEvent("remove", this.ownerTree, this, node); - return node; - }, - - - insertBefore : function(node, refNode){ - if(!refNode){ // like standard Dom, refNode can be null for append - return this.appendChild(node); - } - // nothing to do - if(node == refNode){ - return false; - } - - if(this.fireEvent("beforeinsert", this.ownerTree, this, node, refNode) === false){ - return false; - } - var index = this.childNodes.indexOf(refNode); - var oldParent = node.parentNode; - var refIndex = index; - - // when moving internally, indexes will change after remove - if(oldParent == this && this.childNodes.indexOf(node) < index){ - refIndex--; - } - - // it's a move, make sure we move it cleanly - if(oldParent){ - if(node.fireEvent("beforemove", node.getOwnerTree(), node, oldParent, this, index, refNode) === false){ - return false; - } - oldParent.removeChild(node); - } - if(refIndex == 0){ - this.setFirstChild(node); - } - this.childNodes.splice(refIndex, 0, node); - node.parentNode = this; - var ps = this.childNodes[refIndex-1]; - if(ps){ - node.previousSibling = ps; - ps.nextSibling = node; - }else{ - node.previousSibling = null; - } - node.nextSibling = refNode; - refNode.previousSibling = node; - node.setOwnerTree(this.getOwnerTree()); - this.fireEvent("insert", this.ownerTree, this, node, refNode); - if(oldParent){ - node.fireEvent("move", this.ownerTree, node, oldParent, this, refIndex, refNode); - } - return node; - }, - - - item : function(index){ - return this.childNodes[index]; - }, - - - replaceChild : function(newChild, oldChild){ - this.insertBefore(newChild, oldChild); - this.removeChild(oldChild); - return oldChild; - }, - - - indexOf : function(child){ - return this.childNodes.indexOf(child); - }, - - - getOwnerTree : function(){ - // if it doesn't have one, look for one - if(!this.ownerTree){ - var p = this; - while(p){ - if(p.ownerTree){ - this.ownerTree = p.ownerTree; - break; - } - p = p.parentNode; - } - } - return this.ownerTree; - }, - - - getDepth : function(){ - var depth = 0; - var p = this; - while(p.parentNode){ - ++depth; - p = p.parentNode; - } - return depth; - }, - - // private - setOwnerTree : function(tree){ - // if it's move, we need to update everyone - if(tree != this.ownerTree){ - if(this.ownerTree){ - this.ownerTree.unregisterNode(this); - } - this.ownerTree = tree; - var cs = this.childNodes; - for(var i = 0, len = cs.length; i < len; i++) { - cs[i].setOwnerTree(tree); - } - if(tree){ - tree.registerNode(this); - } - } - }, - - - getPath : function(attr){ - attr = attr || "id"; - var p = this.parentNode; - var b = [this.attributes[attr]]; - while(p){ - b.unshift(p.attributes[attr]); - p = p.parentNode; - } - var sep = this.getOwnerTree().pathSeparator; - return sep + b.join(sep); - }, - - - bubble : function(fn, scope, args){ - var p = this; - while(p){ - if(fn.call(scope || p, args || p) === false){ - break; - } - p = p.parentNode; - } - }, - - - cascade : function(fn, scope, args){ - if(fn.call(scope || this, args || this) !== false){ - var cs = this.childNodes; - for(var i = 0, len = cs.length; i < len; i++) { - cs[i].cascade(fn, scope, args); - } - } - }, - - - eachChild : function(fn, scope, args){ - var cs = this.childNodes; - for(var i = 0, len = cs.length; i < len; i++) { - if(fn.call(scope || this, args || cs[i]) === false){ - break; - } - } - }, - - - findChild : function(attribute, value){ - var cs = this.childNodes; - for(var i = 0, len = cs.length; i < len; i++) { - if(cs[i].attributes[attribute] == value){ - return cs[i]; - } - } - return null; - }, - - - findChildBy : function(fn, scope){ - var cs = this.childNodes; - for(var i = 0, len = cs.length; i < len; i++) { - if(fn.call(scope||cs[i], cs[i]) === true){ - return cs[i]; - } - } - return null; - }, - - - sort : function(fn, scope){ - var cs = this.childNodes; - var len = cs.length; - if(len > 0){ - var sortFn = scope ? function(){fn.apply(scope, arguments);} : fn; - cs.sort(sortFn); - for(var i = 0; i < len; i++){ - var n = cs[i]; - n.previousSibling = cs[i-1]; - n.nextSibling = cs[i+1]; - if(i == 0){ - this.setFirstChild(n); - } - if(i == len-1){ - this.setLastChild(n); - } - } - } - }, - - - contains : function(node){ - return node.isAncestor(this); - }, - - - isAncestor : function(node){ - var p = this.parentNode; - while(p){ - if(p == node){ - return true; - } - p = p.parentNode; - } - return false; - }, - - toString : function(){ - return "[Node"+(this.id?" "+this.id:"")+"]"; - } -}); - -Ext.ComponentMgr = function(){ - var all = new Ext.util.MixedCollection(); - - return { - // private - register : function(c){ - all.add(c); - }, - - // private - unregister : function(c){ - all.remove(c); - }, - - - get : function(id){ - return all.get(id); - }, - - - onAvailable : function(id, fn, scope){ - all.on("add", function(index, o){ - if(o.id == id){ - fn.call(scope || o, o); - all.un("add", fn, scope); - } - }); - } - }; -}(); - - -Ext.Component = function(config){ - config = config || {}; - if(config.tagName || config.dom || typeof config == "string"){ // element object - config = {el: config, id: config.id || config}; - } - this.initialConfig = config; - - Ext.apply(this, config); - this.addEvents({ - - disable : true, - - enable : true, - - beforeshow : true, - - show : true, - - beforehide : true, - - hide : true, - - beforerender : true, - - render : true, - - beforedestroy : true, - - destroy : true - }); - if(!this.id){ - this.id = "ext-comp-" + (++Ext.Component.AUTO_ID); - } - Ext.ComponentMgr.register(this); - Ext.Component.superclass.constructor.call(this); - this.initComponent(); - if(this.renderTo){ // not supported by all components yet. use at your own risk! - this.render(this.renderTo); - delete this.renderTo; - } -}; - -// private -Ext.Component.AUTO_ID = 1000; - -Ext.extend(Ext.Component, Ext.util.Observable, { - - hidden : false, - - disabled : false, - - disabledClass : "x-item-disabled", - - rendered : false, - - allowDomMove: true, - - // private - ctype : "Ext.Component", - - // private - actionMode : "el", - - // private - getActionEl : function(){ - return this[this.actionMode]; - }, - - - hideMode: 'display', - - initComponent : Ext.emptyFn, - - render : function(container, position){ - if(!this.rendered && this.fireEvent("beforerender", this) !== false){ - if(!container && this.el){ - this.el = Ext.get(this.el); - container = this.el.dom.parentNode; - this.allowDomMove = false; - } - this.container = Ext.get(container); - this.rendered = true; - if(position !== undefined){ - if(typeof position == 'number'){ - position = this.container.dom.childNodes[position]; - }else{ - position = Ext.getDom(position); - } - } - this.onRender(this.container, position || null); - if(this.cls){ - this.el.addClass(this.cls); - delete this.cls; - } - if(this.style){ - this.el.applyStyles(this.style); - delete this.style; - } - this.fireEvent("render", this); - this.afterRender(this.container); - if(this.hidden){ - this.hide(); - } - if(this.disabled){ - this.disable(); - } - } - return this; - }, - - // private - // default function is not really useful - onRender : function(ct, position){ - if(this.el){ - this.el = Ext.get(this.el); - if(this.allowDomMove !== false){ - ct.dom.insertBefore(this.el.dom, position); - } - } - }, - - // private - getAutoCreate : function(){ - var cfg = typeof this.autoCreate == "object" ? - this.autoCreate : Ext.apply({}, this.defaultAutoCreate); - if(this.id && !cfg.id){ - cfg.id = this.id; - } - return cfg; - }, - - // private - afterRender : Ext.emptyFn, - - // private - destroy : function(){ - if(this.fireEvent("beforedestroy", this) !== false){ - this.purgeListeners(); - this.beforeDestroy(); - if(this.rendered){ - this.el.removeAllListeners(); - this.el.remove(); - if(this.actionMode == "container"){ - this.container.remove(); - } - } - this.onDestroy(); - Ext.ComponentMgr.unregister(this); - this.fireEvent("destroy", this); - } - }, - - beforeDestroy : function(){ - - }, - - onDestroy : function(){ - - }, - - - getEl : function(){ - return this.el; - }, - - - getId : function(){ - return this.id; - }, - - - focus : function(selectText){ - if(this.rendered){ - this.el.focus(); - if(selectText === true){ - this.el.dom.select(); - } - } - return this; - }, - - // private - blur : function(){ - if(this.rendered){ - this.el.blur(); - } - return this; - }, - - - disable : function(){ - if(this.rendered){ - this.onDisable(); - } - this.disabled = true; - this.fireEvent("disable", this); - return this; - }, - - onDisable : function(){ - this.getActionEl().addClass(this.disabledClass); - this.el.dom.disabled = true; - }, - - - enable : function(){ - if(this.rendered){ - this.onEnable(); - } - this.disabled = false; - this.fireEvent("enable", this); - return this; - }, - - onEnable : function(){ - this.getActionEl().removeClass(this.disabledClass); - this.el.dom.disabled = false; - }, - - - setDisabled : function(disabled){ - this[disabled ? "disable" : "enable"](); - }, - - - show: function(){ - if(this.fireEvent("beforeshow", this) !== false){ - this.hidden = false; - if(this.rendered){ - this.onShow(); - } - this.fireEvent("show", this); - } - return this; - }, - - // private - onShow : function(){ - var ae = this.getActionEl(); - if(this.hideMode == 'visibility'){ - ae.dom.style.visibility = "visible"; - }else if(this.hideMode == 'offsets'){ - ae.removeClass('x-hidden'); - }else{ - ae.dom.style.display = ""; - } - }, - - - hide: function(){ - if(this.fireEvent("beforehide", this) !== false){ - this.hidden = true; - if(this.rendered){ - this.onHide(); - } - this.fireEvent("hide", this); - } - return this; - }, - - // private - onHide : function(){ - var ae = this.getActionEl(); - if(this.hideMode == 'visibility'){ - ae.dom.style.visibility = "hidden"; - }else if(this.hideMode == 'offsets'){ - ae.addClass('x-hidden'); - }else{ - ae.dom.style.display = "none"; - } - }, - - - setVisible: function(visible){ - if(visible) { - this.show(); - }else{ - this.hide(); - } - return this; - }, - - - isVisible : function(){ - return this.getActionEl().isVisible(); - }, - - cloneConfig : function(overrides){ - overrides = overrides || {}; - var id = overrides.id || Ext.id(); - var cfg = Ext.applyIf(overrides, this.initialConfig); - cfg.id = id; // prevent dup id - return new this.__extcls(cfg); - } -}); - -(function(){ -Ext.Layer = function(config, existingEl){ - config = config || {}; - var dh = Ext.DomHelper; - var cp = config.parentEl, pel = cp ? Ext.getDom(cp) : document.body; - if(existingEl){ - this.dom = Ext.getDom(existingEl); - } - if(!this.dom){ - var o = config.dh || {tag: "div", cls: "x-layer"}; - this.dom = dh.append(pel, o); - } - if(config.cls){ - this.addClass(config.cls); - } - this.constrain = config.constrain !== false; - this.visibilityMode = Ext.Element.VISIBILITY; - if(config.id){ - this.id = this.dom.id = config.id; - }else{ - this.id = Ext.id(this.dom); - } - this.zindex = config.zindex || this.getZIndex(); - this.position("absolute", this.zindex); - if(config.shadow){ - this.shadowOffset = config.shadowOffset || 4; - this.shadow = new Ext.Shadow({ - offset : this.shadowOffset, - mode : config.shadow - }); - }else{ - this.shadowOffset = 0; - } - this.useShim = config.shim !== false && Ext.useShims; - this.useDisplay = config.useDisplay; - this.hide(); -}; - -var supr = Ext.Element.prototype; - -// shims are shared among layer to keep from having 100 iframes -var shims = []; - -Ext.extend(Ext.Layer, Ext.Element, { - - getZIndex : function(){ - return this.zindex || parseInt(this.getStyle("z-index"), 10) || 11000; - }, - - getShim : function(){ - if(!this.useShim){ - return null; - } - if(this.shim){ - return this.shim; - } - var shim = shims.shift(); - if(!shim){ - shim = this.createShim(); - shim.enableDisplayMode('block'); - shim.dom.style.display = 'none'; - shim.dom.style.visibility = 'visible'; - } - var pn = this.dom.parentNode; - if(shim.dom.parentNode != pn){ - pn.insertBefore(shim.dom, this.dom); - } - shim.setStyle('z-index', this.getZIndex()-2); - this.shim = shim; - return shim; - }, - - hideShim : function(){ - if(this.shim){ - this.shim.setDisplayed(false); - shims.push(this.shim); - delete this.shim; - } - }, - - disableShadow : function(){ - if(this.shadow){ - this.shadowDisabled = true; - this.shadow.hide(); - this.lastShadowOffset = this.shadowOffset; - this.shadowOffset = 0; - } - }, - - enableShadow : function(show){ - if(this.shadow){ - this.shadowDisabled = false; - this.shadowOffset = this.lastShadowOffset; - delete this.lastShadowOffset; - if(show){ - this.sync(true); - } - } - }, - - // private - // this code can execute repeatedly in milliseconds (i.e. during a drag) so - // code size was sacrificed for effeciency (e.g. no getBox/setBox, no XY calls) - sync : function(doShow){ - var sw = this.shadow; - if(!this.updating && this.isVisible() && (sw || this.useShim)){ - var sh = this.getShim(); - - var w = this.getWidth(), - h = this.getHeight(); - - var l = this.getLeft(true), - t = this.getTop(true); - - if(sw && !this.shadowDisabled){ - if(doShow && !sw.isVisible()){ - sw.show(this); - }else{ - sw.realign(l, t, w, h); - } - if(sh){ - if(doShow){ - sh.show(); - } - // fit the shim behind the shadow, so it is shimmed too - var a = sw.adjusts, s = sh.dom.style; - s.left = (Math.min(l, l+a.l))+"px"; - s.top = (Math.min(t, t+a.t))+"px"; - s.width = (w+a.w)+"px"; - s.height = (h+a.h)+"px"; - } - }else if(sh){ - if(doShow){ - sh.show(); - } - sh.setSize(w, h); - sh.setLeftTop(l, t); - } - - } - }, - - // private - destroy : function(){ - this.hideShim(); - if(this.shadow){ - this.shadow.hide(); - } - this.removeAllListeners(); - var pn = this.dom.parentNode; - if(pn){ - pn.removeChild(this.dom); - } - Ext.Element.uncache(this.id); - }, - - remove : function(){ - this.destroy(); - }, - - // private - beginUpdate : function(){ - this.updating = true; - }, - - // private - endUpdate : function(){ - this.updating = false; - this.sync(true); - }, - - // private - hideUnders : function(negOffset){ - if(this.shadow){ - this.shadow.hide(); - } - this.hideShim(); - }, - - // private - constrainXY : function(){ - if(this.constrain){ - var vw = Ext.lib.Dom.getViewWidth(), - vh = Ext.lib.Dom.getViewHeight(); - var s = Ext.get(document).getScroll(); - - var xy = this.getXY(); - var x = xy[0], y = xy[1]; - var w = this.dom.offsetWidth+this.shadowOffset, h = this.dom.offsetHeight+this.shadowOffset; - // only move it if it needs it - var moved = false; - // first validate right/bottom - if((x + w) > vw+s.left){ - x = vw - w - this.shadowOffset; - moved = true; - } - if((y + h) > vh+s.top){ - y = vh - h - this.shadowOffset; - moved = true; - } - // then make sure top/left isn't negative - if(x < s.left){ - x = s.left; - moved = true; - } - if(y < s.top){ - y = s.top; - moved = true; - } - if(moved){ - if(this.avoidY){ - var ay = this.avoidY; - if(y <= ay && (y+h) >= ay){ - y = ay-h-5; - } - } - xy = [x, y]; - this.storeXY(xy); - supr.setXY.call(this, xy); - this.sync(); - } - } - }, - - isVisible : function(){ - return this.visible; - }, - - // private - showAction : function(){ - this.visible = true; // track visibility to prevent getStyle calls - if(this.useDisplay === true){ - this.setDisplayed(""); - }else if(this.lastXY){ - supr.setXY.call(this, this.lastXY); - }else if(this.lastLT){ - supr.setLeftTop.call(this, this.lastLT[0], this.lastLT[1]); - } - }, - - // private - hideAction : function(){ - this.visible = false; - if(this.useDisplay === true){ - this.setDisplayed(false); - }else{ - this.setLeftTop(-10000,-10000); - } - }, - - // overridden Element method - setVisible : function(v, a, d, c, e){ - if(v){ - this.showAction(); - } - if(a && v){ - var cb = function(){ - this.sync(true); - if(c){ - c(); - } - }.createDelegate(this); - supr.setVisible.call(this, true, true, d, cb, e); - }else{ - if(!v){ - this.hideUnders(true); - } - var cb = c; - if(a){ - cb = function(){ - this.hideAction(); - if(c){ - c(); - } - }.createDelegate(this); - } - supr.setVisible.call(this, v, a, d, cb, e); - if(v){ - this.sync(true); - }else if(!a){ - this.hideAction(); - } - } - }, - - storeXY : function(xy){ - delete this.lastLT; - this.lastXY = xy; - }, - - storeLeftTop : function(left, top){ - delete this.lastXY; - this.lastLT = [left, top]; - }, - - // private - beforeFx : function(){ - this.beforeAction(); - return Ext.Layer.superclass.beforeFx.apply(this, arguments); - }, - - // private - afterFx : function(){ - Ext.Layer.superclass.afterFx.apply(this, arguments); - this.sync(this.isVisible()); - }, - - // private - beforeAction : function(){ - if(!this.updating && this.shadow){ - this.shadow.hide(); - } - }, - - // overridden Element method - setLeft : function(left){ - this.storeLeftTop(left, this.getTop(true)); - supr.setLeft.apply(this, arguments); - this.sync(); - }, - - setTop : function(top){ - this.storeLeftTop(this.getLeft(true), top); - supr.setTop.apply(this, arguments); - this.sync(); - }, - - setLeftTop : function(left, top){ - this.storeLeftTop(left, top); - supr.setLeftTop.apply(this, arguments); - this.sync(); - }, - - setXY : function(xy, a, d, c, e){ - this.fixDisplay(); - this.beforeAction(); - this.storeXY(xy); - var cb = this.createCB(c); - supr.setXY.call(this, xy, a, d, cb, e); - if(!a){ - cb(); - } - }, - - // private - createCB : function(c){ - var el = this; - return function(){ - el.constrainXY(); - el.sync(true); - if(c){ - c(); - } - }; - }, - - // overridden Element method - setX : function(x, a, d, c, e){ - this.setXY([x, this.getY()], a, d, c, e); - }, - - // overridden Element method - setY : function(y, a, d, c, e){ - this.setXY([this.getX(), y], a, d, c, e); - }, - - // overridden Element method - setSize : function(w, h, a, d, c, e){ - this.beforeAction(); - var cb = this.createCB(c); - supr.setSize.call(this, w, h, a, d, cb, e); - if(!a){ - cb(); - } - }, - - // overridden Element method - setWidth : function(w, a, d, c, e){ - this.beforeAction(); - var cb = this.createCB(c); - supr.setWidth.call(this, w, a, d, cb, e); - if(!a){ - cb(); - } - }, - - // overridden Element method - setHeight : function(h, a, d, c, e){ - this.beforeAction(); - var cb = this.createCB(c); - supr.setHeight.call(this, h, a, d, cb, e); - if(!a){ - cb(); - } - }, - - // overridden Element method - setBounds : function(x, y, w, h, a, d, c, e){ - this.beforeAction(); - var cb = this.createCB(c); - if(!a){ - this.storeXY([x, y]); - supr.setXY.call(this, [x, y]); - supr.setSize.call(this, w, h, a, d, cb, e); - cb(); - }else{ - supr.setBounds.call(this, x, y, w, h, a, d, cb, e); - } - return this; - }, - - - setZIndex : function(zindex){ - this.zindex = zindex; - this.setStyle("z-index", zindex + 2); - if(this.shadow){ - this.shadow.setZIndex(zindex + 1); - } - if(this.shim){ - this.shim.setStyle("z-index", zindex); - } - } -}); -})(); - -Ext.Shadow = function(config){ - Ext.apply(this, config); - if(typeof this.mode != "string"){ - this.mode = this.defaultMode; - } - var o = this.offset, a = {h: 0}; - var rad = Math.floor(this.offset/2); - switch(this.mode.toLowerCase()){ // all this hideous nonsense calculates the various offsets for shadows - case "drop": - a.w = 0; - a.l = a.t = o; - a.t -= 1; - if(Ext.isIE){ - a.l -= this.offset + rad; - a.t -= this.offset + rad; - a.w -= rad; - a.h -= rad; - a.t += 1; - } - break; - case "sides": - a.w = (o*2); - a.l = -o; - a.t = o-1; - if(Ext.isIE){ - a.l -= (this.offset - rad); - a.t -= this.offset + rad; - a.l += 1; - a.w -= (this.offset - rad)*2; - a.w -= rad + 1; - a.h -= 1; - } - break; - case "frame": - a.w = a.h = (o*2); - a.l = a.t = -o; - a.t += 1; - a.h -= 2; - if(Ext.isIE){ - a.l -= (this.offset - rad); - a.t -= (this.offset - rad); - a.l += 1; - a.w -= (this.offset + rad + 1); - a.h -= (this.offset + rad); - a.h += 1; - } - break; - }; - - this.adjusts = a; -}; - -Ext.Shadow.prototype = { - - - offset: 4, - - // private - defaultMode: "drop", - - - show : function(target){ - target = Ext.get(target); - if(!this.el){ - this.el = Ext.Shadow.Pool.pull(); - if(this.el.dom.nextSibling != target.dom){ - this.el.insertBefore(target); - } - } - this.el.setStyle("z-index", this.zIndex || parseInt(target.getStyle("z-index"), 10)-1); - if(Ext.isIE){ - this.el.dom.style.filter="progid:DXImageTransform.Microsoft.alpha(opacity=50) progid:DXImageTransform.Microsoft.Blur(pixelradius="+(this.offset)+")"; - } - this.realign( - target.getLeft(true), - target.getTop(true), - target.getWidth(), - target.getHeight() - ); - this.el.dom.style.display = "block"; - }, - - - isVisible : function(){ - return this.el ? true : false; - }, - - - realign : function(l, t, w, h){ - if(!this.el){ - return; - } - var a = this.adjusts, d = this.el.dom, s = d.style; - var iea = 0; - s.left = (l+a.l)+"px"; - s.top = (t+a.t)+"px"; - var sw = (w+a.w), sh = (h+a.h), sws = sw +"px", shs = sh + "px"; - if(s.width != sws || s.height != shs){ - s.width = sws; - s.height = shs; - if(!Ext.isIE){ - var cn = d.childNodes; - var sww = Math.max(0, (sw-12))+"px"; - cn[0].childNodes[1].style.width = sww; - cn[1].childNodes[1].style.width = sww; - cn[2].childNodes[1].style.width = sww; - cn[1].style.height = Math.max(0, (sh-12))+"px"; - } - } - }, - - - hide : function(){ - if(this.el){ - this.el.dom.style.display = "none"; - Ext.Shadow.Pool.push(this.el); - delete this.el; - } - }, - - - setZIndex : function(z){ - this.zIndex = z; - if(this.el){ - this.el.setStyle("z-index", z); - } - } -}; - -// Private utility class that manages the internal Shadow cache -Ext.Shadow.Pool = function(){ - var p = []; - var markup = Ext.isIE ? - '<div class="x-ie-shadow"></div>' : - '<div class="x-shadow"><div class="xst"><div class="xstl"></div><div class="xstc"></div><div class="xstr"></div></div><div class="xsc"><div class="xsml"></div><div class="xsmc"></div><div class="xsmr"></div></div><div class="xsb"><div class="xsbl"></div><div class="xsbc"></div><div class="xsbr"></div></div></div>'; - return { - pull : function(){ - var sh = p.shift(); - if(!sh){ - sh = Ext.get(Ext.DomHelper.insertHtml("beforeBegin", document.body.firstChild, markup)); - sh.autoBoxAdjust = false; - } - return sh; - }, - - push : function(sh){ - p.push(sh); - } - }; -}(); -Ext.BoxComponent = function(config){ - Ext.BoxComponent.superclass.constructor.call(this, config); - this.addEvents({ - resize : true, - move : true - }); -}; - -Ext.extend(Ext.BoxComponent, Ext.Component, { - boxReady : false, - // private, used to defer height settings to subclasses - deferHeight: false, - - setSize : function(w, h){ - // support for standard size objects - if(typeof w == 'object'){ - h = w.height; - w = w.width; - } - // not rendered - if(!this.boxReady){ - this.width = w; - this.height = h; - return this; - } - - // prevent recalcs when not needed - if(this.lastSize && this.lastSize.width == w && this.lastSize.height == h){ - return this; - } - this.lastSize = {width: w, height: h}; - - var adj = this.adjustSize(w, h); - var aw = adj.width, ah = adj.height; - if(aw !== undefined || ah !== undefined){ // this code is nasty but performs better with floaters - var rz = this.getResizeEl(); - if(!this.deferHeight && aw !== undefined && ah !== undefined){ - rz.setSize(aw, ah); - }else if(!this.deferHeight && ah !== undefined){ - rz.setHeight(ah); - }else if(aw !== undefined){ - rz.setWidth(aw); - } - this.onResize(aw, ah, w, h); - this.fireEvent('resize', this, aw, ah, w, h); - } - return this; - }, - - getSize : function(){ - return this.el.getSize(); - }, - - getPosition : function(local){ - if(local === true){ - return [this.el.getLeft(true), this.el.getTop(true)]; - } - return this.xy || this.el.getXY(); - }, - - getBox : function(local){ - var s = this.el.getSize(); - if(local){ - s.x = this.el.getLeft(true); - s.y = this.el.getTop(true); - }else{ - var xy = this.xy || this.el.getXY(); - s.x = xy[0]; - s.y = xy[1]; - } - return s; - }, - - updateBox : function(box){ - this.setSize(box.width, box.height); - this.setPagePosition(box.x, box.y); - }, - - getResizeEl : function(){ - return this.resizeEl || this.el; - }, - - getPositionEl : function(){ - return this.positionEl || this.el; - }, - - setPosition : function(x, y){ - this.x = x; - this.y = y; - if(!this.boxReady){ - return this; - } - var adj = this.adjustPosition(x, y); - var ax = adj.x, ay = adj.y; - - var el = this.getPositionEl(); - if(ax !== undefined || ay !== undefined){ - if(ax !== undefined && ay !== undefined){ - el.setLeftTop(ax, ay); - }else if(ax !== undefined){ - el.setLeft(ax); - }else if(ay !== undefined){ - el.setTop(ay); - } - this.onPosition(ax, ay); - this.fireEvent('move', this, ax, ay); - } - return this; - }, - - setPagePosition : function(x, y){ - this.pageX = x; - this.pageY = y; - if(!this.boxReady){ - return; - } - if(x === undefined || y === undefined){ // cannot translate undefined points - return; - } - var p = this.el.translatePoints(x, y); - this.setPosition(p.left, p.top); - return this; - }, - - onRender : function(ct, position){ - Ext.BoxComponent.superclass.onRender.call(this, ct, position); - if(this.resizeEl){ - this.resizeEl = Ext.get(this.resizeEl); - } - if(this.positionEl){ - this.positionEl = Ext.get(this.positionEl); - } - }, - - afterRender : function(){ - Ext.BoxComponent.superclass.afterRender.call(this); - this.boxReady = true; - this.setSize(this.width, this.height); - if(this.x || this.y){ - this.setPosition(this.x, this.y); - } - if(this.pageX || this.pageY){ - this.setPagePosition(this.pageX, this.pageY); - } - }, - - syncSize : function(){ - this.setSize(this.el.getWidth(), this.el.getHeight()); - }, - - onResize : function(adjWidth, adjHeight, rawWidth, rawHeight){ - - }, - - onPosition : function(x, y){ - - }, - - adjustSize : function(w, h){ - if(this.autoWidth){ - w = 'auto'; - } - if(this.autoHeight){ - h = 'auto'; - } - return {width : w, height: h}; - }, - - adjustPosition : function(x, y){ - return {x : x, y: y}; - } -}); - -Ext.SplitBar = function(dragElement, resizingElement, orientation, placement, existingProxy){ - - - this.el = Ext.get(dragElement, true); - this.el.dom.unselectable = "on"; - - this.resizingEl = Ext.get(resizingElement, true); - - - this.orientation = orientation || Ext.SplitBar.HORIZONTAL; - - - this.minSize = 0; - - - this.maxSize = 2000; - - - this.animate = false; - - - this.useShim = false; - - - this.shim = null; - - if(!existingProxy){ - - this.proxy = Ext.SplitBar.createProxy(this.orientation); - }else{ - this.proxy = Ext.get(existingProxy).dom; - } - - this.dd = new Ext.dd.DDProxy(this.el.dom.id, "XSplitBars", {dragElId : this.proxy.id}); - - - this.dd.b4StartDrag = this.onStartProxyDrag.createDelegate(this); - - - this.dd.endDrag = this.onEndProxyDrag.createDelegate(this); - - - this.dragSpecs = {}; - - - this.adapter = new Ext.SplitBar.BasicLayoutAdapter(); - this.adapter.init(this); - - if(this.orientation == Ext.SplitBar.HORIZONTAL){ - - this.placement = placement || (this.el.getX() > this.resizingEl.getX() ? Ext.SplitBar.LEFT : Ext.SplitBar.RIGHT); - this.el.addClass("x-splitbar-h"); - }else{ - - this.placement = placement || (this.el.getY() > this.resizingEl.getY() ? Ext.SplitBar.TOP : Ext.SplitBar.BOTTOM); - this.el.addClass("x-splitbar-v"); - } - - this.addEvents({ - - "resize" : true, - - "moved" : true, - - "beforeresize" : true, - - "beforeapply" : true - }); - - Ext.SplitBar.superclass.constructor.call(this); -}; - -Ext.extend(Ext.SplitBar, Ext.util.Observable, { - onStartProxyDrag : function(x, y){ - this.fireEvent("beforeresize", this); - if(!this.overlay){ - var o = Ext.DomHelper.insertFirst(document.body, {cls: "x-drag-overlay", html: " "}, true); - o.unselectable(); - o.enableDisplayMode("block"); - // all splitbars share the same overlay - Ext.SplitBar.prototype.overlay = o; - } - this.overlay.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true)); - this.overlay.show(); - Ext.get(this.proxy).setDisplayed("block"); - var size = this.adapter.getElementSize(this); - this.activeMinSize = this.getMinimumSize();; - this.activeMaxSize = this.getMaximumSize();; - var c1 = size - this.activeMinSize; - var c2 = Math.max(this.activeMaxSize - size, 0); - if(this.orientation == Ext.SplitBar.HORIZONTAL){ - this.dd.resetConstraints(); - this.dd.setXConstraint( - this.placement == Ext.SplitBar.LEFT ? c1 : c2, - this.placement == Ext.SplitBar.LEFT ? c2 : c1 - ); - this.dd.setYConstraint(0, 0); - }else{ - this.dd.resetConstraints(); - this.dd.setXConstraint(0, 0); - this.dd.setYConstraint( - this.placement == Ext.SplitBar.TOP ? c1 : c2, - this.placement == Ext.SplitBar.TOP ? c2 : c1 - ); - } - this.dragSpecs.startSize = size; - this.dragSpecs.startPoint = [x, y]; - Ext.dd.DDProxy.prototype.b4StartDrag.call(this.dd, x, y); - }, - - - onEndProxyDrag : function(e){ - Ext.get(this.proxy).setDisplayed(false); - var endPoint = Ext.lib.Event.getXY(e); - if(this.overlay){ - this.overlay.hide(); - } - var newSize; - if(this.orientation == Ext.SplitBar.HORIZONTAL){ - newSize = this.dragSpecs.startSize + - (this.placement == Ext.SplitBar.LEFT ? - endPoint[0] - this.dragSpecs.startPoint[0] : - this.dragSpecs.startPoint[0] - endPoint[0] - ); - }else{ - newSize = this.dragSpecs.startSize + - (this.placement == Ext.SplitBar.TOP ? - endPoint[1] - this.dragSpecs.startPoint[1] : - this.dragSpecs.startPoint[1] - endPoint[1] - ); - } - newSize = Math.min(Math.max(newSize, this.activeMinSize), this.activeMaxSize); - if(newSize != this.dragSpecs.startSize){ - if(this.fireEvent('beforeapply', this, newSize) !== false){ - this.adapter.setElementSize(this, newSize); - this.fireEvent("moved", this, newSize); - this.fireEvent("resize", this, newSize); - } - } - }, - - - getAdapter : function(){ - return this.adapter; - }, - - - setAdapter : function(adapter){ - this.adapter = adapter; - this.adapter.init(this); - }, - - - getMinimumSize : function(){ - return this.minSize; - }, - - - setMinimumSize : function(minSize){ - this.minSize = minSize; - }, - - - getMaximumSize : function(){ - return this.maxSize; - }, - - - setMaximumSize : function(maxSize){ - this.maxSize = maxSize; - }, - - - setCurrentSize : function(size){ - var oldAnimate = this.animate; - this.animate = false; - this.adapter.setElementSize(this, size); - this.animate = oldAnimate; - }, - - - destroy : function(removeEl){ - if(this.shim){ - this.shim.remove(); - } - this.dd.unreg(); - this.proxy.parentNode.removeChild(this.proxy); - if(removeEl){ - this.el.remove(); - } - } -}); - - -Ext.SplitBar.createProxy = function(dir){ - var proxy = new Ext.Element(document.createElement("div")); - proxy.unselectable(); - var cls = 'x-splitbar-proxy'; - proxy.addClass(cls + ' ' + (dir == Ext.SplitBar.HORIZONTAL ? cls +'-h' : cls + '-v')); - document.body.appendChild(proxy.dom); - return proxy.dom; -}; - - -Ext.SplitBar.BasicLayoutAdapter = function(){ -}; - -Ext.SplitBar.BasicLayoutAdapter.prototype = { - // do nothing for now - init : function(s){ - - }, - - getElementSize : function(s){ - if(s.orientation == Ext.SplitBar.HORIZONTAL){ - return s.resizingEl.getWidth(); - }else{ - return s.resizingEl.getHeight(); - } - }, - - - setElementSize : function(s, newSize, onComplete){ - if(s.orientation == Ext.SplitBar.HORIZONTAL){ - if(!s.animate){ - s.resizingEl.setWidth(newSize); - if(onComplete){ - onComplete(s, newSize); - } - }else{ - s.resizingEl.setWidth(newSize, true, .1, onComplete, 'easeOut'); - } - }else{ - - if(!s.animate){ - s.resizingEl.setHeight(newSize); - if(onComplete){ - onComplete(s, newSize); - } - }else{ - s.resizingEl.setHeight(newSize, true, .1, onComplete, 'easeOut'); - } - } - } -}; - - -Ext.SplitBar.AbsoluteLayoutAdapter = function(container){ - this.basic = new Ext.SplitBar.BasicLayoutAdapter(); - this.container = Ext.get(container); -}; - -Ext.SplitBar.AbsoluteLayoutAdapter.prototype = { - init : function(s){ - this.basic.init(s); - }, - - getElementSize : function(s){ - return this.basic.getElementSize(s); - }, - - setElementSize : function(s, newSize, onComplete){ - this.basic.setElementSize(s, newSize, this.moveSplitter.createDelegate(this, [s])); - }, - - moveSplitter : function(s){ - var yes = Ext.SplitBar; - switch(s.placement){ - case yes.LEFT: - s.el.setX(s.resizingEl.getRight()); - break; - case yes.RIGHT: - s.el.setStyle("right", (this.container.getWidth() - s.resizingEl.getLeft()) + "px"); - break; - case yes.TOP: - s.el.setY(s.resizingEl.getBottom()); - break; - case yes.BOTTOM: - s.el.setY(s.resizingEl.getTop() - s.el.getHeight()); - break; - } - } -}; - - -Ext.SplitBar.VERTICAL = 1; - - -Ext.SplitBar.HORIZONTAL = 2; - - -Ext.SplitBar.LEFT = 1; - - -Ext.SplitBar.RIGHT = 2; - - -Ext.SplitBar.TOP = 3; - - -Ext.SplitBar.BOTTOM = 4; - - -Ext.View = function(container, tpl, config){ - this.el = Ext.get(container); - if(typeof tpl == "string"){ - tpl = new Ext.Template(tpl); - } - tpl.compile(); - - this.tpl = tpl; - - Ext.apply(this, config); - - - this.addEvents({ - - "beforeclick" : true, - - "click" : true, - - "dblclick" : true, - - "contextmenu" : true, - - "selectionchange" : true, - - - "beforeselect" : true - }); - - this.el.on({ - "click": this.onClick, - "dblclick": this.onDblClick, - "contextmenu": this.onContextMenu, - scope:this - }); - - this.selections = []; - this.nodes = []; - this.cmp = new Ext.CompositeElementLite([]); - if(this.store){ - this.setStore(this.store, true); - } - Ext.View.superclass.constructor.call(this); -}; - -Ext.extend(Ext.View, Ext.util.Observable, { - - selectedClass : "x-view-selected", - - emptyText : "", - - getEl : function(){ - return this.el; - }, - - - refresh : function(){ - var t = this.tpl; - this.clearSelections(); - this.el.update(""); - var html = []; - var records = this.store.getRange(); - if(records.length < 1){ - this.el.update(this.emptyText); - return; - } - for(var i = 0, len = records.length; i < len; i++){ - var data = this.prepareData(records[i].data, i, records[i]); - html[html.length] = t.apply(data); - } - this.el.update(html.join("")); - this.nodes = this.el.dom.childNodes; - this.updateIndexes(0); - }, - - - prepareData : function(data){ - return data; - }, - - onUpdate : function(ds, record){ - this.clearSelections(); - var index = this.store.indexOf(record); - var n = this.nodes[index]; - this.tpl.insertBefore(n, this.prepareData(record.data)); - n.parentNode.removeChild(n); - this.updateIndexes(index, index); - }, - - onAdd : function(ds, records, index){ - this.clearSelections(); - if(this.nodes.length == 0){ - this.refresh(); - return; - } - var n = this.nodes[index]; - for(var i = 0, len = records.length; i < len; i++){ - var d = this.prepareData(records[i].data); - if(n){ - this.tpl.insertBefore(n, d); - }else{ - this.tpl.append(this.el, d); - } - } - this.updateIndexes(index); - }, - - onRemove : function(ds, record, index){ - this.clearSelections(); - this.el.dom.removeChild(this.nodes[index]); - this.updateIndexes(index); - }, - - - refreshNode : function(index){ - this.onUpdate(this.store, this.store.getAt(index)); - }, - - updateIndexes : function(startIndex, endIndex){ - var ns = this.nodes; - startIndex = startIndex || 0; - endIndex = endIndex || ns.length - 1; - for(var i = startIndex; i <= endIndex; i++){ - ns[i].nodeIndex = i; - } - }, - - - setStore : function(store, initial){ - if(!initial && this.store){ - this.store.un("datachanged", this.refresh); - this.store.un("add", this.onAdd); - this.store.un("remove", this.onRemove); - this.store.un("update", this.onUpdate); - this.store.un("clear", this.refresh); - } - if(store){ - store.on("datachanged", this.refresh, this); - store.on("add", this.onAdd, this); - store.on("remove", this.onRemove, this); - store.on("update", this.onUpdate, this); - store.on("clear", this.refresh, this); - } - this.store = store; - if(store){ - this.refresh(); - } - }, - - - findItemFromChild : function(node){ - var el = this.el.dom; - if(!node || node.parentNode == el){ - return node; - } - var p = node.parentNode; - while(p && p != el){ - if(p.parentNode == el){ - return p; - } - p = p.parentNode; - } - return null; - }, - - - onClick : function(e){ - var item = this.findItemFromChild(e.getTarget()); - if(item){ - var index = this.indexOf(item); - if(this.onItemClick(item, index, e) !== false){ - this.fireEvent("click", this, index, item, e); - } - }else{ - this.clearSelections(); - } - }, - - - onContextMenu : function(e){ - var item = this.findItemFromChild(e.getTarget()); - if(item){ - this.fireEvent("contextmenu", this, this.indexOf(item), item, e); - } - }, - - - onDblClick : function(e){ - var item = this.findItemFromChild(e.getTarget()); - if(item){ - this.fireEvent("dblclick", this, this.indexOf(item), item, e); - } - }, - - onItemClick : function(item, index, e){ - if(this.fireEvent("beforeclick", this, index, item, e) === false){ - return false; - } - if(this.multiSelect || this.singleSelect){ - if(this.multiSelect && e.shiftKey && this.lastSelection){ - this.select(this.getNodes(this.indexOf(this.lastSelection), index), false); - }else{ - this.select(item, this.multiSelect && e.ctrlKey); - this.lastSelection = item; - } - e.preventDefault(); - } - return true; - }, - - - getSelectionCount : function(){ - return this.selections.length; - }, - - - getSelectedNodes : function(){ - return this.selections; - }, - - - getSelectedIndexes : function(){ - var indexes = [], s = this.selections; - for(var i = 0, len = s.length; i < len; i++){ - indexes.push(s[i].nodeIndex); - } - return indexes; - }, - - - clearSelections : function(suppressEvent){ - if(this.nodes && (this.multiSelect || this.singleSelect) && this.selections.length > 0){ - this.cmp.elements = this.selections; - this.cmp.removeClass(this.selectedClass); - this.selections = []; - if(!suppressEvent){ - this.fireEvent("selectionchange", this, this.selections); - } - } - }, - - - isSelected : function(node){ - var s = this.selections; - if(s.length < 1){ - return false; - } - node = this.getNode(node); - return s.indexOf(node) !== -1; - }, - - - select : function(nodeInfo, keepExisting, suppressEvent){ - if(nodeInfo instanceof Array){ - if(!keepExisting){ - this.clearSelections(true); - } - for(var i = 0, len = nodeInfo.length; i < len; i++){ - this.select(nodeInfo[i], true, true); - } - } else{ - var node = this.getNode(nodeInfo); - if(node && !this.isSelected(node)){ - if(!keepExisting){ - this.clearSelections(true); - } - if(this.fireEvent("beforeselect", this, node, this.selections) !== false){ - Ext.fly(node).addClass(this.selectedClass); - this.selections.push(node); - if(!suppressEvent){ - this.fireEvent("selectionchange", this, this.selections); - } - } - } - } - }, - - - getNode : function(nodeInfo){ - if(typeof nodeInfo == "string"){ - return document.getElementById(nodeInfo); - }else if(typeof nodeInfo == "number"){ - return this.nodes[nodeInfo]; - } - return nodeInfo; - }, - - - getNodes : function(start, end){ - var ns = this.nodes; - start = start || 0; - end = typeof end == "undefined" ? ns.length - 1 : end; - var nodes = []; - if(start <= end){ - for(var i = start; i <= end; i++){ - nodes.push(ns[i]); - } - } else{ - for(var i = start; i >= end; i--){ - nodes.push(ns[i]); - } - } - return nodes; - }, - - - indexOf : function(node){ - node = this.getNode(node); - if(typeof node.nodeIndex == "number"){ - return node.nodeIndex; - } - var ns = this.nodes; - for(var i = 0, len = ns.length; i < len; i++){ - if(ns[i] == node){ - return i; - } - } - return -1; - } -}); - - -Ext.JsonView = function(container, tpl, config){ - Ext.JsonView.superclass.constructor.call(this, container, tpl, config); - - var um = this.el.getUpdateManager(); - um.setRenderer(this); - um.on("update", this.onLoad, this); - um.on("failure", this.onLoadException, this); - - - - - this.addEvents({ - 'beforerender' : true, - 'load' : true, - 'loadexception' : true - }); -}; -Ext.extend(Ext.JsonView, Ext.View, { - - jsonRoot : "", - - - refresh : function(){ - this.clearSelections(); - this.el.update(""); - var html = []; - var o = this.jsonData; - if(o && o.length > 0){ - for(var i = 0, len = o.length; i < len; i++){ - var data = this.prepareData(o[i], i, o); - html[html.length] = this.tpl.apply(data); - } - }else{ - html.push(this.emptyText); - } - this.el.update(html.join("")); - this.nodes = this.el.dom.childNodes; - this.updateIndexes(0); - }, - - - load : function(){ - var um = this.el.getUpdateManager(); - um.update.apply(um, arguments); - }, - - render : function(el, response){ - this.clearSelections(); - this.el.update(""); - var o; - try{ - o = Ext.util.JSON.decode(response.responseText); - if(this.jsonRoot){ - o = eval("o." + this.jsonRoot); - } - } catch(e){ - } - - this.jsonData = o; - this.beforeRender(); - this.refresh(); - }, - - - getCount : function(){ - return this.jsonData ? this.jsonData.length : 0; - }, - - - getNodeData : function(node){ - if(node instanceof Array){ - var data = []; - for(var i = 0, len = node.length; i < len; i++){ - data.push(this.getNodeData(node[i])); - } - return data; - } - return this.jsonData[this.indexOf(node)] || null; - }, - - beforeRender : function(){ - this.snapshot = this.jsonData; - if(this.sortInfo){ - this.sort.apply(this, this.sortInfo); - } - this.fireEvent("beforerender", this, this.jsonData); - }, - - onLoad : function(el, o){ - this.fireEvent("load", this, this.jsonData, o); - }, - - onLoadException : function(el, o){ - this.fireEvent("loadexception", this, o); - }, - - - filter : function(property, value){ - if(this.jsonData){ - var data = []; - var ss = this.snapshot; - if(typeof value == "string"){ - var vlen = value.length; - if(vlen == 0){ - this.clearFilter(); - return; - } - value = value.toLowerCase(); - for(var i = 0, len = ss.length; i < len; i++){ - var o = ss[i]; - if(o[property].substr(0, vlen).toLowerCase() == value){ - data.push(o); - } - } - } else if(value.exec){ // regex? - for(var i = 0, len = ss.length; i < len; i++){ - var o = ss[i]; - if(value.test(o[property])){ - data.push(o); - } - } - } else{ - return; - } - this.jsonData = data; - this.refresh(); - } - }, - - - filterBy : function(fn, scope){ - if(this.jsonData){ - var data = []; - var ss = this.snapshot; - for(var i = 0, len = ss.length; i < len; i++){ - var o = ss[i]; - if(fn.call(scope || this, o)){ - data.push(o); - } - } - this.jsonData = data; - this.refresh(); - } - }, - - - clearFilter : function(){ - if(this.snapshot && this.jsonData != this.snapshot){ - this.jsonData = this.snapshot; - this.refresh(); - } - }, - - - - sort : function(property, dir, sortType){ - this.sortInfo = Array.prototype.slice.call(arguments, 0); - if(this.jsonData){ - var p = property; - var dsc = dir && dir.toLowerCase() == "desc"; - var f = function(o1, o2){ - var v1 = sortType ? sortType(o1[p]) : o1[p]; - var v2 = sortType ? sortType(o2[p]) : o2[p]; - ; - if(v1 < v2){ - return dsc ? +1 : -1; - } else if(v1 > v2){ - return dsc ? -1 : +1; - } else{ - return 0; - } - }; - this.jsonData.sort(f); - this.refresh(); - if(this.jsonData != this.snapshot){ - this.snapshot.sort(f); - } - } - } -}); - -Ext.ColorPalette = function(config){ - Ext.ColorPalette.superclass.constructor.call(this, config); - this.addEvents({ - - select: true - }); - - if(this.handler){ - this.on("select", this.handler, this.scope, true); - } -}; -Ext.extend(Ext.ColorPalette, Ext.Component, { - - itemCls : "x-color-palette", - - value : null, - clickEvent:'click', - // private - ctype: "Ext.ColorPalette", - - - allowReselect : false, - - - colors : [ - "000000", "993300", "333300", "003300", "003366", "000080", "333399", "333333", - "800000", "FF6600", "808000", "008000", "008080", "0000FF", "666699", "808080", - "FF0000", "FF9900", "99CC00", "339966", "33CCCC", "3366FF", "800080", "969696", - "FF00FF", "FFCC00", "FFFF00", "00FF00", "00FFFF", "00CCFF", "993366", "C0C0C0", - "FF99CC", "FFCC99", "FFFF99", "CCFFCC", "CCFFFF", "99CCFF", "CC99FF", "FFFFFF" - ], - - // private - onRender : function(container, position){ - var t = new Ext.MasterTemplate( - '<tpl><a href="#" class="color-{0}" hidefocus="on"><em><span style="background:#{0}" unselectable="on"> </span></em></a></tpl>' - ); - var c = this.colors; - for(var i = 0, len = c.length; i < len; i++){ - t.add([c[i]]); - } - var el = document.createElement("div"); - el.className = this.itemCls; - t.overwrite(el); - container.dom.insertBefore(el, position); - this.el = Ext.get(el); - this.el.on(this.clickEvent, this.handleClick, this, {delegate: "a"}); - if(this.clickEvent != 'click'){ - this.el.on('click', Ext.emptyFn, this, {delegate: "a", preventDefault:true}); - } - }, - - // private - afterRender : function(){ - Ext.ColorPalette.superclass.afterRender.call(this); - if(this.value){ - var s = this.value; - this.value = null; - this.select(s); - } - }, - - // private - handleClick : function(e, t){ - e.preventDefault(); - if(!this.disabled){ - var c = t.className.match(/(?:^|\s)color-(.{6})(?:\s|$)/)[1]; - this.select(c.toUpperCase()); - } - }, - - - select : function(color){ - color = color.replace("#", ""); - if(color != this.value || this.allowReselect){ - var el = this.el; - if(this.value){ - el.child("a.color-"+this.value).removeClass("x-color-palette-sel"); - } - el.child("a.color-"+color).addClass("x-color-palette-sel"); - this.value = color; - this.fireEvent("select", this, color); - } - } -}); - -Ext.DatePicker = function(config){ - Ext.DatePicker.superclass.constructor.call(this, config); - - this.value = config && config.value ? - config.value.clearTime() : new Date().clearTime(); - - this.addEvents({ - - select: true - }); - - if(this.handler){ - this.on("select", this.handler, this.scope || this); - } - // build the disabledDatesRE - if(!this.disabledDatesRE && this.disabledDates){ - var dd = this.disabledDates; - var re = "(?:"; - for(var i = 0; i < dd.length; i++){ - re += dd[i]; - if(i != dd.length-1) re += "|"; - } - this.disabledDatesRE = new RegExp(re + ")"); - } -}; - -Ext.extend(Ext.DatePicker, Ext.Component, { - - todayText : "Today", - - okText : " OK ", //   to give the user extra clicking room - - cancelText : "Cancel", - - todayTip : "{0} (Spacebar)", - - minDate : null, - - maxDate : null, - - minText : "This date is before the minimum date", - - maxText : "This date is after the maximum date", - - format : "m/d/y", - - disabledDays : null, - - disabledDaysText : "", - - disabledDatesRE : null, - - disabledDatesText : "", - - constrainToViewport : true, - - monthNames : Date.monthNames, - - dayNames : Date.dayNames, - - nextText: 'Next Month (Control+Right)', - - prevText: 'Previous Month (Control+Left)', - - monthYearText: 'Choose a month (Control+Up/Down to move years)', - - startDay : 0, - - - setValue : function(value){ - var old = this.value; - this.value = value.clearTime(true); - if(this.el){ - this.update(this.value); - } - }, - - - getValue : function(){ - return this.value; - }, - - // private - focus : function(){ - if(this.el){ - this.update(this.activeDate); - } - }, - - // private - onRender : function(container, position){ - var m = [ - '<table cellspacing="0">', - '<tr><td class="x-date-left"><a href="#" title="', this.prevText ,'"> </a></td><td class="x-date-middle" align="center"></td><td class="x-date-right"><a href="#" title="', this.nextText ,'"> </a></td></tr>', - '<tr><td colspan="3"><table class="x-date-inner" cellspacing="0"><thead><tr>']; - var dn = this.dayNames; - for(var i = 0; i < 7; i++){ - var d = this.startDay+i; - if(d > 6){ - d = d-7; - } - m.push("<th><span>", dn[d].substr(0,1), "</span></th>"); - } - m[m.length] = "</tr></thead><tbody><tr>"; - for(var i = 0; i < 42; i++) { - if(i % 7 == 0 && i != 0){ - m[m.length] = "</tr><tr>"; - } - m[m.length] = '<td><a href="#" hidefocus="on" class="x-date-date" tabIndex="1"><em><span></span></em></a></td>'; - } - m[m.length] = '</tr></tbody></table></td></tr><tr><td colspan="3" class="x-date-bottom" align="center"></td></tr></table><div class="x-date-mp"></div>'; - - var el = document.createElement("div"); - el.className = "x-date-picker"; - el.innerHTML = m.join(""); - - container.dom.insertBefore(el, position); - - this.el = Ext.get(el); - this.eventEl = Ext.get(el.firstChild); - - new Ext.util.ClickRepeater(this.el.child("td.x-date-left a"), { - handler: this.showPrevMonth, - scope: this, - preventDefault:true, - stopDefault:true - }); - - new Ext.util.ClickRepeater(this.el.child("td.x-date-right a"), { - handler: this.showNextMonth, - scope: this, - preventDefault:true, - stopDefault:true - }); - - this.eventEl.on("mousewheel", this.handleMouseWheel, this); - - this.monthPicker = this.el.down('div.x-date-mp'); - this.monthPicker.enableDisplayMode('block'); - - var kn = new Ext.KeyNav(this.eventEl, { - "left" : function(e){ - e.ctrlKey ? - this.showPrevMonth() : - this.update(this.activeDate.add("d", -1)); - }, - - "right" : function(e){ - e.ctrlKey ? - this.showNextMonth() : - this.update(this.activeDate.add("d", 1)); - }, - - "up" : function(e){ - e.ctrlKey ? - this.showNextYear() : - this.update(this.activeDate.add("d", -7)); - }, - - "down" : function(e){ - e.ctrlKey ? - this.showPrevYear() : - this.update(this.activeDate.add("d", 7)); - }, - - "pageUp" : function(e){ - this.showNextMonth(); - }, - - "pageDown" : function(e){ - this.showPrevMonth(); - }, - - "enter" : function(e){ - e.stopPropagation(); - return true; - }, - - scope : this - }); - - this.eventEl.on("click", this.handleDateClick, this, {delegate: "a.x-date-date"}); - - this.eventEl.addKeyListener(Ext.EventObject.SPACE, this.selectToday, this); - - this.el.unselectable(); - - this.cells = this.el.select("table.x-date-inner tbody td"); - this.textNodes = this.el.query("table.x-date-inner tbody span"); - - this.mbtn = new Ext.Button(this.el.child("td.x-date-middle", true), { - text: " ", - tooltip: this.monthYearText - }); - - this.mbtn.on('click', this.showMonthPicker, this); - this.mbtn.el.child(this.mbtn.menuClassTarget).addClass("x-btn-with-menu"); - - - var today = (new Date()).dateFormat(this.format); - var todayBtn = new Ext.Button(this.el.child("td.x-date-bottom", true), { - text: String.format(this.todayText, today), - tooltip: String.format(this.todayTip, today), - handler: this.selectToday, - scope: this - }); - - if(Ext.isIE){ - this.el.repaint(); - } - this.update(this.value); - }, - - createMonthPicker : function(){ - if(!this.monthPicker.dom.firstChild){ - var buf = ['<table border="0" cellspacing="0">']; - for(var i = 0; i < 6; i++){ - buf.push( - '<tr><td class="x-date-mp-month"><a href="#">', this.monthNames[i].substr(0, 3), '</a></td>', - '<td class="x-date-mp-month x-date-mp-sep"><a href="#">', this.monthNames[i+6].substr(0, 3), '</a></td>', - i == 0 ? - '<td class="x-date-mp-ybtn" align="center"><a class="x-date-mp-prev"></a></td><td class="x-date-mp-ybtn" align="center"><a class="x-date-mp-next"></a></td>' : - '<td class="x-date-mp-year"><a href="#"></a></td><td class="x-date-mp-year"><a href="#"></a></td></tr>' - ); - } - buf.push( - '<tr class="x-date-mp-btns"><td colspan="4"><button type="button" class="x-date-mp-ok">', - this.okText, - '</button><button type="button" class="x-date-mp-cancel">', - this.cancelText, - '</button></td></tr>', - '</table>' - ); - this.monthPicker.update(buf.join('')); - this.monthPicker.on('click', this.onMonthClick, this); - this.monthPicker.on('dblclick', this.onMonthDblClick, this); - - this.mpMonths = this.monthPicker.select('td.x-date-mp-month'); - this.mpYears = this.monthPicker.select('td.x-date-mp-year'); - - this.mpMonths.each(function(m, a, i){ - i += 1; - if((i%2) == 0){ - m.dom.xmonth = 5 + Math.round(i * .5); - }else{ - m.dom.xmonth = Math.round((i-1) * .5); - } - }); - } - }, - - showMonthPicker : function(){ - this.createMonthPicker(); - var size = this.el.getSize(); - this.monthPicker.setSize(size); - this.monthPicker.child('table').setSize(size); - - this.mpSelMonth = (this.activeDate || this.value).getMonth(); - this.updateMPMonth(this.mpSelMonth); - this.mpSelYear = (this.activeDate || this.value).getFullYear(); - this.updateMPYear(this.mpSelYear); - - this.monthPicker.slideIn('t', {duration:.2}); - }, - - updateMPYear : function(y){ - this.mpyear = y; - var ys = this.mpYears.elements; - for(var i = 1; i <= 10; i++){ - var td = ys[i-1], y2; - if((i%2) == 0){ - y2 = y + Math.round(i * .5); - td.firstChild.innerHTML = y2; - td.xyear = y2; - }else{ - y2 = y - (5-Math.round(i * .5)); - td.firstChild.innerHTML = y2; - td.xyear = y2; - } - this.mpYears.item(i-1)[y2 == this.mpSelYear ? 'addClass' : 'removeClass']('x-date-mp-sel'); - } - }, - - updateMPMonth : function(sm){ - this.mpMonths.each(function(m, a, i){ - m[m.dom.xmonth == sm ? 'addClass' : 'removeClass']('x-date-mp-sel'); - }); - }, - - selectMPMonth: function(m){ - - }, - - onMonthClick : function(e, t){ - e.stopEvent(); - var el = new Ext.Element(t), pn; - if(el.is('button.x-date-mp-cancel')){ - this.hideMonthPicker(); - } - else if(el.is('button.x-date-mp-ok')){ - this.update(new Date(this.mpSelYear, this.mpSelMonth, (this.activeDate || this.value).getDate())); - this.hideMonthPicker(); - } - else if(pn = el.up('td.x-date-mp-month', 2)){ - this.mpMonths.removeClass('x-date-mp-sel'); - pn.addClass('x-date-mp-sel'); - this.mpSelMonth = pn.dom.xmonth; - } - else if(pn = el.up('td.x-date-mp-year', 2)){ - this.mpYears.removeClass('x-date-mp-sel'); - pn.addClass('x-date-mp-sel'); - this.mpSelYear = pn.dom.xyear; - } - else if(el.is('a.x-date-mp-prev')){ - this.updateMPYear(this.mpyear-10); - } - else if(el.is('a.x-date-mp-next')){ - this.updateMPYear(this.mpyear+10); - } - }, - - onMonthDblClick : function(e, t){ - e.stopEvent(); - var el = new Ext.Element(t), pn; - if(pn = el.up('td.x-date-mp-month', 2)){ - this.update(new Date(this.mpSelYear, pn.dom.xmonth, (this.activeDate || this.value).getDate())); - this.hideMonthPicker(); - } - else if(pn = el.up('td.x-date-mp-year', 2)){ - this.update(new Date(pn.dom.xyear, this.mpSelMonth, (this.activeDate || this.value).getDate())); - this.hideMonthPicker(); - } - }, - - hideMonthPicker : function(disableAnim){ - if(this.monthPicker){ - if(disableAnim === true){ - this.monthPicker.hide(); - }else{ - this.monthPicker.slideOut('t', {duration:.2}); - } - } - }, - - // private - showPrevMonth : function(e){ - this.update(this.activeDate.add("mo", -1)); - }, - - // private - showNextMonth : function(e){ - this.update(this.activeDate.add("mo", 1)); - }, - - // private - showPrevYear : function(){ - this.update(this.activeDate.add("y", -1)); - }, - - // private - showNextYear : function(){ - this.update(this.activeDate.add("y", 1)); - }, - - // private - handleMouseWheel : function(e){ - var delta = e.getWheelDelta(); - if(delta > 0){ - this.showPrevMonth(); - e.stopEvent(); - } else if(delta < 0){ - this.showNextMonth(); - e.stopEvent(); - } - }, - - // private - handleDateClick : function(e, t){ - e.stopEvent(); - if(t.dateValue && !Ext.fly(t.parentNode).hasClass("x-date-disabled")){ - this.setValue(new Date(t.dateValue)); - this.fireEvent("select", this, this.value); - } - }, - - // private - selectToday : function(){ - this.setValue(new Date().clearTime()); - this.fireEvent("select", this, this.value); - }, - - // private - update : function(date){ - var vd = this.activeDate; - this.activeDate = date; - if(vd && this.el){ - var t = date.getTime(); - if(vd.getMonth() == date.getMonth() && vd.getFullYear() == date.getFullYear()){ - this.cells.removeClass("x-date-selected"); - this.cells.each(function(c){ - if(c.dom.firstChild.dateValue == t){ - c.addClass("x-date-selected"); - setTimeout(function(){ - try{c.dom.firstChild.focus();}catch(e){} - }, 50); - return false; - } - }); - return; - } - } - var days = date.getDaysInMonth(); - var firstOfMonth = date.getFirstDateOfMonth(); - var startingPos = firstOfMonth.getDay()-this.startDay; - - if(startingPos <= this.startDay){ - startingPos += 7; - } - - var pm = date.add("mo", -1); - var prevStart = pm.getDaysInMonth()-startingPos; - - var cells = this.cells.elements; - var textEls = this.textNodes; - days += startingPos; - - // convert everything to numbers so it's fast - var day = 86400000; - var d = (new Date(pm.getFullYear(), pm.getMonth(), prevStart)).clearTime(); - var today = new Date().clearTime().getTime(); - var sel = date.clearTime().getTime(); - var min = this.minDate ? this.minDate.clearTime() : Number.NEGATIVE_INFINITY; - var max = this.maxDate ? this.maxDate.clearTime() : Number.POSITIVE_INFINITY; - var ddMatch = this.disabledDatesRE; - var ddText = this.disabledDatesText; - var ddays = this.disabledDays ? this.disabledDays.join("") : false; - var ddaysText = this.disabledDaysText; - var format = this.format; - - var setCellClass = function(cal, cell){ - cell.title = ""; - var t = d.getTime(); - cell.firstChild.dateValue = t; - if(t == today){ - cell.className += " x-date-today"; - cell.title = cal.todayText; - } - if(t == sel){ - cell.className += " x-date-selected"; - setTimeout(function(){ - try{cell.firstChild.focus();}catch(e){} - }, 50); - } - // disabling - if(t < min) { - cell.className = " x-date-disabled"; - cell.title = cal.minText; - return; - } - if(t > max) { - cell.className = " x-date-disabled"; - cell.title = cal.maxText; - return; - } - if(ddays){ - if(ddays.indexOf(d.getDay()) != -1){ - cell.title = ddaysText; - cell.className = " x-date-disabled"; - } - } - if(ddMatch && format){ - var fvalue = d.dateFormat(format); - if(ddMatch.test(fvalue)){ - cell.title = ddText.replace("%0", fvalue); - cell.className = " x-date-disabled"; - } - } - }; - - var i = 0; - for(; i < startingPos; i++) { - textEls[i].innerHTML = (++prevStart); - d.setDate(d.getDate()+1); - cells[i].className = "x-date-prevday"; - setCellClass(this, cells[i]); - } - for(; i < days; i++){ - intDay = i - startingPos + 1; - textEls[i].innerHTML = (intDay); - d.setDate(d.getDate()+1); - cells[i].className = "x-date-active"; - setCellClass(this, cells[i]); - } - var extraDays = 0; - for(; i < 42; i++) { - textEls[i].innerHTML = (++extraDays); - d.setDate(d.getDate()+1); - cells[i].className = "x-date-nextday"; - setCellClass(this, cells[i]); - } - - this.mbtn.setText(this.monthNames[date.getMonth()] + " " + date.getFullYear()); - - if(!this.internalRender){ - var main = this.el.dom.firstChild; - var w = main.offsetWidth; - this.el.setWidth(w + this.el.getBorderWidth("lr")); - Ext.fly(main).setWidth(w); - this.internalRender = true; - // opera does not respect the auto grow header center column - // then, after it gets a width opera refuses to recalculate - // without a second pass - if(Ext.isOpera && !this.secondPass){ - main.rows[0].cells[1].style.width = (w - (main.rows[0].cells[0].offsetWidth+main.rows[0].cells[2].offsetWidth)) + "px"; - this.secondPass = true; - this.update.defer(10, this, [date]); - } - } - } -}); - -Ext.TabPanel = function(container, config){ - - this.el = Ext.get(container, true); - if(config){ - if(typeof config == "boolean"){ - this.tabPosition = config ? "bottom" : "top"; - }else{ - Ext.apply(this, config); - } - } - if(this.tabPosition == "bottom"){ - this.bodyEl = Ext.get(this.createBody(this.el.dom)); - this.el.addClass("x-tabs-bottom"); - } - this.stripWrap = Ext.get(this.createStrip(this.el.dom), true); - this.stripEl = Ext.get(this.createStripList(this.stripWrap.dom), true); - this.stripBody = Ext.get(this.stripWrap.dom.firstChild.firstChild, true); - if(Ext.isIE){ - Ext.fly(this.stripWrap.dom.firstChild).setStyle("overflow-x", "hidden"); - } - if(this.tabPosition != "bottom"){ - - this.bodyEl = Ext.get(this.createBody(this.el.dom)); - this.el.addClass("x-tabs-top"); - } - this.items = []; - - this.bodyEl.setStyle("position", "relative"); - - this.active = null; - this.activateDelegate = this.activate.createDelegate(this); - - this.addEvents({ - - "tabchange": true, - - "beforetabchange" : true - }); - - Ext.EventManager.onWindowResize(this.onResize, this); - this.cpad = this.el.getPadding("lr"); - this.hiddenCount = 0; - - Ext.TabPanel.superclass.constructor.call(this); -}; - -Ext.extend(Ext.TabPanel, Ext.util.Observable, { - - tabPosition : "top", - currentTabWidth : 0, - - minTabWidth : 40, - - maxTabWidth : 250, - - preferredTabWidth : 175, - - resizeTabs : false, - - monitorResize : true, - - - addTab : function(id, text, content, closable){ - var item = new Ext.TabPanelItem(this, id, text, closable); - this.addTabItem(item); - if(content){ - item.setContent(content); - } - return item; - }, - - - getTab : function(id){ - return this.items[id]; - }, - - - hideTab : function(id){ - var t = this.items[id]; - if(!t.isHidden()){ - t.setHidden(true); - this.hiddenCount++; - this.autoSizeTabs(); - } - }, - - - unhideTab : function(id){ - var t = this.items[id]; - if(t.isHidden()){ - t.setHidden(false); - this.hiddenCount--; - this.autoSizeTabs(); - } - }, - - - addTabItem : function(item){ - this.items[item.id] = item; - this.items.push(item); - if(this.resizeTabs){ - item.setWidth(this.currentTabWidth || this.preferredTabWidth); - this.autoSizeTabs(); - }else{ - item.autoSize(); - } - }, - - - removeTab : function(id){ - var items = this.items; - var tab = items[id]; - if(!tab) return; - var index = items.indexOf(tab); - if(this.active == tab && items.length > 1){ - var newTab = this.getNextAvailable(index); - if(newTab)newTab.activate(); - } - this.stripEl.dom.removeChild(tab.pnode.dom); - if(tab.bodyEl.dom.parentNode == this.bodyEl.dom){ // if it was moved already prevent error - this.bodyEl.dom.removeChild(tab.bodyEl.dom); - } - items.splice(index, 1); - delete this.items[tab.id]; - tab.fireEvent("close", tab); - tab.purgeListeners(); - this.autoSizeTabs(); - }, - - getNextAvailable : function(start){ - var items = this.items; - var index = start; - // look for a next tab that will slide over to - // replace the one being removed - while(index < items.length){ - var item = items[++index]; - if(item && !item.isHidden()){ - return item; - } - } - // if one isn't found select the previous tab (on the left) - index = start; - while(index >= 0){ - var item = items[--index]; - if(item && !item.isHidden()){ - return item; - } - } - return null; - }, - - - disableTab : function(id){ - var tab = this.items[id]; - if(tab && this.active != tab){ - tab.disable(); - } - }, - - - enableTab : function(id){ - var tab = this.items[id]; - tab.enable(); - }, - - - activate : function(id){ - var tab = this.items[id]; - if(!tab){ - return null; - } - if(tab == this.active){ - return tab; - } - var e = {}; - this.fireEvent("beforetabchange", this, e, tab); - if(e.cancel !== true && !tab.disabled){ - if(this.active){ - this.active.hide(); - } - this.active = this.items[id]; - this.active.show(); - this.fireEvent("tabchange", this, this.active); - } - return tab; - }, - - - getActiveTab : function(){ - return this.active; - }, - - - syncHeight : function(targetHeight){ - var height = (targetHeight || this.el.getHeight())-this.el.getBorderWidth("tb")-this.el.getPadding("tb"); - var bm = this.bodyEl.getMargins(); - var newHeight = height-(this.stripWrap.getHeight()||0)-(bm.top+bm.bottom); - this.bodyEl.setHeight(newHeight); - return newHeight; - }, - - onResize : function(){ - if(this.monitorResize){ - this.autoSizeTabs(); - } - }, - - - beginUpdate : function(){ - this.updating = true; - }, - - - endUpdate : function(){ - this.updating = false; - this.autoSizeTabs(); - }, - - - autoSizeTabs : function(){ - var count = this.items.length; - var vcount = count - this.hiddenCount; - if(!this.resizeTabs || count < 1 || vcount < 1 || this.updating) return; - var w = Math.max(this.el.getWidth() - this.cpad, 10); - var availWidth = Math.floor(w / vcount); - var b = this.stripBody; - if(b.getWidth() > w){ - var tabs = this.items; - this.setTabWidth(Math.max(availWidth, this.minTabWidth)-2); - if(availWidth < this.minTabWidth){ - - } - }else{ - if(this.currentTabWidth < this.preferredTabWidth){ - this.setTabWidth(Math.min(availWidth, this.preferredTabWidth)-2); - } - } - }, - - - getCount : function(){ - return this.items.length; - }, - - - setTabWidth : function(width){ - this.currentTabWidth = width; - for(var i = 0, len = this.items.length; i < len; i++) { - if(!this.items[i].isHidden())this.items[i].setWidth(width); - } - }, - - - destroy : function(removeEl){ - Ext.EventManager.removeResizeListener(this.onResize, this); - for(var i = 0, len = this.items.length; i < len; i++){ - this.items[i].purgeListeners(); - } - if(removeEl === true){ - this.el.update(""); - this.el.remove(); - } - } -}); - - -Ext.TabPanelItem = function(tabPanel, id, text, closable){ - - this.tabPanel = tabPanel; - - this.id = id; - - this.disabled = false; - - this.text = text; - - this.loaded = false; - this.closable = closable; - - - this.bodyEl = Ext.get(tabPanel.createItemBody(tabPanel.bodyEl.dom, id)); - this.bodyEl.setVisibilityMode(Ext.Element.VISIBILITY); - this.bodyEl.setStyle("display", "block"); - this.bodyEl.setStyle("zoom", "1"); - this.hideAction(); - - var els = tabPanel.createStripElements(tabPanel.stripEl.dom, text, closable); - - this.el = Ext.get(els.el, true); - this.inner = Ext.get(els.inner, true); - this.textEl = Ext.get(this.el.dom.firstChild.firstChild.firstChild, true); - this.pnode = Ext.get(els.el.parentNode, true); - this.el.on("mousedown", this.onTabMouseDown, this); - this.el.on("click", this.onTabClick, this); - - if(closable){ - var c = Ext.get(els.close, true); - c.dom.title = this.closeText; - c.addClassOnOver("close-over"); - c.on("click", this.closeClick, this); - } - - this.addEvents({ - - "activate": true, - - "beforeclose": true, - - "close": true, - - "deactivate" : true - }); - this.hidden = false; - - Ext.TabPanelItem.superclass.constructor.call(this); -}; - -Ext.extend(Ext.TabPanelItem, Ext.util.Observable, { - purgeListeners : function(){ - Ext.util.Observable.prototype.purgeListeners.call(this); - this.el.removeAllListeners(); - }, - - show : function(){ - this.pnode.addClass("on"); - this.showAction(); - if(Ext.isOpera){ - this.tabPanel.stripWrap.repaint(); - } - this.fireEvent("activate", this.tabPanel, this); - }, - - - isActive : function(){ - return this.tabPanel.getActiveTab() == this; - }, - - - hide : function(){ - this.pnode.removeClass("on"); - this.hideAction(); - this.fireEvent("deactivate", this.tabPanel, this); - }, - - hideAction : function(){ - this.bodyEl.hide(); - this.bodyEl.setStyle("position", "absolute"); - this.bodyEl.setLeft("-20000px"); - this.bodyEl.setTop("-20000px"); - }, - - showAction : function(){ - this.bodyEl.setStyle("position", "relative"); - this.bodyEl.setTop(""); - this.bodyEl.setLeft(""); - this.bodyEl.show(); - }, - - - setTooltip : function(text){ - if(Ext.QuickTips && Ext.QuickTips.isEnabled()){ - this.textEl.dom.qtip = text; - this.textEl.dom.removeAttribute('title'); - }else{ - this.textEl.dom.title = text; - } - }, - - onTabClick : function(e){ - e.preventDefault(); - this.tabPanel.activate(this.id); - }, - - onTabMouseDown : function(e){ - e.preventDefault(); - this.tabPanel.activate(this.id); - }, - - getWidth : function(){ - return this.inner.getWidth(); - }, - - setWidth : function(width){ - var iwidth = width - this.pnode.getPadding("lr"); - this.inner.setWidth(iwidth); - this.textEl.setWidth(iwidth-this.inner.getPadding("lr")); - this.pnode.setWidth(width); - }, - - setHidden : function(hidden){ - this.hidden = hidden; - this.pnode.setStyle("display", hidden ? "none" : ""); - }, - - - isHidden : function(){ - return this.hidden; - }, - - - getText : function(){ - return this.text; - }, - - autoSize : function(){ - //this.el.beginMeasure(); - this.textEl.setWidth(1); - this.setWidth(this.textEl.dom.scrollWidth+this.pnode.getPadding("lr")+this.inner.getPadding("lr")); - //this.el.endMeasure(); - }, - - - setText : function(text){ - this.text = text; - this.textEl.update(text); - this.setTooltip(text); - if(!this.tabPanel.resizeTabs){ - this.autoSize(); - } - }, - - activate : function(){ - this.tabPanel.activate(this.id); - }, - - - disable : function(){ - if(this.tabPanel.active != this){ - this.disabled = true; - this.pnode.addClass("disabled"); - } - }, - - - enable : function(){ - this.disabled = false; - this.pnode.removeClass("disabled"); - }, - - - setContent : function(content, loadScripts){ - this.bodyEl.update(content, loadScripts); - }, - - - getUpdateManager : function(){ - return this.bodyEl.getUpdateManager(); - }, - - - setUrl : function(url, params, loadOnce){ - if(this.refreshDelegate){ - this.un('activate', this.refreshDelegate); - } - this.refreshDelegate = this._handleRefresh.createDelegate(this, [url, params, loadOnce]); - this.on("activate", this.refreshDelegate); - return this.bodyEl.getUpdateManager(); - }, - - - _handleRefresh : function(url, params, loadOnce){ - if(!loadOnce || !this.loaded){ - var updater = this.bodyEl.getUpdateManager(); - updater.update(url, params, this._setLoaded.createDelegate(this)); - } - }, - - - refresh : function(){ - if(this.refreshDelegate){ - this.loaded = false; - this.refreshDelegate(); - } - }, - - - _setLoaded : function(){ - this.loaded = true; - }, - - - closeClick : function(e){ - var o = {}; - e.stopEvent(); - this.fireEvent("beforeclose", this, o); - if(o.cancel !== true){ - this.tabPanel.removeTab(this.id); - } - }, - - closeText : "Close this tab" -}); - - -Ext.TabPanel.prototype.createStrip = function(container){ - var strip = document.createElement("div"); - strip.className = "x-tabs-wrap"; - container.appendChild(strip); - return strip; -}; - -Ext.TabPanel.prototype.createStripList = function(strip){ - // div wrapper for retard IE - strip.innerHTML = '<div class="x-tabs-strip-wrap"><table class="x-tabs-strip" cellspacing="0" cellpadding="0" border="0"><tbody><tr></tr></tbody></table></div>'; - return strip.firstChild.firstChild.firstChild.firstChild; -}; - -Ext.TabPanel.prototype.createBody = function(container){ - var body = document.createElement("div"); - Ext.id(body, "tab-body"); - Ext.fly(body).addClass("x-tabs-body"); - container.appendChild(body); - return body; -}; - -Ext.TabPanel.prototype.createItemBody = function(bodyEl, id){ - var body = Ext.getDom(id); - if(!body){ - body = document.createElement("div"); - body.id = id; - } - Ext.fly(body).addClass("x-tabs-item-body"); - bodyEl.insertBefore(body, bodyEl.firstChild); - return body; -}; - -Ext.TabPanel.prototype.createStripElements = function(stripEl, text, closable){ - var td = document.createElement("td"); - stripEl.appendChild(td); - if(closable){ - td.className = "x-tabs-closable"; - if(!this.closeTpl){ - this.closeTpl = new Ext.Template( - '<a href="#" class="x-tabs-right"><span class="x-tabs-left"><em class="x-tabs-inner">' + - '<span unselectable="on"' + (this.disableTooltips ? '' : ' title="{text}"') +' class="x-tabs-text">{text}</span>' + - '<div unselectable="on" class="close-icon"> </div></em></span></a>' - ); - } - var el = this.closeTpl.overwrite(td, {"text": text}); - var close = el.getElementsByTagName("div")[0]; - var inner = el.getElementsByTagName("em")[0]; - return {"el": el, "close": close, "inner": inner}; - } else { - if(!this.tabTpl){ - this.tabTpl = new Ext.Template( - '<a href="#" class="x-tabs-right"><span class="x-tabs-left"><em class="x-tabs-inner">' + - '<span unselectable="on"' + (this.disableTooltips ? '' : ' title="{text}"') +' class="x-tabs-text">{text}</span></em></span></a>' - ); - } - var el = this.tabTpl.overwrite(td, {"text": text}); - var inner = el.getElementsByTagName("em")[0]; - return {"el": el, "inner": inner}; - } -}; - -Ext.Button = function(renderTo, config){ - Ext.apply(this, config); - this.addEvents({ - - "click" : true, - - "toggle" : true, - - 'mouseover' : true, - - 'mouseout': true - }); - if(this.menu){ - this.menu = Ext.menu.MenuMgr.get(this.menu); - } - if(renderTo){ - this.render(renderTo); - } - Ext.Button.superclass.constructor.call(this); -}; - -Ext.extend(Ext.Button, Ext.util.Observable, { - - hidden : false, - - disabled : false, - - pressed : false, - - - tabIndex : undefined, - - - enableToggle: false, - - menu : undefined, - - menuAlign : "tl-bl?", - - - iconCls : undefined, - - type : 'button', - - // private - menuClassTarget: 'tr', - - clickEvent : 'click', - handleMouseEvents : true, - - - tooltipType : 'qtip', - - - - - - // private - render : function(renderTo){ - var btn; - if(this.hideParent){ - this.parentEl = Ext.get(renderTo); - } - if(!this.dhconfig){ - if(!this.template){ - if(!Ext.Button.buttonTemplate){ - // hideous table template - Ext.Button.buttonTemplate = new Ext.Template( - '<table border="0" cellpadding="0" cellspacing="0" class="x-btn-wrap"><tbody><tr>', - '<td class="x-btn-left"><i> </i></td><td class="x-btn-center"><em unselectable="on"><button class="x-btn-text" type="{1}">{0}</button></em></td><td class="x-btn-right"><i> </i></td>', - "</tr></tbody></table>"); - } - this.template = Ext.Button.buttonTemplate; - } - btn = this.template.append(renderTo, [this.text || ' ', this.type], true); - var btnEl = btn.child("button:first"); - btnEl.on('focus', this.onFocus, this); - btnEl.on('blur', this.onBlur, this); - if(this.cls){ - btn.addClass(this.cls); - } - if(this.icon){ - btnEl.setStyle('background-image', 'url(' +this.icon +')'); - } - if(this.iconCls){ - btnEl.addClass(this.iconCls); - if(!this.cls){ - btn.addClass(this.text ? 'x-btn-text-icon' : 'x-btn-icon'); - } - } - if(this.tabIndex !== undefined){ - btnEl.dom.tabIndex = this.tabIndex; - } - if(this.tooltip){ - if(typeof this.tooltip == 'object'){ - Ext.QuickTips.tips(Ext.apply({ - target: btnEl.id - }, this.tooltip)); - } else { - btnEl.dom[this.tooltipType] = this.tooltip; - } - } - }else{ - btn = Ext.DomHelper.append(Ext.get(renderTo).dom, this.dhconfig, true); - } - this.el = btn; - if(this.id){ - this.el.dom.id = this.el.id = this.id; - } - if(this.menu){ - this.el.child(this.menuClassTarget).addClass("x-btn-with-menu"); - this.menu.on("show", this.onMenuShow, this); - this.menu.on("hide", this.onMenuHide, this); - } - btn.addClass("x-btn"); - if(Ext.isIE && !Ext.isIE7){ - this.autoWidth.defer(1, this); - }else{ - this.autoWidth(); - } - if(this.handleMouseEvents){ - btn.on("mouseover", this.onMouseOver, this); - btn.on("mouseout", this.onMouseOut, this); - btn.on("mousedown", this.onMouseDown, this); - } - btn.on(this.clickEvent, this.onClick, this); - //btn.on("mouseup", this.onMouseUp, this); - if(this.hidden){ - this.hide(); - } - if(this.disabled){ - this.disable(); - } - Ext.ButtonToggleMgr.register(this); - if(this.pressed){ - this.el.addClass("x-btn-pressed"); - } - if(this.repeat){ - var repeater = new Ext.util.ClickRepeater(btn, - typeof this.repeat == "object" ? this.repeat : {} - ); - repeater.on("click", this.onClick, this); - } - }, - - getEl : function(){ - return this.el; - }, - - - destroy : function(){ - Ext.ButtonToggleMgr.unregister(this); - this.el.removeAllListeners(); - this.purgeListeners(); - this.el.remove(); - }, - - // private - autoWidth : function(){ - if(this.el){ - this.el.setWidth("auto"); - if(Ext.isIE7 && Ext.isStrict){ - var ib = this.el.child('button'); - if(ib && ib.getWidth() > 20){ - ib.clip(); - ib.setWidth(Ext.util.TextMetrics.measure(ib, this.text).width+ib.getFrameWidth('lr')); - } - } - if(this.minWidth){ - if(this.hidden){ - this.el.beginMeasure(); - } - if(this.el.getWidth() < this.minWidth){ - this.el.setWidth(this.minWidth); - } - if(this.hidden){ - this.el.endMeasure(); - } - } - } - }, - - - setHandler : function(handler, scope){ - this.handler = handler; - this.scope = scope; - }, - - - setText : function(text){ - this.text = text; - if(this.el){ - this.el.child("td.x-btn-center button.x-btn-text").update(text); - } - this.autoWidth(); - }, - - - getText : function(){ - return this.text; - }, - - - show: function(){ - this.hidden = false; - if(this.el){ - this[this.hideParent? 'parentEl' : 'el'].setStyle("display", ""); - } - }, - - - hide: function(){ - this.hidden = true; - if(this.el){ - this[this.hideParent? 'parentEl' : 'el'].setStyle("display", "none"); - } - }, - - - setVisible: function(visible){ - if(visible) { - this.show(); - }else{ - this.hide(); - } - }, - - - toggle : function(state){ - state = state === undefined ? !this.pressed : state; - if(state != this.pressed){ - if(state){ - this.el.addClass("x-btn-pressed"); - this.pressed = true; - this.fireEvent("toggle", this, true); - }else{ - this.el.removeClass("x-btn-pressed"); - this.pressed = false; - this.fireEvent("toggle", this, false); - } - if(this.toggleHandler){ - this.toggleHandler.call(this.scope || this, this, state); - } - } - }, - - - focus : function(){ - this.el.child('button:first').focus(); - }, - - - disable : function(){ - if(this.el){ - this.el.addClass("x-btn-disabled"); - } - this.disabled = true; - }, - - - enable : function(){ - if(this.el){ - this.el.removeClass("x-btn-disabled"); - } - this.disabled = false; - }, - - - setDisabled : function(v){ - this[v !== true ? "enable" : "disable"](); - }, - - // private - onClick : function(e){ - if(e){ - e.preventDefault(); - } - if(e.button != 0){ - return; - } - if(!this.disabled){ - if(this.enableToggle){ - this.toggle(); - } - if(this.menu && !this.menu.isVisible()){ - this.menu.show(this.el, this.menuAlign); - } - this.fireEvent("click", this, e); - if(this.handler){ - this.el.removeClass("x-btn-over"); - this.handler.call(this.scope || this, this, e); - } - } - }, - // private - onMouseOver : function(e){ - if(!this.disabled){ - this.el.addClass("x-btn-over"); - this.fireEvent('mouseover', this, e); - } - }, - // private - onMouseOut : function(e){ - if(!e.within(this.el, true)){ - this.el.removeClass("x-btn-over"); - this.fireEvent('mouseout', this, e); - } - }, - // private - onFocus : function(e){ - if(!this.disabled){ - this.el.addClass("x-btn-focus"); - } - }, - // private - onBlur : function(e){ - this.el.removeClass("x-btn-focus"); - }, - // private - onMouseDown : function(e){ - if(!this.disabled && e.button == 0){ - this.el.addClass("x-btn-click"); - Ext.get(document).on('mouseup', this.onMouseUp, this); - } - }, - // private - onMouseUp : function(e){ - if(e.button == 0){ - this.el.removeClass("x-btn-click"); - Ext.get(document).un('mouseup', this.onMouseUp, this); - } - }, - // private - onMenuShow : function(e){ - this.el.addClass("x-btn-menu-active"); - }, - // private - onMenuHide : function(e){ - this.el.removeClass("x-btn-menu-active"); - } -}); - -// Private utility class used by Button -Ext.ButtonToggleMgr = function(){ - var groups = {}; - - function toggleGroup(btn, state){ - if(state){ - var g = groups[btn.toggleGroup]; - for(var i = 0, l = g.length; i < l; i++){ - if(g[i] != btn){ - g[i].toggle(false); - } - } - } - } - - return { - register : function(btn){ - if(!btn.toggleGroup){ - return; - } - var g = groups[btn.toggleGroup]; - if(!g){ - g = groups[btn.toggleGroup] = []; - } - g.push(btn); - btn.on("toggle", toggleGroup); - }, - - unregister : function(btn){ - if(!btn.toggleGroup){ - return; - } - var g = groups[btn.toggleGroup]; - if(g){ - g.remove(btn); - btn.un("toggle", toggleGroup); - } - } - }; -}(); - -Ext.MenuButton = function(renderTo, config){ - Ext.MenuButton.superclass.constructor.call(this, renderTo, config); - - this.addEvents({"arrowclick":true}); -}; - -Ext.extend(Ext.MenuButton, Ext.Button, { - render : function(renderTo){ - // this is one sweet looking template! - var tpl = new Ext.Template( - '<table cellspacing="0" class="x-btn-menu-wrap x-btn"><tr><td>', - '<table cellspacing="0" class="x-btn-wrap x-btn-menu-text-wrap"><tbody>', - '<tr><td class="x-btn-left"><i> </i></td><td class="x-btn-center"><button class="x-btn-text" type="{1}">{0}</button></td></tr>', - "</tbody></table></td><td>", - '<table cellspacing="0" class="x-btn-wrap x-btn-menu-arrow-wrap"><tbody>', - '<tr><td class="x-btn-center"><button class="x-btn-menu-arrow-el" type="button"> </button></td><td class="x-btn-right"><i> </i></td></tr>', - "</tbody></table></td></tr></table>" - ); - var btn = tpl.append(renderTo, [this.text, this.type], true); - if(this.cls){ - btn.addClass(this.cls); - } - if(this.icon){ - btn.child("button").setStyle('background-image', 'url(' +this.icon +')'); - } - this.el = btn; - this.autoWidth(); - if(this.handleMouseEvents){ - btn.on("mouseover", this.onMouseOver, this); - btn.on("mouseout", this.onMouseOut, this); - btn.on("mousedown", this.onMouseDown, this); - btn.on("mouseup", this.onMouseUp, this); - } - btn.on(this.clickEvent, this.onClick, this); - if(this.tooltip){ - var btnEl = btn.child("button:first"); - if(typeof this.tooltip == 'object'){ - Ext.QuickTips.tips(Ext.apply({ - target: btnEl.id - }, this.tooltip)); - } else { - btnEl.dom[this.tooltipType] = this.tooltip; - } - } - if(this.arrowTooltip){ - var btnEl = btn.child("button:nth(2)"); - btnEl.dom[this.tooltipType] = this.arrowTooltip; - } - if(this.hidden){ - this.hide(); - } - if(this.disabled){ - this.disable(); - } - if(this.menu){ - this.menu.on("show", this.onMenuShow, this); - this.menu.on("hide", this.onMenuHide, this); - } - }, - - // private - autoWidth : function(){ - if(this.el){ - var tbl = this.el.child("table:first"); - var tbl2 = this.el.child("table:last"); - this.el.setWidth("auto"); - tbl.setWidth("auto"); - if(Ext.isIE7 && Ext.isStrict){ - var ib = this.el.child('button:first'); - if(ib && ib.getWidth() > 20){ - ib.clip(); - ib.setWidth(Ext.util.TextMetrics.measure(ib, this.text).width+ib.getFrameWidth('lr')); - } - } - if(this.minWidth){ - if(this.hidden){ - this.el.beginMeasure(); - } - if((tbl.getWidth()+tbl2.getWidth()) < this.minWidth){ - tbl.setWidth(this.minWidth-tbl2.getWidth()); - } - if(this.hidden){ - this.el.endMeasure(); - } - } - this.el.setWidth(tbl.getWidth()+tbl2.getWidth()); - } - }, - - setHandler : function(handler, scope){ - this.handler = handler; - this.scope = scope; - }, - - - setArrowHandler : function(handler, scope){ - this.arrowHandler = handler; - this.scope = scope; - }, - - - focus : function(){ - if(this.el){ - this.el.child("button:first").focus(); - } - }, - - // private - onClick : function(e){ - e.preventDefault(); - if(!this.disabled){ - if(e.getTarget(".x-btn-menu-arrow-wrap")){ - if(this.menu && !this.menu.isVisible()){ - this.menu.show(this.el, this.menuAlign); - } - this.fireEvent("arrowclick", this, e); - if(this.arrowHandler){ - this.arrowHandler.call(this.scope || this, this, e); - } - }else{ - this.fireEvent("click", this, e); - if(this.handler){ - this.handler.call(this.scope || this, this, e); - } - } - } - }, - // private - onMouseDown : function(e){ - if(!this.disabled){ - Ext.fly(e.getTarget("table")).addClass("x-btn-click"); - } - }, - // private - onMouseUp : function(e){ - Ext.fly(e.getTarget("table")).removeClass("x-btn-click"); - } -}); - - Ext.Toolbar = function(container, buttons, config){ - if(container instanceof Array){ // omit the container for later rendering - buttons = container; - config = buttons; - container = null; - } - Ext.apply(this, config); - this.buttons = buttons; - if(container){ - this.render(container); - } -}; - -Ext.Toolbar.prototype = { - - render : function(ct){ - this.el = Ext.get(ct); - if(this.cls){ - this.el.addClass(this.cls); - } - // using a table allows for vertical alignment - this.el.update('<div class="x-toolbar x-small-editor"><table cellspacing="0"><tr></tr></table></div>'); - this.tr = this.el.child("tr", true); - var autoId = 0; - this.items = new Ext.util.MixedCollection(false, function(o){ - return o.id || ("item" + (++autoId)); - }); - if(this.buttons){ - this.add.apply(this, this.buttons); - delete this.buttons; - } - }, - - - add : function(){ - var a = arguments, l = a.length; - for(var i = 0; i < l; i++){ - var el = a[i]; - if(el.applyTo){ // some kind of form field - this.addField(el); - }else if(el.render){ // some kind of Toolbar.Item - this.addItem(el); - }else if(typeof el == "string"){ // string - if(el == "separator" || el == "-"){ - this.addSeparator(); - }else if(el == " "){ - this.addSpacer(); - }else if(el == "->"){ - this.addFill(); - }else{ - this.addText(el); - } - }else if(el.tagName){ // element - this.addElement(el); - }else if(typeof el == "object"){ // must be button config? - this.addButton(el); - } - } - }, - - - getEl : function(){ - return this.el; - }, - - - addSeparator : function(){ - return this.addItem(new Ext.Toolbar.Separator()); - }, - - - addSpacer : function(){ - return this.addItem(new Ext.Toolbar.Spacer()); - }, - - - addFill : function(){ - return this.addItem(new Ext.Toolbar.Fill()); - }, - - - addElement : function(el){ - return this.addItem(new Ext.Toolbar.Item(el)); - }, - - - addItem : function(item){ - var td = this.nextBlock(); - item.render(td); - this.items.add(item); - return item; - }, - - - addButton : function(config){ - if(config instanceof Array){ - var buttons = []; - for(var i = 0, len = config.length; i < len; i++) { - buttons.push(this.addButton(config[i])); - } - return buttons; - } - var b = config; - if(!(config instanceof Ext.Toolbar.Button)){ - b = new Ext.Toolbar.Button(config); - } - var td = this.nextBlock(); - b.render(td); - this.items.add(b); - return b; - }, - - - addText : function(text){ - return this.addItem(new Ext.Toolbar.TextItem(text)); - }, - - - insertButton : function(index, item){ - if(item instanceof Array){ - var buttons = []; - for(var i = 0, len = item.length; i < len; i++) { - buttons.push(this.insertButton(index + i, item[i])); - } - return buttons; - } - if (!(item instanceof Ext.Toolbar.Button)){ - item = new Ext.Toolbar.Button(item); - } - var td = document.createElement("td"); - this.tr.insertBefore(td, this.tr.childNodes[index]); - item.render(td); - this.items.insert(index, item); - return item; - }, - - - addDom : function(config, returnEl){ - var td = this.nextBlock(); - Ext.DomHelper.overwrite(td, config); - var ti = new Ext.Toolbar.Item(td.firstChild); - ti.render(td); - this.items.add(ti); - return ti; - }, - - - addField : function(field){ - var td = this.nextBlock(); - field.render(td); - var ti = new Ext.Toolbar.Item(td.firstChild); - ti.render(td); - this.items.add(ti); - return ti; - }, - - // private - nextBlock : function(){ - var td = document.createElement("td"); - this.tr.appendChild(td); - return td; - }, - - destroy : function(){ - if(this.items){ // rendered? - Ext.destroy.apply(Ext, this.items.items); - } - Ext.Element.uncache(this.el, this.tr); - } -}; - - -Ext.Toolbar.Item = function(el){ - this.el = Ext.getDom(el); - this.id = Ext.id(this.el); - this.hidden = false; -}; - -Ext.Toolbar.Item.prototype = { - - - getEl : function(){ - return this.el; - }, - - // private - render : function(td){ - this.td = td; - td.appendChild(this.el); - }, - - - destroy : function(){ - this.td.parentNode.removeChild(this.td); - }, - - - show: function(){ - this.hidden = false; - this.td.style.display = ""; - }, - - - hide: function(){ - this.hidden = true; - this.td.style.display = "none"; - }, - - - setVisible: function(visible){ - if(visible) { - this.show(); - }else{ - this.hide(); - } - }, - - - focus : function(){ - Ext.fly(this.el).focus(); - }, - - - disable : function(){ - Ext.fly(this.td).addClass("x-item-disabled"); - this.disabled = true; - this.el.disabled = true; - }, - - - enable : function(){ - Ext.fly(this.td).removeClass("x-item-disabled"); - this.disabled = false; - this.el.disabled = false; - } -}; - - - -Ext.Toolbar.Separator = function(){ - var s = document.createElement("span"); - s.className = "ytb-sep"; - Ext.Toolbar.Separator.superclass.constructor.call(this, s); -}; -Ext.extend(Ext.Toolbar.Separator, Ext.Toolbar.Item, { - enable:Ext.emptyFn, - disable:Ext.emptyFn, - focus:Ext.emptyFn -}); - - -Ext.Toolbar.Spacer = function(){ - var s = document.createElement("div"); - s.className = "ytb-spacer"; - Ext.Toolbar.Spacer.superclass.constructor.call(this, s); -}; -Ext.extend(Ext.Toolbar.Spacer, Ext.Toolbar.Item, { - enable:Ext.emptyFn, - disable:Ext.emptyFn, - focus:Ext.emptyFn -}); - - -Ext.Toolbar.Fill = Ext.extend(Ext.Toolbar.Spacer, { - // private - render : function(td){ - td.style.width = '100%'; - Ext.Toolbar.Fill.superclass.render.call(this, td); - } -}); - - -Ext.Toolbar.TextItem = function(text){ - var s = document.createElement("span"); - s.className = "ytb-text"; - s.innerHTML = text; - Ext.Toolbar.TextItem.superclass.constructor.call(this, s); -}; -Ext.extend(Ext.Toolbar.TextItem, Ext.Toolbar.Item, { - enable:Ext.emptyFn, - disable:Ext.emptyFn, - focus:Ext.emptyFn -}); - - -Ext.Toolbar.Button = function(config){ - Ext.Toolbar.Button.superclass.constructor.call(this, null, config); -}; -Ext.extend(Ext.Toolbar.Button, Ext.Button, { - render : function(td){ - this.td = td; - Ext.Toolbar.Button.superclass.render.call(this, td); - }, - - - destroy : function(){ - Ext.Toolbar.Button.superclass.destroy.call(this); - this.td.parentNode.removeChild(this.td); - }, - - - show: function(){ - this.hidden = false; - this.td.style.display = ""; - }, - - - hide: function(){ - this.hidden = true; - this.td.style.display = "none"; - }, - - - disable : function(){ - Ext.fly(this.td).addClass("x-item-disabled"); - this.disabled = true; - }, - - - enable : function(){ - Ext.fly(this.td).removeClass("x-item-disabled"); - this.disabled = false; - } -}); -// backwards compat -Ext.ToolbarButton = Ext.Toolbar.Button; - - -Ext.Toolbar.MenuButton = function(config){ - Ext.Toolbar.MenuButton.superclass.constructor.call(this, null, config); -}; -Ext.extend(Ext.Toolbar.MenuButton, Ext.MenuButton, { - render : function(td){ - this.td = td; - Ext.Toolbar.MenuButton.superclass.render.call(this, td); - }, - - - destroy : function(){ - Ext.Toolbar.MenuButton.superclass.destroy.call(this); - this.td.parentNode.removeChild(this.td); - }, - - - show: function(){ - this.hidden = false; - this.td.style.display = ""; - }, - - - hide: function(){ - this.hidden = true; - this.td.style.display = "none"; - } -}); - - - -Ext.PagingToolbar = function(el, ds, config){ - Ext.PagingToolbar.superclass.constructor.call(this, el, null, config); - this.ds = ds; - this.cursor = 0; - this.renderButtons(this.el); - this.bind(ds); -}; - -Ext.extend(Ext.PagingToolbar, Ext.Toolbar, { - - pageSize: 20, - - displayMsg : 'Displaying {0} - {1} of {2}', - - emptyMsg : 'No data to display', - - beforePageText : "Page", - - afterPageText : "of {0}", - - firstText : "First Page", - - prevText : "Previous Page", - - nextText : "Next Page", - - lastText : "Last Page", - - refreshText : "Refresh", - - // private - renderButtons : function(el){ - Ext.PagingToolbar.superclass.render.call(this, el); - this.first = this.addButton({ - tooltip: this.firstText, - cls: "x-btn-icon x-grid-page-first", - disabled: true, - handler: this.onClick.createDelegate(this, ["first"]) - }); - this.prev = this.addButton({ - tooltip: this.prevText, - cls: "x-btn-icon x-grid-page-prev", - disabled: true, - handler: this.onClick.createDelegate(this, ["prev"]) - }); - this.addSeparator(); - this.add(this.beforePageText); - this.field = Ext.get(this.addDom({ - tag: "input", - type: "text", - size: "3", - value: "1", - cls: "x-grid-page-number" - }).el); - this.field.on("keydown", this.onPagingKeydown, this); - this.field.on("focus", function(){this.dom.select();}); - this.afterTextEl = this.addText(String.format(this.afterPageText, 1)); - this.field.setHeight(18); - this.addSeparator(); - this.next = this.addButton({ - tooltip: this.nextText, - cls: "x-btn-icon x-grid-page-next", - disabled: true, - handler: this.onClick.createDelegate(this, ["next"]) - }); - this.last = this.addButton({ - tooltip: this.lastText, - cls: "x-btn-icon x-grid-page-last", - disabled: true, - handler: this.onClick.createDelegate(this, ["last"]) - }); - this.addSeparator(); - this.loading = this.addButton({ - tooltip: this.refreshText, - cls: "x-btn-icon x-grid-loading", - disabled: true, - handler: this.onClick.createDelegate(this, ["refresh"]) - }); - - if(this.displayInfo){ - this.displayEl = Ext.fly(this.el.dom.firstChild).createChild({cls:'x-paging-info'}); - } - }, - - // private - updateInfo : function(){ - if(this.displayEl){ - var count = this.ds.getCount(); - var msg = count == 0 ? - this.emptyMsg : - String.format( - this.displayMsg, - this.cursor+1, this.cursor+count, this.ds.getTotalCount() - ); - this.displayEl.update(msg); - } - }, - - // private - onLoad : function(ds, r, o){ - this.cursor = o.params ? o.params.start : 0; - var d = this.getPageData(), ap = d.activePage, ps = d.pages; - - this.afterTextEl.el.innerHTML = String.format(this.afterPageText, d.pages); - this.field.dom.value = ap; - this.first.setDisabled(ap == 1); - this.prev.setDisabled(ap == 1); - this.next.setDisabled(ap == ps); - this.last.setDisabled(ap == ps); - this.loading.enable(); - this.updateInfo(); - }, - - // private - getPageData : function(){ - var total = this.ds.getTotalCount(); - return { - total : total, - activePage : Math.ceil((this.cursor+this.pageSize)/this.pageSize), - pages : total < this.pageSize ? 1 : Math.ceil(total/this.pageSize) - }; - }, - - // private - onLoadError : function(){ - this.loading.enable(); - }, - - // private - onPagingKeydown : function(e){ - var k = e.getKey(); - var d = this.getPageData(); - if(k == e.RETURN){ - var v = this.field.dom.value, pageNum; - if(!v || isNaN(pageNum = parseInt(v, 10))){ - this.field.dom.value = d.activePage; - return; - } - pageNum = Math.min(Math.max(1, pageNum), d.pages) - 1; - this.ds.load({params:{start: pageNum * this.pageSize, limit: this.pageSize}}); - e.stopEvent(); - } - else if(k == e.HOME || (k == e.UP && e.ctrlKey) || (k == e.PAGEUP && e.ctrlKey) || (k == e.RIGHT && e.ctrlKey) || k == e.END || (k == e.DOWN && e.ctrlKey) || (k == e.LEFT && e.ctrlKey) || (k == e.PAGEDOWN && e.ctrlKey)) - { - var pageNum = (k == e.HOME || (k == e.DOWN && e.ctrlKey) || (k == e.LEFT && e.ctrlKey) || (k == e.PAGEDOWN && e.ctrlKey)) ? 1 : d.pages; - this.field.dom.value = pageNum; - this.ds.load({params:{start: (pageNum - 1) * this.pageSize, limit: this.pageSize}}); - e.stopEvent(); - } - else if(k == e.UP || k == e.RIGHT || k == e.PAGEUP || k == e.DOWN || k == e.LEFT || k == e.PAGEDOWN) - { - var v = this.field.dom.value, pageNum; - var increment = (e.shiftKey) ? 10 : 1; - if(k == e.DOWN || k == e.LEFT || k == e.PAGEDOWN) - increment *= -1; - if(!v || isNaN(pageNum = parseInt(v, 10))) { - this.field.dom.value = d.activePage; - return; - } - else if(parseInt(v, 10) + increment >= 1 & parseInt(v, 10) + increment <= d.pages) - { - this.field.dom.value = parseInt(v, 10) + increment; - pageNum = Math.min(Math.max(1, pageNum + increment), d.pages) - 1; - this.ds.load({params:{start: pageNum * this.pageSize, limit: this.pageSize}}); - } - e.stopEvent(); - } - }, - - // private - beforeLoad : function(){ - if(this.loading){ - this.loading.disable(); - } - }, - - // private - onClick : function(which){ - var ds = this.ds; - switch(which){ - case "first": - ds.load({params:{start: 0, limit: this.pageSize}}); - break; - case "prev": - ds.load({params:{start: Math.max(0, this.cursor-this.pageSize), limit: this.pageSize}}); - break; - case "next": - ds.load({params:{start: this.cursor+this.pageSize, limit: this.pageSize}}); - break; - case "last": - var total = ds.getTotalCount(); - var extra = total % this.pageSize; - var lastStart = extra ? (total - extra) : total-this.pageSize; - ds.load({params:{start: lastStart, limit: this.pageSize}}); - break; - case "refresh": - ds.load({params:{start: this.cursor, limit: this.pageSize}}); - break; - } - }, - - - unbind : function(ds){ - ds.un("beforeload", this.beforeLoad, this); - ds.un("load", this.onLoad, this); - ds.un("loadexception", this.onLoadError, this); - this.ds = undefined; - }, - - - bind : function(ds){ - ds.on("beforeload", this.beforeLoad, this); - ds.on("load", this.onLoad, this); - ds.on("loadexception", this.onLoadError, this); - this.ds = ds; - } -}); - -Ext.Resizable = function(el, config){ - this.el = Ext.get(el); - - if(config && config.wrap){ - config.resizeChild = this.el; - this.el = this.el.wrap(typeof config.wrap == "object" ? config.wrap : {cls:"xresizable-wrap"}); - this.el.id = this.el.dom.id = config.resizeChild.id + "-rzwrap"; - this.el.setStyle("overflow", "hidden"); - this.el.setPositioning(config.resizeChild.getPositioning()); - config.resizeChild.clearPositioning(); - if(!config.width || !config.height){ - var csize = config.resizeChild.getSize(); - this.el.setSize(csize.width, csize.height); - } - if(config.pinned && !config.adjustments){ - config.adjustments = "auto"; - } - } - - this.proxy = this.el.createProxy({tag: "div", cls: "x-resizable-proxy", id: this.el.id + "-rzproxy"}); - this.proxy.unselectable(); - this.proxy.enableDisplayMode('block'); - - Ext.apply(this, config); - - if(this.pinned){ - this.disableTrackOver = true; - this.el.addClass("x-resizable-pinned"); - } - // if the element isn't positioned, make it relative - var position = this.el.getStyle("position"); - if(position != "absolute" && position != "fixed"){ - this.el.setStyle("position", "relative"); - } - if(!this.handles){ // no handles passed, must be legacy style - this.handles = 's,e,se'; - if(this.multiDirectional){ - this.handles += ',n,w'; - } - } - if(this.handles == "all"){ - this.handles = "n s e w ne nw se sw"; - } - var hs = this.handles.split(/\s*?[,;]\s*?| /); - var ps = Ext.Resizable.positions; - for(var i = 0, len = hs.length; i < len; i++){ - if(hs[i] && ps[hs[i]]){ - var pos = ps[hs[i]]; - this[pos] = new Ext.Resizable.Handle(this, pos, this.disableTrackOver, this.transparent); - } - } - // legacy - this.corner = this.southeast; - - if(this.handles.indexOf("n") != -1 || this.handles.indexOf("w") != -1){ - this.updateBox = true; - } - - this.activeHandle = null; - - if(this.resizeChild){ - if(typeof this.resizeChild == "boolean"){ - this.resizeChild = Ext.get(this.el.dom.firstChild, true); - }else{ - this.resizeChild = Ext.get(this.resizeChild, true); - } - } - - if(this.adjustments == "auto"){ - var rc = this.resizeChild; - var hw = this.west, he = this.east, hn = this.north, hs = this.south; - if(rc && (hw || hn)){ - rc.position("relative"); - rc.setLeft(hw ? hw.el.getWidth() : 0); - rc.setTop(hn ? hn.el.getHeight() : 0); - } - this.adjustments = [ - (he ? -he.el.getWidth() : 0) + (hw ? -hw.el.getWidth() : 0), - (hn ? -hn.el.getHeight() : 0) + (hs ? -hs.el.getHeight() : 0) -1 - ]; - } - - if(this.draggable){ - this.dd = this.dynamic ? - this.el.initDD(null) : this.el.initDDProxy(null, {dragElId: this.proxy.id}); - this.dd.setHandleElId(this.resizeChild ? this.resizeChild.id : this.el.id); - } - - // public events - this.addEvents({ - - "beforeresize" : true, - - "resize" : true - }); - - if(this.width !== null && this.height !== null){ - this.resizeTo(this.width, this.height); - }else{ - this.updateChildSize(); - } - if(Ext.isIE){ - this.el.dom.style.zoom = 1; - } - Ext.Resizable.superclass.constructor.call(this); -}; - -Ext.extend(Ext.Resizable, Ext.util.Observable, { - resizeChild : false, - adjustments : [0, 0], - minWidth : 5, - minHeight : 5, - maxWidth : 10000, - maxHeight : 10000, - enabled : true, - animate : false, - duration : .35, - dynamic : false, - handles : false, - multiDirectional : false, - disableTrackOver : false, - easing : 'easeOutStrong', - widthIncrement : 0, - heightIncrement : 0, - pinned : false, - width : null, - height : null, - preserveRatio : false, - transparent: false, - minX: 0, - minY: 0, - draggable: false, - - - constrainTo: undefined, - - resizeRegion: undefined, - - - - resizeTo : function(width, height){ - this.el.setSize(width, height); - this.updateChildSize(); - this.fireEvent("resize", this, width, height, null); - }, - - // private - startSizing : function(e, handle){ - this.fireEvent("beforeresize", this, e); - if(this.enabled){ // 2nd enabled check in case disabled before beforeresize handler - - if(!this.overlay){ - this.overlay = this.el.createProxy({tag: "div", cls: "x-resizable-overlay", html: " "}); - this.overlay.unselectable(); - this.overlay.enableDisplayMode("block"); - this.overlay.on("mousemove", this.onMouseMove, this); - this.overlay.on("mouseup", this.onMouseUp, this); - } - this.overlay.setStyle("cursor", handle.el.getStyle("cursor")); - - this.resizing = true; - this.startBox = this.el.getBox(); - this.startPoint = e.getXY(); - this.offsets = [(this.startBox.x + this.startBox.width) - this.startPoint[0], - (this.startBox.y + this.startBox.height) - this.startPoint[1]]; - - this.overlay.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true)); - this.overlay.show(); - - if(this.constrainTo) { - var ct = Ext.get(this.constrainTo); - this.resizeRegion = ct.getRegion().adjust( - ct.getFrameWidth('t'), - ct.getFrameWidth('l'), - -ct.getFrameWidth('b'), - -ct.getFrameWidth('r') - ); - } - - this.proxy.setStyle('visibility', 'hidden'); // workaround display none - this.proxy.show(); - this.proxy.setBox(this.startBox); - if(!this.dynamic){ - this.proxy.setStyle('visibility', 'visible'); - } - } - }, - - // private - onMouseDown : function(handle, e){ - if(this.enabled){ - e.stopEvent(); - this.activeHandle = handle; - this.startSizing(e, handle); - } - }, - - // private - onMouseUp : function(e){ - var size = this.resizeElement(); - this.resizing = false; - this.handleOut(); - this.overlay.hide(); - this.proxy.hide(); - this.fireEvent("resize", this, size.width, size.height, e); - }, - - // private - updateChildSize : function(){ - if(this.resizeChild){ - var el = this.el; - var child = this.resizeChild; - var adj = this.adjustments; - if(el.dom.offsetWidth){ - var b = el.getSize(true); - child.setSize(b.width+adj[0], b.height+adj[1]); - } - // Second call here for IE - // The first call enables instant resizing and - // the second call corrects scroll bars if they - // exist - if(Ext.isIE){ - setTimeout(function(){ - if(el.dom.offsetWidth){ - var b = el.getSize(true); - child.setSize(b.width+adj[0], b.height+adj[1]); - } - }, 10); - } - } - }, - - // private - snap : function(value, inc, min){ - if(!inc || !value) return value; - var newValue = value; - var m = value % inc; - if(m > 0){ - if(m > (inc/2)){ - newValue = value + (inc-m); - }else{ - newValue = value - m; - } - } - return Math.max(min, newValue); - }, - - // private - resizeElement : function(){ - var box = this.proxy.getBox(); - if(this.updateBox){ - this.el.setBox(box, false, this.animate, this.duration, null, this.easing); - }else{ - this.el.setSize(box.width, box.height, this.animate, this.duration, null, this.easing); - } - this.updateChildSize(); - if(!this.dynamic){ - this.proxy.hide(); - } - return box; - }, - - // private - constrain : function(v, diff, m, mx){ - if(v - diff < m){ - diff = v - m; - }else if(v - diff > mx){ - diff = mx - v; - } - return diff; - }, - - // private - onMouseMove : function(e){ - if(this.enabled){ - try{// try catch so if something goes wrong the user doesn't get hung - - if(this.resizeRegion && !this.resizeRegion.contains(e.getPoint())) { - return; - } - - //var curXY = this.startPoint; - var curSize = this.curSize || this.startBox; - var x = this.startBox.x, y = this.startBox.y; - var ox = x, oy = y; - var w = curSize.width, h = curSize.height; - var ow = w, oh = h; - var mw = this.minWidth, mh = this.minHeight; - var mxw = this.maxWidth, mxh = this.maxHeight; - var wi = this.widthIncrement; - var hi = this.heightIncrement; - - var eventXY = e.getXY(); - var diffX = -(this.startPoint[0] - Math.max(this.minX, eventXY[0])); - var diffY = -(this.startPoint[1] - Math.max(this.minY, eventXY[1])); - - var pos = this.activeHandle.position; - - switch(pos){ - case "east": - w += diffX; - w = Math.min(Math.max(mw, w), mxw); - break; - case "south": - h += diffY; - h = Math.min(Math.max(mh, h), mxh); - break; - case "southeast": - w += diffX; - h += diffY; - w = Math.min(Math.max(mw, w), mxw); - h = Math.min(Math.max(mh, h), mxh); - break; - case "north": - diffY = this.constrain(h, diffY, mh, mxh); - y += diffY; - h -= diffY; - break; - case "west": - diffX = this.constrain(w, diffX, mw, mxw); - x += diffX; - w -= diffX; - break; - case "northeast": - w += diffX; - w = Math.min(Math.max(mw, w), mxw); - diffY = this.constrain(h, diffY, mh, mxh); - y += diffY; - h -= diffY; - break; - case "northwest": - diffX = this.constrain(w, diffX, mw, mxw); - diffY = this.constrain(h, diffY, mh, mxh); - y += diffY; - h -= diffY; - x += diffX; - w -= diffX; - break; - case "southwest": - diffX = this.constrain(w, diffX, mw, mxw); - h += diffY; - h = Math.min(Math.max(mh, h), mxh); - x += diffX; - w -= diffX; - break; - } - - var sw = this.snap(w, wi, mw); - var sh = this.snap(h, hi, mh); - if(sw != w || sh != h){ - switch(pos){ - case "northeast": - y -= sh - h; - break; - case "north": - y -= sh - h; - break; - case "southwest": - x -= sw - w; - break; - case "west": - x -= sw - w; - break; - case "northwest": - x -= sw - w; - y -= sh - h; - break; - } - w = sw; - h = sh; - } - - if(this.preserveRatio){ - switch(pos){ - case "southeast": - case "east": - h = oh * (w/ow); - h = Math.min(Math.max(mh, h), mxh); - w = ow * (h/oh); - break; - case "south": - w = ow * (h/oh); - w = Math.min(Math.max(mw, w), mxw); - h = oh * (w/ow); - break; - case "northeast": - w = ow * (h/oh); - w = Math.min(Math.max(mw, w), mxw); - h = oh * (w/ow); - break; - case "north": - var tw = w; - w = ow * (h/oh); - w = Math.min(Math.max(mw, w), mxw); - h = oh * (w/ow); - x += (tw - w) / 2; - break; - case "southwest": - h = oh * (w/ow); - h = Math.min(Math.max(mh, h), mxh); - var tw = w; - w = ow * (h/oh); - x += tw - w; - break; - case "west": - var th = h; - h = oh * (w/ow); - h = Math.min(Math.max(mh, h), mxh); - y += (th - h) / 2; - var tw = w; - w = ow * (h/oh); - x += tw - w; - break; - case "northwest": - var tw = w; - var th = h; - h = oh * (w/ow); - h = Math.min(Math.max(mh, h), mxh); - w = ow * (h/oh); - y += th - h; - x += tw - w; - break; - - } - } - this.proxy.setBounds(x, y, w, h); - if(this.dynamic){ - this.resizeElement(); - } - }catch(e){} - } - }, - - // private - handleOver : function(){ - if(this.enabled){ - this.el.addClass("x-resizable-over"); - } - }, - - // private - handleOut : function(){ - if(!this.resizing){ - this.el.removeClass("x-resizable-over"); - } - }, - - - getEl : function(){ - return this.el; - }, - - - getResizeChild : function(){ - return this.resizeChild; - }, - - - destroy : function(removeEl){ - this.proxy.remove(); - if(this.overlay){ - this.overlay.removeAllListeners(); - this.overlay.remove(); - } - var ps = Ext.Resizable.positions; - for(var k in ps){ - if(typeof ps[k] != "function" && this[ps[k]]){ - var h = this[ps[k]]; - h.el.removeAllListeners(); - h.el.remove(); - } - } - if(removeEl){ - this.el.update(""); - this.el.remove(); - } - } -}); - -// private -// hash to map config positions to true positions -Ext.Resizable.positions = { - n: "north", s: "south", e: "east", w: "west", se: "southeast", sw: "southwest", nw: "northwest", ne: "northeast" -}; - -// private -Ext.Resizable.Handle = function(rz, pos, disableTrackOver, transparent){ - if(!this.tpl){ - // only initialize the template if resizable is used - var tpl = Ext.DomHelper.createTemplate( - {tag: "div", cls: "x-resizable-handle x-resizable-handle-{0}"} - ); - tpl.compile(); - Ext.Resizable.Handle.prototype.tpl = tpl; - } - this.position = pos; - this.rz = rz; - this.el = this.tpl.append(rz.el.dom, [this.position], true); - this.el.unselectable(); - if(transparent){ - this.el.setOpacity(0); - } - this.el.on("mousedown", this.onMouseDown, this); - if(!disableTrackOver){ - this.el.on("mouseover", this.onMouseOver, this); - this.el.on("mouseout", this.onMouseOut, this); - } -}; - -// private -Ext.Resizable.Handle.prototype = { - afterResize : function(rz){ - // do nothing - }, - // private - onMouseDown : function(e){ - this.rz.onMouseDown(this, e); - }, - // private - onMouseOver : function(e){ - this.rz.handleOver(this, e); - }, - // private - onMouseOut : function(e){ - this.rz.handleOut(this, e); - } -}; - -Ext.Editor = function(field, config){ - Ext.Editor.superclass.constructor.call(this, config); - this.field = field; - this.addEvents({ - - "beforestartedit" : true, - - "startedit" : true, - - "beforecomplete" : true, - - "complete" : true, - - "specialkey" : true - }); -}; - -Ext.extend(Ext.Editor, Ext.Component, { - - - - - - value : "", - - alignment: "c-c?", - - shadow : "frame", - - constrain : false, - - // private - updateEl : false, - - // private - onRender : function(ct, position){ - this.el = new Ext.Layer({ - shadow: this.shadow, - cls: "x-editor", - parentEl : ct, - shim : this.shim, - shadowOffset:4, - id: this.id - }); - this.el.setStyle("overflow", Ext.isGecko ? "auto" : "hidden"); - if(this.field.msgTarget != 'title'){ - this.field.msgTarget = 'qtip'; - } - this.field.render(this.el); - if(Ext.isGecko){ - this.field.el.dom.setAttribute('autocomplete', 'off'); - } - this.field.show(); - this.field.on("blur", this.onBlur, this); - this.relayEvents(this.field, ["specialkey"]); - if(this.field.grow){ - this.field.on("autosize", this.el.sync, this.el, {delay:1}); - } - }, - - // private - startEdit : function(el, value){ - if(this.editing){ - this.completeEdit(); - } - this.boundEl = Ext.get(el); - var v = value !== undefined ? value : this.boundEl.dom.innerHTML; - if(!this.rendered){ - this.render(this.parentEl || document.body); - } - if(this.fireEvent("beforestartedit", this, this.boundEl, v) === false){ - return; - } - this.startValue = v; - this.field.setValue(v); - if(this.autoSize){ - var sz = this.boundEl.getSize(); - switch(this.autoSize){ - case "width": - this.setSize(sz.width, ""); - break; - case "height": - this.setSize("", sz.height); - break; - default: - this.setSize(sz.width, sz.height); - } - } - this.el.alignTo(this.boundEl, this.alignment); - this.editing = true; - if(Ext.QuickTips){ - Ext.QuickTips.disable(); - } - this.show(); - }, - - - setSize : function(w, h){ - this.field.setSize(w, h); - if(this.el){ - this.el.sync(); - } - }, - - - realign : function(){ - this.el.alignTo(this.boundEl, this.alignment); - }, - - - completeEdit : function(remainVisible){ - if(!this.editing){ - return; - } - var v = this.getValue(); - if(this.revertInvalid !== false && !this.field.isValid()){ - v = this.startValue; - this.cancelEdit(true); - } - if(String(v) == String(this.startValue) && this.ignoreNoChange){ - this.editing = false; - this.hide(); - return; - } - if(this.fireEvent("beforecomplete", this, v, this.startValue) !== false){ - this.editing = false; - if(this.updateEl && this.boundEl){ - this.boundEl.update(v); - } - if(remainVisible !== true){ - this.hide(); - } - this.fireEvent("complete", this, v, this.startValue); - } - }, - - // private - onShow : function(){ - this.el.show(); - if(this.hideEl !== false){ - this.boundEl.hide(); - } - this.field.show(); - if(Ext.isIE && !this.fixIEFocus){ // IE has problems with focusing the first time - this.fixIEFocus = true; - this.deferredFocus.defer(50, this); - }else{ - this.field.focus(); - } - this.fireEvent("startedit", this.boundEl, this.startValue); - }, - - deferredFocus : function(){ - if(this.editing){ - this.field.focus(); - } - }, - - - cancelEdit : function(remainVisible){ - if(this.editing){ - this.setValue(this.startValue); - if(remainVisible !== true){ - this.hide(); - } - } - }, - - // private - onBlur : function(){ - if(this.allowBlur !== true && this.editing){ - this.completeEdit(); - } - }, - - // private - onHide : function(){ - if(this.editing){ - this.completeEdit(); - return; - } - this.field.blur(); - if(this.field.collapse){ - this.field.collapse(); - } - this.el.hide(); - if(this.hideEl !== false){ - this.boundEl.show(); - } - if(Ext.QuickTips){ - Ext.QuickTips.enable(); - } - }, - - - setValue : function(v){ - this.field.setValue(v); - }, - - - getValue : function(){ - return this.field.getValue(); - } -}); - -Ext.BasicDialog = function(el, config){ - this.el = Ext.get(el); - var dh = Ext.DomHelper; - if(!this.el && config && config.autoCreate){ - if(typeof config.autoCreate == "object"){ - if(!config.autoCreate.id){ - config.autoCreate.id = el; - } - this.el = dh.append(document.body, - config.autoCreate, true); - }else{ - this.el = dh.append(document.body, - {tag: "div", id: el, style:'visibility:hidden;'}, true); - } - } - el = this.el; - el.setDisplayed(true); - el.hide = this.hideAction; - this.id = el.id; - el.addClass("x-dlg"); - - Ext.apply(this, config); - - this.proxy = el.createProxy("x-dlg-proxy"); - this.proxy.hide = this.hideAction; - this.proxy.setOpacity(.5); - this.proxy.hide(); - - if(config.width){ - el.setWidth(config.width); - } - if(config.height){ - el.setHeight(config.height); - } - this.size = el.getSize(); - if(typeof config.x != "undefined" && typeof config.y != "undefined"){ - this.xy = [config.x,config.y]; - }else{ - this.xy = el.getCenterXY(true); - } - - this.header = el.child("> .x-dlg-hd"); - - this.body = el.child("> .x-dlg-bd"); - - this.footer = el.child("> .x-dlg-ft"); - - if(!this.header){ - this.header = el.createChild({tag: "div", cls:"x-dlg-hd", html: " "}, this.body ? this.body.dom : null); - } - if(!this.body){ - this.body = el.createChild({tag: "div", cls:"x-dlg-bd"}); - } - - this.header.unselectable(); - if(this.title){ - this.header.update(this.title); - } - // this element allows the dialog to be focused for keyboard event - this.focusEl = el.createChild({tag: "a", href:"#", cls:"x-dlg-focus", tabIndex:"-1"}); - this.focusEl.swallowEvent("click", true); - - this.header.wrap({cls:"x-dlg-hd-right"}).wrap({cls:"x-dlg-hd-left"}, true); - - // wrap the body and footer for special rendering - this.bwrap = this.body.wrap({tag: "div", cls:"x-dlg-dlg-body"}); - if(this.footer){ - this.bwrap.dom.appendChild(this.footer.dom); - } - - this.bg = this.el.createChild({ - tag: "div", cls:"x-dlg-bg", - html: '<div class="x-dlg-bg-left"><div class="x-dlg-bg-right"><div class="x-dlg-bg-center"> </div></div></div>' - }); - this.centerBg = this.bg.child("div.x-dlg-bg-center"); - - - if(this.autoScroll !== false && !this.autoTabs){ - this.body.setStyle("overflow", "auto"); - } - - this.toolbox = this.el.createChild({cls: "x-dlg-toolbox"}); - - if(this.closable !== false){ - this.el.addClass("x-dlg-closable"); - this.close = this.toolbox.createChild({cls:"x-dlg-close"}); - this.close.on("click", this.closeClick, this); - this.close.addClassOnOver("x-dlg-close-over"); - } - if(this.collapsible !== false){ - this.collapseBtn = this.toolbox.createChild({cls:"x-dlg-collapse"}); - this.collapseBtn.on("click", this.collapseClick, this); - this.collapseBtn.addClassOnOver("x-dlg-collapse-over"); - this.header.on("dblclick", this.collapseClick, this); - } - if(this.resizable !== false){ - this.el.addClass("x-dlg-resizable"); - this.resizer = new Ext.Resizable(el, { - minWidth: this.minWidth || 80, - minHeight:this.minHeight || 80, - handles: this.resizeHandles || "all", - pinned: true - }); - this.resizer.on("beforeresize", this.beforeResize, this); - this.resizer.on("resize", this.onResize, this); - } - if(this.draggable !== false){ - el.addClass("x-dlg-draggable"); - if (!this.proxyDrag) { - var dd = new Ext.dd.DD(el.dom.id, "WindowDrag"); - } - else { - var dd = new Ext.dd.DDProxy(el.dom.id, "WindowDrag", {dragElId: this.proxy.id}); - } - dd.setHandleElId(this.header.id); - dd.endDrag = this.endMove.createDelegate(this); - dd.startDrag = this.startMove.createDelegate(this); - dd.onDrag = this.onDrag.createDelegate(this); - dd.scroll = false; - this.dd = dd; - } - if(this.modal){ - this.mask = dh.append(document.body, {tag: "div", cls:"x-dlg-mask"}, true); - this.mask.enableDisplayMode("block"); - this.mask.hide(); - this.el.addClass("x-dlg-modal"); - } - if(this.shadow){ - this.shadow = new Ext.Shadow({ - mode : typeof this.shadow == "string" ? this.shadow : "sides", - offset : this.shadowOffset - }); - }else{ - this.shadowOffset = 0; - } - if(Ext.useShims && this.shim !== false){ - this.shim = this.el.createShim(); - this.shim.hide = this.hideAction; - this.shim.hide(); - }else{ - this.shim = false; - } - if(this.autoTabs){ - this.initTabs(); - } - this.addEvents({ - - "keydown" : true, - - "move" : true, - - "resize" : true, - - "beforehide" : true, - - "hide" : true, - - "beforeshow" : true, - - "show" : true - }); - el.on("keydown", this.onKeyDown, this); - el.on("mousedown", this.toFront, this); - Ext.EventManager.onWindowResize(this.adjustViewport, this, true); - this.el.hide(); - Ext.DialogManager.register(this); - Ext.BasicDialog.superclass.constructor.call(this); -}; - -Ext.extend(Ext.BasicDialog, Ext.util.Observable, { - shadowOffset: Ext.isIE ? 6 : 5, - minHeight: 80, - minWidth: 200, - minButtonWidth: 75, - defaultButton: null, - buttonAlign: "right", - tabTag: 'div', - firstShow: true, - - - setTitle : function(text){ - this.header.update(text); - return this; - }, - - // private - closeClick : function(){ - this.hide(); - }, - - // private - collapseClick : function(){ - this[this.collapsed ? "expand" : "collapse"](); - }, - - - collapse : function(){ - if(!this.collapsed){ - this.collapsed = true; - this.el.addClass("x-dlg-collapsed"); - this.restoreHeight = this.el.getHeight(); - this.resizeTo(this.el.getWidth(), this.header.getHeight()); - } - }, - - - expand : function(){ - if(this.collapsed){ - this.collapsed = false; - this.el.removeClass("x-dlg-collapsed"); - this.resizeTo(this.el.getWidth(), this.restoreHeight); - } - }, - - - initTabs : function(){ - var tabs = this.getTabs(); - while(tabs.getTab(0)){ - tabs.removeTab(0); - } - this.el.select(this.tabTag+'.x-dlg-tab').each(function(el){ - var dom = el.dom; - tabs.addTab(Ext.id(dom), dom.title); - dom.title = ""; - }); - tabs.activate(0); - return tabs; - }, - - // private - beforeResize : function(){ - this.resizer.minHeight = Math.max(this.minHeight, this.getHeaderFooterHeight(true)+40); - }, - - // private - onResize : function(){ - this.refreshSize(); - this.syncBodyHeight(); - this.adjustAssets(); - this.focus(); - this.fireEvent("resize", this, this.size.width, this.size.height); - }, - - // private - onKeyDown : function(e){ - if(this.isVisible()){ - this.fireEvent("keydown", this, e); - } - }, - - - resizeTo : function(width, height){ - this.el.setSize(width, height); - this.size = {width: width, height: height}; - this.syncBodyHeight(); - if(this.fixedcenter){ - this.center(); - } - if(this.isVisible()){ - this.constrainXY(); - this.adjustAssets(); - } - this.fireEvent("resize", this, width, height); - return this; - }, - - - - setContentSize : function(w, h){ - h += this.getHeaderFooterHeight() + this.body.getMargins("tb"); - w += this.body.getMargins("lr") + this.bwrap.getMargins("lr") + this.centerBg.getPadding("lr"); - //if(!this.el.isBorderBox()){ - h += this.body.getPadding("tb") + this.bwrap.getBorderWidth("tb") + this.body.getBorderWidth("tb") + this.el.getBorderWidth("tb"); - w += this.body.getPadding("lr") + this.bwrap.getBorderWidth("lr") + this.body.getBorderWidth("lr") + this.bwrap.getPadding("lr") + this.el.getBorderWidth("lr"); - //} - if(this.tabs){ - h += this.tabs.stripWrap.getHeight() + this.tabs.bodyEl.getMargins("tb") + this.tabs.bodyEl.getPadding("tb"); - w += this.tabs.bodyEl.getMargins("lr") + this.tabs.bodyEl.getPadding("lr"); - } - this.resizeTo(w, h); - return this; - }, - - - addKeyListener : function(key, fn, scope){ - var keyCode, shift, ctrl, alt; - if(typeof key == "object" && !(key instanceof Array)){ - keyCode = key["key"]; - shift = key["shift"]; - ctrl = key["ctrl"]; - alt = key["alt"]; - }else{ - keyCode = key; - } - var handler = function(dlg, e){ - if((!shift || e.shiftKey) && (!ctrl || e.ctrlKey) && (!alt || e.altKey)){ - var k = e.getKey(); - if(keyCode instanceof Array){ - for(var i = 0, len = keyCode.length; i < len; i++){ - if(keyCode[i] == k){ - fn.call(scope || window, dlg, k, e); - return; - } - } - }else{ - if(k == keyCode){ - fn.call(scope || window, dlg, k, e); - } - } - } - }; - this.on("keydown", handler); - return this; - }, - - - getTabs : function(){ - if(!this.tabs){ - this.el.addClass("x-dlg-auto-tabs"); - this.body.addClass(this.tabPosition == "bottom" ? "x-tabs-bottom" : "x-tabs-top"); - this.tabs = new Ext.TabPanel(this.body.dom, this.tabPosition == "bottom"); - } - return this.tabs; - }, - - - addButton : function(config, handler, scope){ - var dh = Ext.DomHelper; - if(!this.footer){ - this.footer = dh.append(this.bwrap, {tag: "div", cls:"x-dlg-ft"}, true); - } - if(!this.btnContainer){ - var tb = this.footer.createChild({ - tag:"div", - cls:"x-dlg-btns x-dlg-btns-"+this.buttonAlign, - html:'<table cellspacing="0"><tbody><tr></tr></tbody></table><div class="x-clear"></div>' - }, null, true); - this.btnContainer = tb.firstChild.firstChild.firstChild; - } - var bconfig = { - handler: handler, - scope: scope, - minWidth: this.minButtonWidth, - hideParent:true - }; - if(typeof config == "string"){ - bconfig.text = config; - }else{ - if(config.tag){ - bconfig.dhconfig = config; - }else{ - Ext.apply(bconfig, config); - } - } - var btn = new Ext.Button( - this.btnContainer.appendChild(document.createElement("td")), - bconfig - ); - this.syncBodyHeight(); - if(!this.buttons){ - - this.buttons = []; - } - this.buttons.push(btn); - return btn; - }, - - - setDefaultButton : function(btn){ - this.defaultButton = btn; - return this; - }, - - // private - getHeaderFooterHeight : function(safe){ - var height = 0; - if(this.header){ - height += this.header.getHeight(); - } - if(this.footer){ - var fm = this.footer.getMargins(); - height += (this.footer.getHeight()+fm.top+fm.bottom); - } - height += this.bwrap.getPadding("tb")+this.bwrap.getBorderWidth("tb"); - height += this.centerBg.getPadding("tb"); - return height; - }, - - // private - syncBodyHeight : function(){ - var bd = this.body, cb = this.centerBg, bw = this.bwrap; - var height = this.size.height - this.getHeaderFooterHeight(false); - bd.setHeight(height-bd.getMargins("tb")); - var hh = this.header.getHeight(); - var h = this.size.height-hh; - cb.setHeight(h); - bw.setLeftTop(cb.getPadding("l"), hh+cb.getPadding("t")); - bw.setHeight(h-cb.getPadding("tb")); - bw.setWidth(this.el.getWidth(true)-cb.getPadding("lr")); - bd.setWidth(bw.getWidth(true)); - if(this.tabs){ - this.tabs.syncHeight(); - if(Ext.isIE){ - this.tabs.el.repaint(); - } - } - }, - - - restoreState : function(){ - var box = Ext.state.Manager.get(this.stateId || (this.el.id + "-state")); - if(box && box.width){ - this.xy = [box.x, box.y]; - this.resizeTo(box.width, box.height); - } - return this; - }, - - // private - beforeShow : function(){ - this.expand(); - if(this.fixedcenter){ - this.xy = this.el.getCenterXY(true); - } - if(this.modal){ - Ext.get(document.body).addClass("x-body-masked"); - this.mask.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true)); - this.mask.show(); - } - this.constrainXY(); - }, - - // private - animShow : function(){ - var b = Ext.get(this.animateTarget, true).getBox(); - this.proxy.setSize(b.width, b.height); - this.proxy.setLocation(b.x, b.y); - this.proxy.show(); - this.proxy.setBounds(this.xy[0], this.xy[1], this.size.width, this.size.height, - true, .35, this.showEl.createDelegate(this)); - }, - - - show : function(animateTarget){ - if (this.fireEvent("beforeshow", this) === false){ - return; - } - if(this.syncHeightBeforeShow){ - this.syncBodyHeight(); - }else if(this.firstShow){ - this.firstShow = false; - this.syncBodyHeight(); // sync the height on the first show instead of in the constructor - } - this.animateTarget = animateTarget || this.animateTarget; - if(!this.el.isVisible()){ - this.beforeShow(); - if(this.animateTarget){ - this.animShow(); - }else{ - this.showEl(); - } - } - return this; - }, - - // private - showEl : function(){ - this.proxy.hide(); - this.el.setXY(this.xy); - this.el.show(); - this.adjustAssets(true); - this.toFront(); - this.focus(); - // IE peekaboo bug - fix found by Dave Fenwick - if(Ext.isIE){ - this.el.repaint(); - } - this.fireEvent("show", this); - }, - - - focus : function(){ - if(this.defaultButton){ - this.defaultButton.focus(); - }else{ - this.focusEl.focus(); - } - }, - - // private - constrainXY : function(){ - if(this.constraintoviewport !== false){ - if(!this.viewSize){ - if(this.container){ - var s = this.container.getSize(); - this.viewSize = [s.width, s.height]; - }else{ - this.viewSize = [Ext.lib.Dom.getViewWidth(),Ext.lib.Dom.getViewHeight()]; - } - } - var s = Ext.get(this.container||document).getScroll(); - - var x = this.xy[0], y = this.xy[1]; - var w = this.size.width, h = this.size.height; - var vw = this.viewSize[0], vh = this.viewSize[1]; - // only move it if it needs it - var moved = false; - // first validate right/bottom - if(x + w > vw+s.left){ - x = vw - w; - moved = true; - } - if(y + h > vh+s.top){ - y = vh - h; - moved = true; - } - // then make sure top/left isn't negative - if(x < s.left){ - x = s.left; - moved = true; - } - if(y < s.top){ - y = s.top; - moved = true; - } - if(moved){ - // cache xy - this.xy = [x, y]; - if(this.isVisible()){ - this.el.setLocation(x, y); - this.adjustAssets(); - } - } - } - }, - - // private - onDrag : function(){ - if(!this.proxyDrag){ - this.xy = this.el.getXY(); - this.adjustAssets(); - } - }, - - // private - adjustAssets : function(doShow){ - var x = this.xy[0], y = this.xy[1]; - var w = this.size.width, h = this.size.height; - if(doShow === true){ - if(this.shadow){ - this.shadow.show(this.el); - } - if(this.shim){ - this.shim.show(); - } - } - if(this.shadow && this.shadow.isVisible()){ - this.shadow.show(this.el); - } - if(this.shim && this.shim.isVisible()){ - this.shim.setBounds(x, y, w, h); - } - }, - - // private - adjustViewport : function(w, h){ - if(!w || !h){ - w = Ext.lib.Dom.getViewWidth(); - h = Ext.lib.Dom.getViewHeight(); - } - // cache the size - this.viewSize = [w, h]; - if(this.modal && this.mask.isVisible()){ - this.mask.setSize(w, h); // first make sure the mask isn't causing overflow - this.mask.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true)); - } - if(this.isVisible()){ - this.constrainXY(); - } - }, - - - destroy : function(removeEl){ - if(this.isVisible()){ - this.animateTarget = null; - this.hide(); - } - Ext.EventManager.removeResizeListener(this.adjustViewport, this); - if(this.tabs){ - this.tabs.destroy(removeEl); - } - Ext.destroy( - this.shim, - this.proxy, - this.resizer, - this.close, - this.mask - ); - if(this.dd){ - this.dd.unreg(); - } - if(this.buttons){ - for(var i = 0, len = this.buttons.length; i < len; i++){ - this.buttons[i].destroy(); - } - } - this.el.removeAllListeners(); - if(removeEl === true){ - this.el.update(""); - this.el.remove(); - } - Ext.DialogManager.unregister(this); - }, - - // private - startMove : function(){ - if(this.proxyDrag){ - this.proxy.show(); - } - if(this.constraintoviewport !== false){ - this.dd.constrainTo(document.body, {right: this.shadowOffset, bottom: this.shadowOffset}); - } - }, - - // private - endMove : function(){ - if(!this.proxyDrag){ - Ext.dd.DD.prototype.endDrag.apply(this.dd, arguments); - }else{ - Ext.dd.DDProxy.prototype.endDrag.apply(this.dd, arguments); - this.proxy.hide(); - } - this.refreshSize(); - this.adjustAssets(); - this.focus(); - this.fireEvent("move", this, this.xy[0], this.xy[1]); - }, - - - toFront : function(){ - Ext.DialogManager.bringToFront(this); - return this; - }, - - - toBack : function(){ - Ext.DialogManager.sendToBack(this); - return this; - }, - - - center : function(){ - var xy = this.el.getCenterXY(true); - this.moveTo(xy[0], xy[1]); - return this; - }, - - - moveTo : function(x, y){ - this.xy = [x,y]; - if(this.isVisible()){ - this.el.setXY(this.xy); - this.adjustAssets(); - } - return this; - }, - - - alignTo : function(element, position, offsets){ - this.xy = this.el.getAlignToXY(element, position, offsets); - if(this.isVisible()){ - this.el.setXY(this.xy); - this.adjustAssets(); - } - return this; - }, - - - anchorTo : function(el, alignment, offsets, monitorScroll){ - var action = function(){ - this.alignTo(el, alignment, offsets); - }; - Ext.EventManager.onWindowResize(action, this); - var tm = typeof monitorScroll; - if(tm != 'undefined'){ - Ext.EventManager.on(window, 'scroll', action, this, - {buffer: tm == 'number' ? monitorScroll : 50}); - } - action.call(this); - return this; - }, - - - isVisible : function(){ - return this.el.isVisible(); - }, - - // private - animHide : function(callback){ - var b = Ext.get(this.animateTarget).getBox(); - this.proxy.show(); - this.proxy.setBounds(this.xy[0], this.xy[1], this.size.width, this.size.height); - this.el.hide(); - this.proxy.setBounds(b.x, b.y, b.width, b.height, true, .35, - this.hideEl.createDelegate(this, [callback])); - }, - - - hide : function(callback){ - if (this.fireEvent("beforehide", this) === false){ - return; - } - if(this.shadow){ - this.shadow.hide(); - } - if(this.shim) { - this.shim.hide(); - } - if(this.animateTarget){ - this.animHide(callback); - }else{ - this.el.hide(); - this.hideEl(callback); - } - return this; - }, - - // private - hideEl : function(callback){ - this.proxy.hide(); - if(this.modal){ - this.mask.hide(); - Ext.get(document.body).removeClass("x-body-masked"); - } - this.fireEvent("hide", this); - if(typeof callback == "function"){ - callback(); - } - }, - - // private - hideAction : function(){ - this.setLeft("-10000px"); - this.setTop("-10000px"); - this.setStyle("visibility", "hidden"); - }, - - // private - refreshSize : function(){ - this.size = this.el.getSize(); - this.xy = this.el.getXY(); - Ext.state.Manager.set(this.stateId || this.el.id + "-state", this.el.getBox()); - }, - - // private - // z-index is managed by the DialogManager and may be overwritten at any time - setZIndex : function(index){ - if(this.modal){ - this.mask.setStyle("z-index", index); - } - if(this.shim){ - this.shim.setStyle("z-index", ++index); - } - if(this.shadow){ - this.shadow.setZIndex(++index); - } - this.el.setStyle("z-index", ++index); - if(this.proxy){ - this.proxy.setStyle("z-index", ++index); - } - if(this.resizer){ - this.resizer.proxy.setStyle("z-index", ++index); - } - - this.lastZIndex = index; - }, - - - getEl : function(){ - return this.el; - } -}); - - -Ext.DialogManager = function(){ - var list = {}; - var accessList = []; - var front = null; - - // private - var sortDialogs = function(d1, d2){ - return (!d1._lastAccess || d1._lastAccess < d2._lastAccess) ? -1 : 1; - }; - - // private - var orderDialogs = function(){ - accessList.sort(sortDialogs); - var seed = Ext.DialogManager.zseed; - for(var i = 0, len = accessList.length; i < len; i++){ - var dlg = accessList[i]; - if(dlg){ - dlg.setZIndex(seed + (i*10)); - } - } - }; - - return { - - zseed : 9000, - - // private - register : function(dlg){ - list[dlg.id] = dlg; - accessList.push(dlg); - }, - - // private - unregister : function(dlg){ - delete list[dlg.id]; - if(!accessList.indexOf){ - for(var i = 0, len = accessList.length; i < len; i++){ - if(accessList[i] == dlg){ - accessList.splice(i, 1); - return; - } - } - }else{ - var i = accessList.indexOf(dlg); - if(i != -1){ - accessList.splice(i, 1); - } - } - }, - - - get : function(id){ - return typeof id == "object" ? id : list[id]; - }, - - - bringToFront : function(dlg){ - dlg = this.get(dlg); - if(dlg != front){ - front = dlg; - dlg._lastAccess = new Date().getTime(); - orderDialogs(); - } - return dlg; - }, - - - sendToBack : function(dlg){ - dlg = this.get(dlg); - dlg._lastAccess = -(new Date().getTime()); - orderDialogs(); - return dlg; - }, - - - hideAll : function(){ - for(var id in list){ - if(list[id] && typeof list[id] != "function" && list[id].isVisible()){ - list[id].hide(); - } - } - } - }; -}(); - - -Ext.LayoutDialog = function(el, config){ - config.autoTabs = false; - Ext.LayoutDialog.superclass.constructor.call(this, el, config); - this.body.setStyle({overflow:"hidden", position:"relative"}); - this.layout = new Ext.BorderLayout(this.body.dom, config); - this.layout.monitorWindowResize = false; - this.el.addClass("x-dlg-auto-layout"); - // fix case when center region overwrites center function - this.center = Ext.BasicDialog.prototype.center; - this.on("show", this.layout.layout, this.layout, true); -}; -Ext.extend(Ext.LayoutDialog, Ext.BasicDialog, { - - endUpdate : function(){ - this.layout.endUpdate(); - }, - - - beginUpdate : function(){ - this.layout.beginUpdate(); - }, - - - getLayout : function(){ - return this.layout; - }, - - showEl : function(){ - Ext.LayoutDialog.superclass.showEl.apply(this, arguments); - if(Ext.isIE7){ - this.layout.layout(); - } - }, - - // private - // Use the syncHeightBeforeShow config option to control this automatically - syncBodyHeight : function(){ - Ext.LayoutDialog.superclass.syncBodyHeight.call(this); - if(this.layout){this.layout.layout();} - } -}); - -Ext.MessageBox = function(){ - var dlg, opt, mask, waitTimer; - var bodyEl, msgEl, textboxEl, textareaEl, progressEl, pp; - var buttons, activeTextEl, bwidth; - - // private - var handleButton = function(button){ - dlg.hide(); - Ext.callback(opt.fn, opt.scope||window, [button, activeTextEl.dom.value], 1); - }; - - // private - var handleHide = function(){ - if(opt && opt.cls){ - dlg.el.removeClass(opt.cls); - } - if(waitTimer){ - Ext.TaskMgr.stop(waitTimer); - waitTimer = null; - } - }; - - // private - var updateButtons = function(b){ - var width = 0; - if(!b){ - buttons["ok"].hide(); - buttons["cancel"].hide(); - buttons["yes"].hide(); - buttons["no"].hide(); - dlg.footer.dom.style.display = 'none'; - return width; - } - dlg.footer.dom.style.display = ''; - for(var k in buttons){ - if(typeof buttons[k] != "function"){ - if(b[k]){ - buttons[k].show(); - buttons[k].setText(typeof b[k] == "string" ? b[k] : Ext.MessageBox.buttonText[k]); - width += buttons[k].el.getWidth()+15; - }else{ - buttons[k].hide(); - } - } - } - return width; - }; - - // private - var handleEsc = function(d, k, e){ - if(opt && opt.closable !== false){ - dlg.hide(); - } - if(e){ - e.stopEvent(); - } - }; - - return { - - getDialog : function(){ - if(!dlg){ - dlg = new Ext.BasicDialog("x-msg-box", { - autoCreate : true, - shadow: true, - draggable: true, - resizable:false, - constraintoviewport:false, - fixedcenter:true, - collapsible : false, - shim:true, - modal: true, - width:400, height:100, - buttonAlign:"center", - closeClick : function(){ - if(opt && opt.buttons && opt.buttons.no && !opt.buttons.cancel){ - handleButton("no"); - }else{ - handleButton("cancel"); - } - } - }); - dlg.on("hide", handleHide); - mask = dlg.mask; - dlg.addKeyListener(27, handleEsc); - buttons = {}; - var bt = this.buttonText; - buttons["ok"] = dlg.addButton(bt["ok"], handleButton.createCallback("ok")); - buttons["yes"] = dlg.addButton(bt["yes"], handleButton.createCallback("yes")); - buttons["no"] = dlg.addButton(bt["no"], handleButton.createCallback("no")); - buttons["cancel"] = dlg.addButton(bt["cancel"], handleButton.createCallback("cancel")); - bodyEl = dlg.body.createChild({ - tag:"div", - html:'<span class="ext-mb-text"></span><br /><input type="text" class="ext-mb-input" /><textarea class="ext-mb-textarea"></textarea><div class="ext-mb-progress-wrap"><div class="ext-mb-progress"><div class="ext-mb-progress-bar"> </div></div></div>' - }); - msgEl = bodyEl.dom.firstChild; - textboxEl = Ext.get(bodyEl.dom.childNodes[2]); - textboxEl.enableDisplayMode(); - textboxEl.addKeyListener([10,13], function(){ - if(dlg.isVisible() && opt && opt.buttons){ - if(opt.buttons.ok){ - handleButton("ok"); - }else if(opt.buttons.yes){ - handleButton("yes"); - } - } - }); - textareaEl = Ext.get(bodyEl.dom.childNodes[3]); - textareaEl.enableDisplayMode(); - progressEl = Ext.get(bodyEl.dom.childNodes[4]); - progressEl.enableDisplayMode(); - var pf = progressEl.dom.firstChild; - pp = Ext.get(pf.firstChild); - pp.setHeight(pf.offsetHeight); - } - return dlg; - }, - - - updateText : function(text){ - if(!dlg.isVisible() && !opt.width){ - dlg.resizeTo(this.maxWidth, 100); // resize first so content is never clipped from previous shows - } - msgEl.innerHTML = text || ' '; - var w = Math.max(Math.min(opt.width || msgEl.offsetWidth, this.maxWidth), - Math.max(opt.minWidth || this.minWidth, bwidth)); - if(opt.prompt){ - activeTextEl.setWidth(w); - } - if(dlg.isVisible()){ - dlg.fixedcenter = false; - } - dlg.setContentSize(w, bodyEl.getHeight()); - if(dlg.isVisible()){ - dlg.fixedcenter = true; - } - return this; - }, - - - updateProgress : function(value, text){ - if(text){ - this.updateText(text); - } - pp.setWidth(Math.floor(value*progressEl.dom.firstChild.offsetWidth)); - return this; - }, - - - isVisible : function(){ - return dlg && dlg.isVisible(); - }, - - - hide : function(){ - if(this.isVisible()){ - dlg.hide(); - } - }, - - - show : function(options){ - if(this.isVisible()){ - this.hide(); - } - var d = this.getDialog(); - opt = options; - d.setTitle(opt.title || " "); - d.close.setDisplayed(opt.closable !== false); - activeTextEl = textboxEl; - opt.prompt = opt.prompt || (opt.multiline ? true : false); - if(opt.prompt){ - if(opt.multiline){ - textboxEl.hide(); - textareaEl.show(); - textareaEl.setHeight(typeof opt.multiline == "number" ? - opt.multiline : this.defaultTextHeight); - activeTextEl = textareaEl; - }else{ - textboxEl.show(); - textareaEl.hide(); - } - }else{ - textboxEl.hide(); - textareaEl.hide(); - } - progressEl.setDisplayed(opt.progress === true); - this.updateProgress(0); - activeTextEl.dom.value = opt.value || ""; - if(opt.prompt){ - dlg.setDefaultButton(activeTextEl); - }else{ - var bs = opt.buttons; - var db = null; - if(bs && bs.ok){ - db = buttons["ok"]; - }else if(bs && bs.yes){ - db = buttons["yes"]; - } - dlg.setDefaultButton(db); - } - bwidth = updateButtons(opt.buttons); - this.updateText(opt.msg); - if(opt.cls){ - d.el.addClass(opt.cls); - } - d.proxyDrag = opt.proxyDrag === true; - d.modal = opt.modal !== false; - d.mask = opt.modal !== false ? mask : false; - if(!d.isVisible()){ - // force it to the end of the z-index stack so it gets a cursor in FF - document.body.appendChild(dlg.el.dom); - d.animateTarget = null; - d.show(options.animEl); - } - return this; - }, - - - progress : function(title, msg){ - this.show({ - title : title, - msg : msg, - buttons: false, - progress:true, - closable:false, - minWidth: this.minProgressWidth - }); - return this; - }, - - - alert : function(title, msg, fn, scope){ - this.show({ - title : title, - msg : msg, - buttons: this.OK, - fn: fn, - scope : scope - }); - return this; - }, - - - wait : function(msg, title){ - this.show({ - title : title, - msg : msg, - buttons: false, - closable:false, - progress:true, - modal:true, - width:300, - wait:true - }); - waitTimer = Ext.TaskMgr.start({ - run: function(i){ - Ext.MessageBox.updateProgress(((((i+20)%20)+1)*5)*.01); - }, - interval: 1000 - }); - return this; - }, - - - confirm : function(title, msg, fn, scope){ - this.show({ - title : title, - msg : msg, - buttons: this.YESNO, - fn: fn, - scope : scope - }); - return this; - }, - - - prompt : function(title, msg, fn, scope, multiline){ - this.show({ - title : title, - msg : msg, - buttons: this.OKCANCEL, - fn: fn, - minWidth:250, - scope : scope, - prompt:true, - multiline: multiline - }); - return this; - }, - - - OK : {ok:true}, - - YESNO : {yes:true, no:true}, - - OKCANCEL : {ok:true, cancel:true}, - - YESNOCANCEL : {yes:true, no:true, cancel:true}, - - - defaultTextHeight : 75, - - maxWidth : 600, - - minWidth : 100, - - minProgressWidth : 250, - - buttonText : { - ok : "OK", - cancel : "Cancel", - yes : "Yes", - no : "No" - } - }; -}(); - - -Ext.Msg = Ext.MessageBox; - -Ext.QuickTips = function(){ - var el, tipBody, tipBodyText, tipTitle, tm, cfg, close, tagEls = {}, esc, removeCls = null, bdLeft, bdRight; - var ce, bd, xy, dd; - var visible = false, disabled = true, inited = false; - var showProc = 1, hideProc = 1, dismissProc = 1, locks = []; - - var onOver = function(e){ - if(disabled){ - return; - } - var t = e.getTarget(); - if(!t || t.nodeType !== 1 || t == document || t == document.body){ - return; - } - if(ce && t == ce.el){ - clearTimeout(hideProc); - return; - } - if(t && tagEls[t.id]){ - tagEls[t.id].el = t; - showProc = show.defer(tm.showDelay, tm, [tagEls[t.id]]); - return; - } - var ttp, et = Ext.fly(t); - var ns = cfg.namespace; - if(tm.interceptTitles && t.title){ - ttp = t.title; - t.qtip = ttp; - t.removeAttribute("title"); - e.preventDefault(); - }else{ - ttp = t.qtip || et.getAttributeNS(ns, cfg.attribute); - } - if(ttp){ - showProc = show.defer(tm.showDelay, tm, [{ - el: t, - text: ttp, - width: et.getAttributeNS(ns, cfg.width), - autoHide: et.getAttributeNS(ns, cfg.hide) != "user", - title: et.getAttributeNS(ns, cfg.title), - cls: et.getAttributeNS(ns, cfg.cls) - }]); - } - }; - - var onOut = function(e){ - clearTimeout(showProc); - var t = e.getTarget(); - if(t && ce && ce.el == t && (tm.autoHide && ce.autoHide !== false)){ - hideProc = setTimeout(hide, tm.hideDelay); - } - }; - - var onMove = function(e){ - if(disabled){ - return; - } - xy = e.getXY(); - xy[1] += 18; - if(tm.trackMouse && ce){ - el.setXY(xy); - } - }; - - var onDown = function(e){ - clearTimeout(showProc); - clearTimeout(hideProc); - if(!e.within(el)){ - if(tm.hideOnClick){ - hide(); - tm.disable(); - } - } - }; - - var onUp = function(e){ - tm.enable(); - }; - - var getPad = function(){ - return bdLeft.getPadding('l')+bdRight.getPadding('r'); - }; - - var show = function(o){ - if(disabled){ - return; - } - clearTimeout(dismissProc); - ce = o; - if(removeCls){ // in case manually hidden - el.removeClass(removeCls); - removeCls = null; - } - if(ce.cls){ - el.addClass(ce.cls); - removeCls = ce.cls; - } - if(ce.title){ - tipTitle.update(ce.title); - tipTitle.show(); - }else{ - tipTitle.update(''); - tipTitle.hide(); - } - el.dom.style.width = tm.maxWidth+'px'; - //tipBody.dom.style.width = ''; - tipBodyText.update(o.text); - var p = getPad(), w = ce.width; - if(!w){ - var td = tipBodyText.dom; - var aw = Math.max(td.offsetWidth, td.clientWidth, td.scrollWidth); - if(aw > tm.maxWidth){ - w = tm.maxWidth; - }else if(aw < tm.minWidth){ - w = tm.minWidth; - }else{ - w = aw; - } - } - //tipBody.setWidth(w); - el.setWidth(parseInt(w, 10) + p); - if(ce.autoHide === false){ - close.setDisplayed(true); - if(dd){ - dd.unlock(); - } - }else{ - close.setDisplayed(false); - if(dd){ - dd.lock(); - } - } - if(xy){ - el.avoidY = xy[1]-18; - el.setXY(xy); - } - if(tm.animate){ - el.setOpacity(.1); - el.setStyle("visibility", "visible"); - el.fadeIn({callback: afterShow}); - }else{ - afterShow(); - } - }; - - var afterShow = function(){ - if(ce){ - el.show(); - esc.enable(); - if(tm.autoDismiss && ce.autoHide !== false){ - dismissProc = setTimeout(hide, tm.autoDismissDelay); - } - } - }; - - var hide = function(noanim){ - clearTimeout(dismissProc); - clearTimeout(hideProc); - ce = null; - if(el.isVisible()){ - esc.disable(); - if(noanim !== true && tm.animate){ - el.fadeOut({callback: afterHide}); - }else{ - afterHide(); - } - } - }; - - var afterHide = function(){ - el.hide(); - if(removeCls){ - el.removeClass(removeCls); - removeCls = null; - } - }; - - return { - - minWidth : 40, - - maxWidth : 300, - - interceptTitles : false, - - trackMouse : false, - - hideOnClick : true, - - showDelay : 500, - - hideDelay : 200, - - autoHide : true, - - autoDismiss : true, - - autoDismissDelay : 5000, - - animate : false, - - // private - init : function(){ - tm = Ext.QuickTips; - cfg = tm.tagConfig; - if(!inited){ - if(!Ext.isReady){ // allow calling of init() before onReady - Ext.onReady(Ext.QuickTips.init, Ext.QuickTips); - return; - } - el = new Ext.Layer({cls:"x-tip", shadow:"drop", shim: true, constrain:true, shadowOffset:4}); - el.fxDefaults = {stopFx: true}; - // maximum custom styling - el.update('<div class="x-tip-top-left"><div class="x-tip-top-right"><div class="x-tip-top"></div></div></div><div class="x-tip-bd-left"><div class="x-tip-bd-right"><div class="x-tip-bd"><div class="x-tip-close"></div><h3></h3><div class="x-tip-bd-inner"></div><div class="x-clear"></div></div></div></div><div class="x-tip-ft-left"><div class="x-tip-ft-right"><div class="x-tip-ft"></div></div></div>'); - tipTitle = el.child('h3'); - tipTitle.enableDisplayMode("block"); - tipBody = el.child('div.x-tip-bd'); - tipBodyText = el.child('div.x-tip-bd-inner'); - bdLeft = el.child('div.x-tip-bd-left'); - bdRight = el.child('div.x-tip-bd-right'); - close = el.child('div.x-tip-close'); - close.enableDisplayMode("block"); - close.on("click", hide); - var d = Ext.get(document); - d.on("mousedown", onDown); - d.on("mouseup", onUp); - d.on("mouseover", onOver); - d.on("mouseout", onOut); - d.on("mousemove", onMove); - esc = d.addKeyListener(27, hide); - esc.disable(); - if(Ext.dd.DD){ - dd = el.initDD("default", null, { - onDrag : function(){ - el.sync(); - } - }); - dd.setHandleElId(tipTitle.id); - dd.lock(); - } - inited = true; - } - this.enable(); - }, - - - register : function(config){ - var cs = config instanceof Array ? config : arguments; - for(var i = 0, len = cs.length; i < len; i++) { - var c = cs[i]; - var target = c.target; - if(target){ - if(target instanceof Array){ - for(var j = 0, jlen = target.length; j < jlen; j++){ - tagEls[target[j]] = c; - } - }else{ - tagEls[typeof target == 'string' ? target : Ext.id(target.id)] = c; - } - } - } - }, - - - unregister : function(el){ - delete tagEls[Ext.id(el)]; - }, - - - enable : function(){ - if(inited){ - locks.pop(); - if(locks.length < 1){ - disabled = false; - } - } - }, - - - disable : function(){ - disabled = true; - clearTimeout(showProc); - clearTimeout(hideProc); - clearTimeout(dismissProc); - if(ce){ - hide(true); - } - locks.push(1); - }, - - - isEnabled : function(){ - return !disabled; - }, - - // private - tagConfig : { - namespace : "ext", - attribute : "qtip", - width : "width", - target : "target", - title : "qtitle", - hide : "hide", - cls : "qclass" - } - }; -}(); - -// backwards compat -Ext.QuickTips.tips = Ext.QuickTips.register; - -Ext.tree.TreePanel = function(el, config){ - Ext.apply(this, config); - Ext.tree.TreePanel.superclass.constructor.call(this); - this.el = Ext.get(el); - this.el.addClass('x-tree'); - - this.id = this.el.id; - this.addEvents({ - - "beforeload" : true, - - "load" : true, - - "textchange" : true, - - "beforeexpand" : true, - - "beforecollapse" : true, - - "expand" : true, - - "disabledchange" : true, - - "collapse" : true, - - "beforeclick":true, - - "click":true, - - "dblclick":true, - - "contextmenu":true, - - "beforechildrenrendered":true, - - "startdrag" : true, - - "enddrag" : true, - - "dragdrop" : true, - - "beforenodedrop" : true, - - "nodedrop" : true, - - "nodedragover" : true - }); - if(this.singleExpand){ - this.on("beforeexpand", this.restrictExpand, this); - } -}; -Ext.extend(Ext.tree.TreePanel, Ext.data.Tree, { - rootVisible : true, - animate: Ext.enableFx, - lines : true, - enableDD : false, - hlDrop : Ext.enableFx, - - proxyNodeEvent : function(){ - this.fireEvent.apply(this, arguments); - }, - - // private - restrictExpand : function(node){ - var p = node.parentNode; - if(p){ - if(p.expandedChild && p.expandedChild.parentNode == p){ - p.expandedChild.collapse(); - } - p.expandedChild = node; - } - }, - - // private override - setRootNode : function(node){ - Ext.tree.TreePanel.superclass.setRootNode.call(this, node); - if(!this.rootVisible){ - node.ui = new Ext.tree.RootTreeNodeUI(node); - } - return node; - }, - - - getEl : function(){ - return this.el; - }, - - - getLoader : function(){ - return this.loader; - }, - - - expandAll : function(){ - this.root.expand(true); - }, - - - collapseAll : function(){ - this.root.collapse(true); - }, - - - getSelectionModel : function(){ - if(!this.selModel){ - this.selModel = new Ext.tree.DefaultSelectionModel(); - } - return this.selModel; - }, - - - expandPath : function(path, attr, callback){ - attr = attr || "id"; - var keys = path.split(this.pathSeparator); - var curNode = this.root; - if(curNode.attributes[attr] != keys[1]){ // invalid root - if(callback){ - callback(false, null); - } - return; - } - var index = 1; - var f = function(){ - if(++index == keys.length){ - if(callback){ - callback(true, curNode); - } - return; - } - var c = curNode.findChild(attr, keys[index]); - if(!c){ - if(callback){ - callback(false, curNode); - } - return; - } - curNode = c; - c.expand(false, false, f); - }; - curNode.expand(false, false, f); - }, - - - selectPath : function(path, attr, callback){ - attr = attr || "id"; - var keys = path.split(this.pathSeparator); - var v = keys.pop(); - if(keys.length > 0){ - var f = function(success, node){ - if(success && node){ - var n = node.findChild(attr, v); - if(n){ - n.select(); - if(callback){ - callback(true, n); - } - } - }else{ - if(callback){ - callback(false, n); - } - } - }; - this.expandPath(keys.join(this.pathSeparator), attr, f); - }else{ - this.root.select(); - if(callback){ - callback(true, this.root); - } - } - }, - - getTreeEl : function(){ - return this.el; - }, - - - render : function(){ - this.innerCt = this.el.createChild({tag:"ul", - cls:"x-tree-root-ct " + - (this.lines ? "x-tree-lines" : "x-tree-no-lines")}); - - if(this.containerScroll){ - Ext.dd.ScrollManager.register(this.el); - } - if((this.enableDD || this.enableDrop) && !this.dropZone){ - - this.dropZone = new Ext.tree.TreeDropZone(this, this.dropConfig || { - ddGroup: this.ddGroup || "TreeDD", appendOnly: this.ddAppendOnly === true - }); - } - if((this.enableDD || this.enableDrag) && !this.dragZone){ - - this.dragZone = new Ext.tree.TreeDragZone(this, this.dragConfig || { - ddGroup: this.ddGroup || "TreeDD", - scroll: this.ddScroll - }); - } - this.getSelectionModel().init(this); - this.root.render(); - if(!this.rootVisible){ - this.root.renderChildren(); - } - return this; - } -}); - -Ext.tree.DefaultSelectionModel = function(){ - this.selNode = null; - - this.addEvents({ - - "selectionchange" : true, - - - "beforeselect" : true - }); -}; - -Ext.extend(Ext.tree.DefaultSelectionModel, Ext.util.Observable, { - init : function(tree){ - this.tree = tree; - tree.getTreeEl().on("keydown", this.onKeyDown, this); - tree.on("click", this.onNodeClick, this); - }, - - onNodeClick : function(node, e){ - this.select(node); - }, - - - select : function(node){ - var last = this.selNode; - if(last != node && this.fireEvent('beforeselect', this, node, last) !== false){ - if(last){ - last.ui.onSelectedChange(false); - } - this.selNode = node; - node.ui.onSelectedChange(true); - this.fireEvent("selectionchange", this, node, last); - } - return node; - }, - - - unselect : function(node){ - if(this.selNode == node){ - this.clearSelections(); - } - }, - - - clearSelections : function(){ - var n = this.selNode; - if(n){ - n.ui.onSelectedChange(false); - this.selNode = null; - this.fireEvent("selectionchange", this, null); - } - return n; - }, - - - getSelectedNode : function(){ - return this.selNode; - }, - - - isSelected : function(node){ - return this.selNode == node; - }, - - - selectPrevious : function(){ - var s = this.selNode || this.lastSelNode; - if(!s){ - return null; - } - var ps = s.previousSibling; - if(ps){ - if(!ps.isExpanded() || ps.childNodes.length < 1){ - return this.select(ps); - } else{ - var lc = ps.lastChild; - while(lc && lc.isExpanded() && lc.childNodes.length > 0){ - lc = lc.lastChild; - } - return this.select(lc); - } - } else if(s.parentNode && (this.tree.rootVisible || !s.parentNode.isRoot)){ - return this.select(s.parentNode); - } - return null; - }, - - - selectNext : function(){ - var s = this.selNode || this.lastSelNode; - if(!s){ - return null; - } - if(s.firstChild && s.isExpanded()){ - return this.select(s.firstChild); - }else if(s.nextSibling){ - return this.select(s.nextSibling); - }else if(s.parentNode){ - var newS = null; - s.parentNode.bubble(function(){ - if(this.nextSibling){ - newS = this.getOwnerTree().selModel.select(this.nextSibling); - return false; - } - }); - return newS; - } - return null; - }, - - onKeyDown : function(e){ - var s = this.selNode || this.lastSelNode; - // undesirable, but required - var sm = this; - if(!s){ - return; - } - var k = e.getKey(); - switch(k){ - case e.DOWN: - e.stopEvent(); - this.selectNext(); - break; - case e.UP: - e.stopEvent(); - this.selectPrevious(); - break; - case e.RIGHT: - e.preventDefault(); - if(s.hasChildNodes()){ - if(!s.isExpanded()){ - s.expand(); - }else if(s.firstChild){ - this.select(s.firstChild, e); - } - } - break; - case e.LEFT: - e.preventDefault(); - if(s.hasChildNodes() && s.isExpanded()){ - s.collapse(); - }else if(s.parentNode && (this.tree.rootVisible || s.parentNode != this.tree.getRootNode())){ - this.select(s.parentNode, e); - } - break; - }; - } -}); - - -Ext.tree.MultiSelectionModel = function(){ - this.selNodes = []; - this.selMap = {}; - this.addEvents({ - - "selectionchange" : true - }); -}; - -Ext.extend(Ext.tree.MultiSelectionModel, Ext.util.Observable, { - init : function(tree){ - this.tree = tree; - tree.getTreeEl().on("keydown", this.onKeyDown, this); - tree.on("click", this.onNodeClick, this); - }, - - onNodeClick : function(node, e){ - this.select(node, e, e.ctrlKey); - }, - - - select : function(node, e, keepExisting){ - if(keepExisting !== true){ - this.clearSelections(true); - } - if(this.isSelected(node)){ - this.lastSelNode = node; - return node; - } - this.selNodes.push(node); - this.selMap[node.id] = node; - this.lastSelNode = node; - node.ui.onSelectedChange(true); - this.fireEvent("selectionchange", this, this.selNodes); - return node; - }, - - - unselect : function(node){ - if(this.selMap[node.id]){ - node.ui.onSelectedChange(false); - var sn = this.selNodes; - var index = -1; - if(sn.indexOf){ - index = sn.indexOf(node); - }else{ - for(var i = 0, len = sn.length; i < len; i++){ - if(sn[i] == node){ - index = i; - break; - } - } - } - if(index != -1){ - this.selNodes.splice(index, 1); - } - delete this.selMap[node.id]; - this.fireEvent("selectionchange", this, this.selNodes); - } - }, - - - clearSelections : function(suppressEvent){ - var sn = this.selNodes; - if(sn.length > 0){ - for(var i = 0, len = sn.length; i < len; i++){ - sn[i].ui.onSelectedChange(false); - } - this.selNodes = []; - this.selMap = {}; - if(suppressEvent !== true){ - this.fireEvent("selectionchange", this, this.selNodes); - } - } - }, - - - isSelected : function(node){ - return this.selMap[node.id] ? true : false; - }, - - - getSelectedNodes : function(){ - return this.selNodes; - }, - - onKeyDown : Ext.tree.DefaultSelectionModel.prototype.onKeyDown, - - selectNext : Ext.tree.DefaultSelectionModel.prototype.selectNext, - - selectPrevious : Ext.tree.DefaultSelectionModel.prototype.selectPrevious -}); - -Ext.tree.TreeNode = function(attributes){ - attributes = attributes || {}; - if(typeof attributes == "string"){ - attributes = {text: attributes}; - } - this.childrenRendered = false; - this.rendered = false; - Ext.tree.TreeNode.superclass.constructor.call(this, attributes); - this.expanded = attributes.expanded === true; - this.isTarget = attributes.isTarget !== false; - this.draggable = attributes.draggable !== false && attributes.allowDrag !== false; - this.allowChildren = attributes.allowChildren !== false && attributes.allowDrop !== false; - - - this.text = attributes.text; - - this.disabled = attributes.disabled === true; - - this.addEvents({ - - "textchange" : true, - - "beforeexpand" : true, - - "beforecollapse" : true, - - "expand" : true, - - "disabledchange" : true, - - "collapse" : true, - - "beforeclick":true, - - "click":true, - - "dblclick":true, - - "contextmenu":true, - - "beforechildrenrendered":true - }); - - var uiClass = this.attributes.uiProvider || Ext.tree.TreeNodeUI; - - - this.ui = new uiClass(this); -}; -Ext.extend(Ext.tree.TreeNode, Ext.data.Node, { - preventHScroll: true, - - isExpanded : function(){ - return this.expanded; - }, - - - getUI : function(){ - return this.ui; - }, - - // private override - setFirstChild : function(node){ - var of = this.firstChild; - Ext.tree.TreeNode.superclass.setFirstChild.call(this, node); - if(this.childrenRendered && of && node != of){ - of.renderIndent(true, true); - } - if(this.rendered){ - this.renderIndent(true, true); - } - }, - - // private override - setLastChild : function(node){ - var ol = this.lastChild; - Ext.tree.TreeNode.superclass.setLastChild.call(this, node); - if(this.childrenRendered && ol && node != ol){ - ol.renderIndent(true, true); - } - if(this.rendered){ - this.renderIndent(true, true); - } - }, - - // these methods are overridden to provide lazy rendering support - // private override - appendChild : function(){ - var node = Ext.tree.TreeNode.superclass.appendChild.apply(this, arguments); - if(node && this.childrenRendered){ - node.render(); - } - this.ui.updateExpandIcon(); - return node; - }, - - // private override - removeChild : function(node){ - this.ownerTree.getSelectionModel().unselect(node); - Ext.tree.TreeNode.superclass.removeChild.apply(this, arguments); - // if it's been rendered remove dom node - if(this.childrenRendered){ - node.ui.remove(); - } - if(this.childNodes.length < 1){ - this.collapse(false, false); - }else{ - this.ui.updateExpandIcon(); - } - return node; - }, - - // private override - insertBefore : function(node, refNode){ - var newNode = Ext.tree.TreeNode.superclass.insertBefore.apply(this, arguments); - if(newNode && refNode && this.childrenRendered){ - node.render(); - } - this.ui.updateExpandIcon(); - return newNode; - }, - - - setText : function(text){ - var oldText = this.text; - this.text = text; - this.attributes.text = text; - if(this.rendered){ // event without subscribing - this.ui.onTextChange(this, text, oldText); - } - this.fireEvent("textchange", this, text, oldText); - }, - - - select : function(){ - this.getOwnerTree().getSelectionModel().select(this); - }, - - - unselect : function(){ - this.getOwnerTree().getSelectionModel().unselect(this); - }, - - - isSelected : function(){ - return this.getOwnerTree().getSelectionModel().isSelected(this); - }, - - - expand : function(deep, anim, callback){ - if(!this.expanded){ - if(this.fireEvent("beforeexpand", this, deep, anim) === false){ - return; - } - if(!this.childrenRendered){ - this.renderChildren(); - } - this.expanded = true; - if(!this.isHiddenRoot() && (this.getOwnerTree().animate && anim !== false) || anim){ - this.ui.animExpand(function(){ - this.fireEvent("expand", this); - if(typeof callback == "function"){ - callback(this); - } - if(deep === true){ - this.expandChildNodes(true); - } - }.createDelegate(this)); - return; - }else{ - this.ui.expand(); - this.fireEvent("expand", this); - if(typeof callback == "function"){ - callback(this); - } - } - }else{ - if(typeof callback == "function"){ - callback(this); - } - } - if(deep === true){ - this.expandChildNodes(true); - } - }, - - isHiddenRoot : function(){ - return this.isRoot && !this.getOwnerTree().rootVisible; - }, - - - collapse : function(deep, anim){ - if(this.expanded && !this.isHiddenRoot()){ - if(this.fireEvent("beforecollapse", this, deep, anim) === false){ - return; - } - this.expanded = false; - if((this.getOwnerTree().animate && anim !== false) || anim){ - this.ui.animCollapse(function(){ - this.fireEvent("collapse", this); - if(deep === true){ - this.collapseChildNodes(true); - } - }.createDelegate(this)); - return; - }else{ - this.ui.collapse(); - this.fireEvent("collapse", this); - } - } - if(deep === true){ - var cs = this.childNodes; - for(var i = 0, len = cs.length; i < len; i++) { - cs[i].collapse(true, false); - } - } - }, - - // private - delayedExpand : function(delay){ - if(!this.expandProcId){ - this.expandProcId = this.expand.defer(delay, this); - } - }, - - // private - cancelExpand : function(){ - if(this.expandProcId){ - clearTimeout(this.expandProcId); - } - this.expandProcId = false; - }, - - - toggle : function(){ - if(this.expanded){ - this.collapse(); - }else{ - this.expand(); - } - }, - - - ensureVisible : function(callback){ - var tree = this.getOwnerTree(); - tree.expandPath(this.getPath(), false, function(){ - tree.getTreeEl().scrollChildIntoView(this.ui.anchor); - Ext.callback(callback); - }.createDelegate(this)); - }, - - - expandChildNodes : function(deep){ - var cs = this.childNodes; - for(var i = 0, len = cs.length; i < len; i++) { - cs[i].expand(deep); - } - }, - - - collapseChildNodes : function(deep){ - var cs = this.childNodes; - for(var i = 0, len = cs.length; i < len; i++) { - cs[i].collapse(deep); - } - }, - - - disable : function(){ - this.disabled = true; - this.unselect(); - if(this.rendered && this.ui.onDisableChange){ // event without subscribing - this.ui.onDisableChange(this, true); - } - this.fireEvent("disabledchange", this, true); - }, - - - enable : function(){ - this.disabled = false; - if(this.rendered && this.ui.onDisableChange){ // event without subscribing - this.ui.onDisableChange(this, false); - } - this.fireEvent("disabledchange", this, false); - }, - - // private - renderChildren : function(suppressEvent){ - if(suppressEvent !== false){ - this.fireEvent("beforechildrenrendered", this); - } - var cs = this.childNodes; - for(var i = 0, len = cs.length; i < len; i++){ - cs[i].render(true); - } - this.childrenRendered = true; - }, - - // private - sort : function(fn, scope){ - Ext.tree.TreeNode.superclass.sort.apply(this, arguments); - if(this.childrenRendered){ - var cs = this.childNodes; - for(var i = 0, len = cs.length; i < len; i++){ - cs[i].render(true); - } - } - }, - - // private - render : function(bulkRender){ - this.ui.render(bulkRender); - if(!this.rendered){ - this.rendered = true; - if(this.expanded){ - this.expanded = false; - this.expand(false, false); - } - } - }, - - // private - renderIndent : function(deep, refresh){ - if(refresh){ - this.ui.childIndent = null; - } - this.ui.renderIndent(); - if(deep === true && this.childrenRendered){ - var cs = this.childNodes; - for(var i = 0, len = cs.length; i < len; i++){ - cs[i].renderIndent(true, refresh); - } - } - } -}); - - Ext.tree.AsyncTreeNode = function(config){ - this.loaded = false; - this.loading = false; - Ext.tree.AsyncTreeNode.superclass.constructor.apply(this, arguments); - - this.addEvents({'beforeload':true, 'load': true}); - - -}; -Ext.extend(Ext.tree.AsyncTreeNode, Ext.tree.TreeNode, { - expand : function(deep, anim, callback){ - if(this.loading){ // if an async load is already running, waiting til it's done - var timer; - var f = function(){ - if(!this.loading){ // done loading - clearInterval(timer); - this.expand(deep, anim, callback); - } - }.createDelegate(this); - timer = setInterval(f, 200); - return; - } - if(!this.loaded){ - if(this.fireEvent("beforeload", this) === false){ - return; - } - this.loading = true; - this.ui.beforeLoad(this); - var loader = this.loader || this.attributes.loader || this.getOwnerTree().getLoader(); - if(loader){ - loader.load(this, this.loadComplete.createDelegate(this, [deep, anim, callback])); - return; - } - } - Ext.tree.AsyncTreeNode.superclass.expand.call(this, deep, anim, callback); - }, - - - isLoading : function(){ - return this.loading; - }, - - loadComplete : function(deep, anim, callback){ - this.loading = false; - this.loaded = true; - this.ui.afterLoad(this); - this.fireEvent("load", this); - this.expand(deep, anim, callback); - }, - - - isLoaded : function(){ - return this.loaded; - }, - - hasChildNodes : function(){ - if(!this.isLeaf() && !this.loaded){ - return true; - }else{ - return Ext.tree.AsyncTreeNode.superclass.hasChildNodes.call(this); - } - }, - - - reload : function(callback){ - this.collapse(false, false); - while(this.firstChild){ - this.removeChild(this.firstChild); - } - this.childrenRendered = false; - this.loaded = false; - if(this.isHiddenRoot()){ - this.expanded = false; - } - this.expand(false, false, callback); - } -}); - -Ext.tree.TreeNodeUI = function(node){ - this.node = node; - this.rendered = false; - this.animating = false; - this.emptyIcon = Ext.BLANK_IMAGE_URL; -}; - -Ext.tree.TreeNodeUI.prototype = { - removeChild : function(node){ - if(this.rendered){ - this.ctNode.removeChild(node.ui.getEl()); - } - }, - - beforeLoad : function(){ - this.addClass("x-tree-node-loading"); - }, - - afterLoad : function(){ - this.removeClass("x-tree-node-loading"); - }, - - onTextChange : function(node, text, oldText){ - if(this.rendered){ - this.textNode.innerHTML = text; - } - }, - - onDisableChange : function(node, state){ - this.disabled = state; - if(state){ - this.addClass("x-tree-node-disabled"); - }else{ - this.removeClass("x-tree-node-disabled"); - } - }, - - onSelectedChange : function(state){ - if(state){ - this.focus(); - this.addClass("x-tree-selected"); - }else{ - //this.blur(); - this.removeClass("x-tree-selected"); - } - }, - - onMove : function(tree, node, oldParent, newParent, index, refNode){ - this.childIndent = null; - if(this.rendered){ - var targetNode = newParent.ui.getContainer(); - if(!targetNode){//target not rendered - this.holder = document.createElement("div"); - this.holder.appendChild(this.wrap); - return; - } - var insertBefore = refNode ? refNode.ui.getEl() : null; - if(insertBefore){ - targetNode.insertBefore(this.wrap, insertBefore); - }else{ - targetNode.appendChild(this.wrap); - } - this.node.renderIndent(true); - } - }, - - addClass : function(cls){ - if(this.elNode){ - Ext.fly(this.elNode).addClass(cls); - } - }, - - removeClass : function(cls){ - if(this.elNode){ - Ext.fly(this.elNode).removeClass(cls); - } - }, - - remove : function(){ - if(this.rendered){ - this.holder = document.createElement("div"); - this.holder.appendChild(this.wrap); - } - }, - - fireEvent : function(){ - return this.node.fireEvent.apply(this.node, arguments); - }, - - initEvents : function(){ - this.node.on("move", this.onMove, this); - var E = Ext.EventManager; - var a = this.anchor; - - var el = Ext.fly(a); - - if(Ext.isOpera){ // opera render bug ignores the CSS - el.setStyle("text-decoration", "none"); - } - - el.on("click", this.onClick, this); - el.on("dblclick", this.onDblClick, this); - el.on("contextmenu", this.onContextMenu, this); - - var icon = Ext.fly(this.iconNode); - icon.on("click", this.onClick, this); - icon.on("dblclick", this.onDblClick, this); - icon.on("contextmenu", this.onContextMenu, this); - E.on(this.ecNode, "click", this.ecClick, this, true); - - if(this.node.disabled){ - this.addClass("x-tree-node-disabled"); - } - if(this.node.hidden){ - this.addClass("x-tree-node-disabled"); - } - var ot = this.node.getOwnerTree(); - var dd = ot.enableDD || ot.enableDrag || ot.enableDrop; - if(dd && (!this.node.isRoot || ot.rootVisible)){ - Ext.dd.Registry.register(this.elNode, { - node: this.node, - handles: [this.iconNode, this.textNode], - isHandle: false - }); - } - }, - - hide : function(){ - if(this.rendered){ - this.wrap.style.display = "none"; - } - }, - - show : function(){ - if(this.rendered){ - this.wrap.style.display = ""; - } - }, - - onContextMenu : function(e){ - e.preventDefault(); - this.focus(); - this.fireEvent("contextmenu", this.node, e); - }, - - onClick : function(e){ - if(this.dropping){ - return; - } - if(this.fireEvent("beforeclick", this.node, e) !== false){ - if(!this.disabled && this.node.attributes.href){ - this.fireEvent("click", this.node, e); - return; - } - e.preventDefault(); - if(this.disabled){ - return; - } - - if(this.node.attributes.singleClickExpand && !this.animating && this.node.hasChildNodes()){ - this.node.toggle(); - } - - this.fireEvent("click", this.node, e); - }else{ - e.stopEvent(); - } - }, - - onDblClick : function(e){ - e.preventDefault(); - if(this.disabled){ - return; - } - if(!this.animating && this.node.hasChildNodes()){ - this.node.toggle(); - } - this.fireEvent("dblclick", this.node, e); - }, - - ecClick : function(e){ - if(!this.animating && this.node.hasChildNodes()){ - this.node.toggle(); - } - }, - - startDrop : function(){ - this.dropping = true; - }, - - // delayed drop so the click event doesn't get fired on a drop - endDrop : function(){ - setTimeout(function(){ - this.dropping = false; - }.createDelegate(this), 50); - }, - - expand : function(){ - this.updateExpandIcon(); - this.ctNode.style.display = ""; - }, - - focus : function(){ - if(!this.node.preventHScroll){ - try{this.anchor.focus(); - }catch(e){} - }else if(!Ext.isIE){ - try{ - var noscroll = this.node.getOwnerTree().getTreeEl().dom; - var l = noscroll.scrollLeft; - this.anchor.focus(); - noscroll.scrollLeft = l; - }catch(e){} - } - }, - - blur : function(){ - try{ - this.anchor.blur(); - }catch(e){} - }, - - animExpand : function(callback){ - var ct = Ext.get(this.ctNode); - ct.stopFx(); - if(!this.node.hasChildNodes()){ - this.updateExpandIcon(); - this.ctNode.style.display = ""; - Ext.callback(callback); - return; - } - this.animating = true; - this.updateExpandIcon(); - - ct.slideIn('t', { - callback : function(){ - this.animating = false; - Ext.callback(callback); - }, - scope: this, - duration: this.node.ownerTree.duration || .25 - }); - }, - - highlight : function(){ - var tree = this.node.getOwnerTree(); - Ext.fly(this.wrap).highlight( - tree.hlColor || "C3DAF9", - {endColor: tree.hlBaseColor} - ); - }, - - collapse : function(){ - this.updateExpandIcon(); - this.ctNode.style.display = "none"; - }, - - animCollapse : function(callback){ - var ct = Ext.get(this.ctNode); - ct.enableDisplayMode('block'); - ct.stopFx(); - - this.animating = true; - this.updateExpandIcon(); - - ct.slideOut('t', { - callback : function(){ - this.animating = false; - Ext.callback(callback); - }, - scope: this, - duration: this.node.ownerTree.duration || .25 - }); - }, - - getContainer : function(){ - return this.ctNode; - }, - - getEl : function(){ - return this.wrap; - }, - - appendDDGhost : function(ghostNode){ - ghostNode.appendChild(this.elNode.cloneNode(true)); - }, - - getDDRepairXY : function(){ - return Ext.lib.Dom.getXY(this.iconNode); - }, - - onRender : function(){ - this.render(); - }, - - render : function(bulkRender){ - var n = this.node, a = n.attributes; - var targetNode = n.parentNode ? - n.parentNode.ui.getContainer() : n.ownerTree.innerCt.dom; - if(!this.rendered){ - this.rendered = true; - - this.renderElements(n, a, targetNode, bulkRender); - - if(a.qtip){ - if(this.textNode.setAttributeNS){ - this.textNode.setAttributeNS("ext", "qtip", a.qtip); - if(a.qtipTitle){ - this.textNode.setAttributeNS("ext", "qtitle", a.qtipTitle); - } - }else{ - this.textNode.setAttribute("ext:qtip", a.qtip); - if(a.qtipTitle){ - this.textNode.setAttribute("ext:qtitle", a.qtipTitle); - } - } - }else if(a.qtipCfg){ - a.qtipCfg.target = Ext.id(this.textNode); - Ext.QuickTips.register(a.qtipCfg); - } - this.initEvents(); - if(!this.node.expanded){ - this.updateExpandIcon(); - } - }else{ - if(bulkRender === true) { - targetNode.appendChild(this.wrap); - } - } - }, - - renderElements : function(n, a, targetNode, bulkRender){ - // add some indent caching, this helps performance when rendering a large tree - this.indentMarkup = n.parentNode ? n.parentNode.ui.getChildIndent() : ''; - - var buf = ['<li class="x-tree-node"><div class="x-tree-node-el ', a.cls,'">', - '<span class="x-tree-node-indent">',this.indentMarkup,"</span>", - '<img src="', this.emptyIcon, '" class="x-tree-ec-icon">', - '<img src="', a.icon || this.emptyIcon, '" class="x-tree-node-icon',(a.icon ? " x-tree-node-inline-icon" : ""),(a.iconCls ? " "+a.iconCls : ""),'" unselectable="on">', - '<a hidefocus="on" href="',a.href ? a.href : "#",'" tabIndex="1" ', - a.hrefTarget ? ' target="'+a.hrefTarget+'"' : "", '><span unselectable="on">',n.text,"</span></a></div>", - '<ul class="x-tree-node-ct" style="display:none;"></ul>', - "</li>"]; - - if(bulkRender !== true && n.nextSibling && n.nextSibling.ui.getEl()){ - this.wrap = Ext.DomHelper.insertHtml("beforeBegin", - n.nextSibling.ui.getEl(), buf.join("")); - }else{ - this.wrap = Ext.DomHelper.insertHtml("beforeEnd", targetNode, buf.join("")); - } - - this.elNode = this.wrap.childNodes[0]; - this.ctNode = this.wrap.childNodes[1]; - var cs = this.elNode.childNodes; - this.indentNode = cs[0]; - this.ecNode = cs[1]; - this.iconNode = cs[2]; - this.anchor = cs[3]; - this.textNode = cs[3].firstChild; - }, - - getAnchor : function(){ - return this.anchor; - }, - - getTextEl : function(){ - return this.textNode; - }, - - getIconEl : function(){ - return this.iconNode; - }, - - updateExpandIcon : function(){ - if(this.rendered){ - var n = this.node, c1, c2; - //console.log(n.id) - var cls = n.isLast() ? "x-tree-elbow-end" : "x-tree-elbow"; - var hasChild = n.hasChildNodes(); - if(hasChild){ - if(n.expanded){ - cls += "-minus"; - c1 = "x-tree-node-collapsed"; - c2 = "x-tree-node-expanded"; - }else{ - cls += "-plus"; - c1 = "x-tree-node-expanded"; - c2 = "x-tree-node-collapsed"; - } - if(this.wasLeaf){ - this.removeClass("x-tree-node-leaf"); - this.wasLeaf = false; - } - if(this.c1 != c1 || this.c2 != c2){ - Ext.fly(this.elNode).replaceClass(c1, c2); - this.c1 = c1; this.c2 = c2; - } - }else{ - if(!this.wasLeaf){ - Ext.fly(this.elNode).replaceClass("x-tree-node-expanded", "x-tree-node-leaf"); - delete this.c1; - delete this.c2; - this.wasLeaf = true; - } - } - var ecc = "x-tree-ec-icon "+cls; - if(this.ecc != ecc){ - this.ecNode.className = ecc; - this.ecc = ecc; - } - } - }, - - getChildIndent : function(){ - if(!this.childIndent){ - var buf = []; - var p = this.node; - while(p){ - if(!p.isRoot || (p.isRoot && p.ownerTree.rootVisible)){ - if(!p.isLast()) { - buf.unshift('<img src="'+this.emptyIcon+'" class="x-tree-elbow-line">'); - } else { - buf.unshift('<img src="'+this.emptyIcon+'" class="x-tree-icon">'); - } - } - p = p.parentNode; - } - this.childIndent = buf.join(""); - } - return this.childIndent; - }, - - renderIndent : function(){ - if(this.rendered){ - var indent = ""; - var p = this.node.parentNode; - if(p){ - indent = p.ui.getChildIndent(); - } - if(this.indentMarkup != indent){ // don't rerender if not required - this.indentNode.innerHTML = indent; - this.indentMarkup = indent; - } - this.updateExpandIcon(); - } - } -}; - -Ext.tree.RootTreeNodeUI = function(){ - Ext.tree.RootTreeNodeUI.superclass.constructor.apply(this, arguments); -}; -Ext.extend(Ext.tree.RootTreeNodeUI, Ext.tree.TreeNodeUI, { - render : function(){ - if(!this.rendered){ - var targetNode = this.node.ownerTree.innerCt.dom; - this.node.expanded = true; - targetNode.innerHTML = '<div class="x-tree-root-node"></div>'; - this.wrap = this.ctNode = targetNode.firstChild; - } - }, - collapse : function(){ - }, - expand : function(){ - } -}); - -Ext.tree.TreeLoader = function(config){ - this.baseParams = {}; - this.requestMethod = "POST"; - Ext.apply(this, config); - - this.addEvents({ - - "beforeload" : true, - - "load" : true, - - "loadexception" : true - }); - - Ext.tree.TreeLoader.superclass.constructor.call(this); -}; - -Ext.extend(Ext.tree.TreeLoader, Ext.util.Observable, { - - - - - uiProviders : {}, - - - clearOnLoad : true, - - - load : function(node, callback){ - if(this.clearOnLoad){ - while(node.firstChild){ - node.removeChild(node.firstChild); - } - } - if(node.attributes.children){ // preloaded json children - var cs = node.attributes.children; - for(var i = 0, len = cs.length; i < len; i++){ - node.appendChild(this.createNode(cs[i])); - } - if(typeof callback == "function"){ - callback(); - } - }else if(this.dataUrl){ - this.requestData(node, callback); - } - }, - - getParams: function(node){ - var buf = [], bp = this.baseParams; - for(var key in bp){ - if(typeof bp[key] != "function"){ - buf.push(encodeURIComponent(key), "=", encodeURIComponent(bp[key]), "&"); - } - } - buf.push("node=", encodeURIComponent(node.id)); - return buf.join(""); - }, - - requestData : function(node, callback){ - if(this.fireEvent("beforeload", this, node, callback) !== false){ - var params = this.getParams(node); - var cb = { - success: this.handleResponse, - failure: this.handleFailure, - scope: this, - argument: {callback: callback, node: node} - }; - this.transId = Ext.lib.Ajax.request(this.requestMethod, this.dataUrl, cb, params); - }else{ - // if the load is cancelled, make sure we notify - // the node that we are done - if(typeof callback == "function"){ - callback(); - } - } - }, - - isLoading : function(){ - return this.transId ? true : false; - }, - - abort : function(){ - if(this.isLoading()){ - Ext.lib.Ajax.abort(this.transId); - } - }, - - - createNode : function(attr){ - if(this.applyLoader !== false){ - attr.loader = this; - } - if(typeof attr.uiProvider == 'string'){ - attr.uiProvider = this.uiProviders[attr.uiProvider] || eval(attr.uiProvider); - } - return(attr.leaf ? - new Ext.tree.TreeNode(attr) : - new Ext.tree.AsyncTreeNode(attr)); - }, - - processResponse : function(response, node, callback){ - var json = response.responseText; - try { - var o = eval("("+json+")"); - for(var i = 0, len = o.length; i < len; i++){ - var n = this.createNode(o[i]); - if(n){ - node.appendChild(n); - } - } - if(typeof callback == "function"){ - callback(this, node); - } - }catch(e){ - this.handleFailure(response); - } - }, - - handleResponse : function(response){ - this.transId = false; - var a = response.argument; - this.processResponse(response, a.node, a.callback); - this.fireEvent("load", this, a.node, response); - }, - - handleFailure : function(response){ - this.transId = false; - var a = response.argument; - this.fireEvent("loadexception", this, a.node, response); - if(typeof a.callback == "function"){ - a.callback(this, a.node); - } - } -}); - -Ext.tree.TreeFilter = function(tree, config){ - this.tree = tree; - this.filtered = {}; - Ext.apply(this, config, { - clearBlank:false, - reverse:false, - autoClear:false, - remove:false - }); -}; - -Ext.tree.TreeFilter.prototype = { - - filter : function(value, attr, startNode){ - attr = attr || "text"; - var f; - if(typeof value == "string"){ - var vlen = value.length; - // auto clear empty filter - if(vlen == 0 && this.clearBlank){ - this.clearFilter(); - return; - } - value = value.toLowerCase(); - f = function(n){ - return n.attributes[attr].substr(0, vlen).toLowerCase() == value; - }; - }else if(value.exec){ // regex? - f = function(n){ - return value.test(n.attributes[attr]); - }; - }else{ - throw 'Illegal filter type, must be string or regex'; - } - this.filterBy(f, null, startNode); - }, - - - filterBy : function(fn, scope, startNode){ - startNode = startNode || this.tree.root; - if(this.autoClear){ - this.clearFilter(); - } - var af = this.filtered, rv = this.reverse; - var f = function(n){ - if(n == startNode){ - return true; - } - if(af[n.id]){ - return false; - } - var m = fn.call(scope || n, n); - if(!m || rv){ - af[n.id] = n; - n.ui.hide(); - return false; - } - return true; - }; - startNode.cascade(f); - if(this.remove){ - for(var id in af){ - if(typeof id != "function"){ - var n = af[id]; - if(n && n.parentNode){ - n.parentNode.removeChild(n); - } - } - } - } - }, - - - clear : function(){ - var t = this.tree; - var af = this.filtered; - for(var id in af){ - if(typeof id != "function"){ - var n = af[id]; - if(n){ - n.ui.show(); - } - } - } - this.filtered = {}; - } -}; - - -Ext.tree.TreeSorter = function(tree, config){ - Ext.apply(this, config); - tree.on("beforechildrenrendered", this.doSort, this); - tree.on("append", this.updateSort, this); - tree.on("insert", this.updateSort, this); - - var dsc = this.dir && this.dir.toLowerCase() == "desc"; - var p = this.property || "text"; - var sortType = this.sortType; - var fs = this.folderSort; - var cs = this.caseSensitive === true; - var leafAttr = this.leafAttr || 'leaf'; - - this.sortFn = function(n1, n2){ - if(fs){ - if(n1.attributes[leafAttr] && !n2.attributes[leafAttr]){ - return 1; - } - if(!n1.attributes[leafAttr] && n2.attributes[leafAttr]){ - return -1; - } - } - var v1 = sortType ? sortType(n1) : (cs ? n1[p] : n1[p].toUpperCase()); - var v2 = sortType ? sortType(n2) : (cs ? n2[p] : n2[p].toUpperCase()); - if(v1 < v2){ - return dsc ? +1 : -1; - }else if(v1 > v2){ - return dsc ? -1 : +1; - }else{ - return 0; - } - }; -}; - -Ext.tree.TreeSorter.prototype = { - doSort : function(node){ - node.sort(this.sortFn); - }, - - compareNodes : function(n1, n2){ - - return (n1.text.toUpperCase() > n2.text.toUpperCase() ? 1 : -1); - }, - - updateSort : function(tree, node){ - if(node.childrenRendered){ - this.doSort.defer(1, this, [node]); - } - } -}; -if(Ext.dd.DropZone){ - -Ext.tree.TreeDropZone = function(tree, config){ - this.allowParentInsert = false; - this.allowContainerDrop = false; - this.appendOnly = false; - Ext.tree.TreeDropZone.superclass.constructor.call(this, tree.innerCt, config); - this.tree = tree; - this.lastInsertClass = "x-tree-no-status"; - this.dragOverData = {}; -}; - -Ext.extend(Ext.tree.TreeDropZone, Ext.dd.DropZone, { - ddGroup : "TreeDD", - - expandDelay : 1000, - - expandNode : function(node){ - if(node.hasChildNodes() && !node.isExpanded()){ - node.expand(false, null, this.triggerCacheRefresh.createDelegate(this)); - } - }, - - queueExpand : function(node){ - this.expandProcId = this.expandNode.defer(this.expandDelay, this, [node]); - }, - - cancelExpand : function(){ - if(this.expandProcId){ - clearTimeout(this.expandProcId); - this.expandProcId = false; - } - }, - - isValidDropPoint : function(n, pt, dd, e, data){ - if(!n || !data){ return false; } - var targetNode = n.node; - var dropNode = data.node; - // default drop rules - if(!(targetNode && targetNode.isTarget && pt)){ - return false; - } - if(pt == "append" && targetNode.allowChildren === false){ - return false; - } - if((pt == "above" || pt == "below") && (targetNode.parentNode && targetNode.parentNode.allowChildren === false)){ - return false; - } - if(dropNode && (targetNode == dropNode || dropNode.contains(targetNode))){ - return false; - } - // reuse the object - var overEvent = this.dragOverData; - overEvent.tree = this.tree; - overEvent.target = targetNode; - overEvent.data = data; - overEvent.point = pt; - overEvent.source = dd; - overEvent.rawEvent = e; - overEvent.dropNode = dropNode; - overEvent.cancel = false; - var result = this.tree.fireEvent("nodedragover", overEvent); - return overEvent.cancel === false && result !== false; - }, - - getDropPoint : function(e, n, dd){ - var tn = n.node; - if(tn.isRoot){ - return tn.allowChildren !== false ? "append" : false; // always append for root - } - var dragEl = n.ddel; - var t = Ext.lib.Dom.getY(dragEl), b = t + dragEl.offsetHeight; - var y = Ext.lib.Event.getPageY(e); - var noAppend = tn.allowChildren === false || tn.isLeaf(); - if(this.appendOnly || tn.parentNode.allowChildren === false){ - return noAppend ? false : "append"; - } - var noBelow = false; - if(!this.allowParentInsert){ - noBelow = tn.hasChildNodes() && tn.isExpanded(); - } - var q = (b - t) / (noAppend ? 2 : 3); - if(y >= t && y < (t + q)){ - return "above"; - }else if(!noBelow && (noAppend || y >= b-q && y <= b)){ - return "below"; - }else{ - return "append"; - } - }, - - onNodeEnter : function(n, dd, e, data){ - this.cancelExpand(); - }, - - onNodeOver : function(n, dd, e, data){ - var pt = this.getDropPoint(e, n, dd); - var node = n.node; - - // auto node expand check - if(!this.expandProcId && pt == "append" && node.hasChildNodes() && !n.node.isExpanded()){ - this.queueExpand(node); - }else if(pt != "append"){ - this.cancelExpand(); - } - - // set the insert point style on the target node - var returnCls = this.dropNotAllowed; - if(this.isValidDropPoint(n, pt, dd, e, data)){ - if(pt){ - var el = n.ddel; - var cls; - if(pt == "above"){ - returnCls = n.node.isFirst() ? "x-tree-drop-ok-above" : "x-tree-drop-ok-between"; - cls = "x-tree-drag-insert-above"; - }else if(pt == "below"){ - returnCls = n.node.isLast() ? "x-tree-drop-ok-below" : "x-tree-drop-ok-between"; - cls = "x-tree-drag-insert-below"; - }else{ - returnCls = "x-tree-drop-ok-append"; - cls = "x-tree-drag-append"; - } - if(this.lastInsertClass != cls){ - Ext.fly(el).replaceClass(this.lastInsertClass, cls); - this.lastInsertClass = cls; - } - } - } - return returnCls; - }, - - onNodeOut : function(n, dd, e, data){ - this.cancelExpand(); - this.removeDropIndicators(n); - }, - - onNodeDrop : function(n, dd, e, data){ - var point = this.getDropPoint(e, n, dd); - var targetNode = n.node; - targetNode.ui.startDrop(); - if(!this.isValidDropPoint(n, point, dd, e, data)){ - targetNode.ui.endDrop(); - return false; - } - // first try to find the drop node - var dropNode = data.node || (dd.getTreeNode ? dd.getTreeNode(data, targetNode, point, e) : null); - var dropEvent = { - tree : this.tree, - target: targetNode, - data: data, - point: point, - source: dd, - rawEvent: e, - dropNode: dropNode, - cancel: !dropNode - }; - var retval = this.tree.fireEvent("beforenodedrop", dropEvent); - if(retval === false || dropEvent.cancel === true || !dropEvent.dropNode){ - targetNode.ui.endDrop(); - return false; - } - // allow target changing - targetNode = dropEvent.target; - if(point == "append" && !targetNode.isExpanded()){ - targetNode.expand(false, null, function(){ - this.completeDrop(dropEvent); - }.createDelegate(this)); - }else{ - this.completeDrop(dropEvent); - } - return true; - }, - - completeDrop : function(de){ - var ns = de.dropNode, p = de.point, t = de.target; - if(!(ns instanceof Array)){ - ns = [ns]; - } - var n; - for(var i = 0, len = ns.length; i < len; i++){ - n = ns[i]; - if(p == "above"){ - t.parentNode.insertBefore(n, t); - }else if(p == "below"){ - t.parentNode.insertBefore(n, t.nextSibling); - }else{ - t.appendChild(n); - } - } - n.ui.focus(); - if(this.tree.hlDrop){ - n.ui.highlight(); - } - t.ui.endDrop(); - this.tree.fireEvent("nodedrop", de); - }, - - afterNodeMoved : function(dd, data, e, targetNode, dropNode){ - if(this.tree.hlDrop){ - dropNode.ui.focus(); - dropNode.ui.highlight(); - } - this.tree.fireEvent("nodedrop", this.tree, targetNode, data, dd, e); - }, - - getTree : function(){ - return this.tree; - }, - - removeDropIndicators : function(n){ - if(n && n.ddel){ - var el = n.ddel; - Ext.fly(el).removeClass([ - "x-tree-drag-insert-above", - "x-tree-drag-insert-below", - "x-tree-drag-append"]); - this.lastInsertClass = "_noclass"; - } - }, - - beforeDragDrop : function(target, e, id){ - this.cancelExpand(); - return true; - }, - - afterRepair : function(data){ - if(data && Ext.enableFx){ - data.node.ui.highlight(); - } - this.hideProxy(); - } -}); - -} -if(Ext.dd.DragZone){ -Ext.tree.TreeDragZone = function(tree, config){ - Ext.tree.TreeDragZone.superclass.constructor.call(this, tree.getTreeEl(), config); - this.tree = tree; -}; - -Ext.extend(Ext.tree.TreeDragZone, Ext.dd.DragZone, { - ddGroup : "TreeDD", - - onBeforeDrag : function(data, e){ - var n = data.node; - return n && n.draggable && !n.disabled; - }, - - onInitDrag : function(e){ - var data = this.dragData; - this.tree.getSelectionModel().select(data.node); - this.proxy.update(""); - data.node.ui.appendDDGhost(this.proxy.ghost.dom); - this.tree.fireEvent("startdrag", this.tree, data.node, e); - }, - - getRepairXY : function(e, data){ - return data.node.ui.getDDRepairXY(); - }, - - onEndDrag : function(data, e){ - this.tree.fireEvent("enddrag", this.tree, data.node, e); - }, - - onValidDrop : function(dd, e, id){ - this.tree.fireEvent("dragdrop", this.tree, this.dragData.node, dd, e); - this.hideProxy(); - }, - - beforeInvalidDrop : function(e, id){ - // this scrolls the original position back into view - var sm = this.tree.getSelectionModel(); - sm.clearSelections(); - sm.select(this.dragData.node); - } -}); -} - -Ext.tree.TreeEditor = function(tree, config){ - config = config || {}; - var field = config.events ? config : new Ext.form.TextField(config); - Ext.tree.TreeEditor.superclass.constructor.call(this, field); - - this.tree = tree; - - tree.on('beforeclick', this.beforeNodeClick, this); - tree.getTreeEl().on('mousedown', this.hide, this); - this.on('complete', this.updateNode, this); - this.on('beforestartedit', this.fitToTree, this); - this.on('startedit', this.bindScroll, this, {delay:10}); - this.on('specialkey', this.onSpecialKey, this); -}; - -Ext.extend(Ext.tree.TreeEditor, Ext.Editor, { - - alignment: "l-l", - // inherit - autoSize: false, - - hideEl : false, - - cls: "x-small-editor x-tree-editor", - - shim:false, - // inherit - shadow:"frame", - - maxWidth: 250, - - // private - fitToTree : function(ed, el){ - var td = this.tree.getTreeEl().dom, nd = el.dom; - if(td.scrollLeft > nd.offsetLeft){ // ensure the node left point is visible - td.scrollLeft = nd.offsetLeft; - } - var w = Math.min( - this.maxWidth, - (td.clientWidth > 20 ? td.clientWidth : td.offsetWidth) - Math.max(0, nd.offsetLeft-td.scrollLeft) - 5); - this.setSize(w, ''); - }, - - // private - triggerEdit : function(node){ - this.completeEdit(); - this.editNode = node; - this.startEdit(node.ui.textNode, node.text); - }, - - // private - bindScroll : function(){ - this.tree.getTreeEl().on('scroll', this.cancelEdit, this); - }, - - // private - beforeNodeClick : function(node){ - if(this.tree.getSelectionModel().isSelected(node)){ - this.triggerEdit(node); - return false; - } - }, - - // private - updateNode : function(ed, value){ - this.tree.getTreeEl().un('scroll', this.cancelEdit, this); - this.editNode.setText(value); - }, - - // private - onSpecialKey : function(field, e){ - var k = e.getKey(); - if(k == e.ESC){ - e.stopEvent(); - this.cancelEdit(); - }else if(k == e.ENTER && !e.hasModifier()){ - e.stopEvent(); - this.completeEdit(); - } - } -}); - -Ext.menu.Menu = function(config){ - Ext.apply(this, config); - this.id = this.id || Ext.id(); - this.addEvents({ - - beforeshow : true, - - beforehide : true, - - show : true, - - hide : true, - - click : true, - - mouseover : true, - - mouseout : true, - - itemclick: true - }); - Ext.menu.MenuMgr.register(this); - var mis = this.items; - this.items = new Ext.util.MixedCollection(); - if(mis){ - this.add.apply(this, mis); - } -}; - -Ext.extend(Ext.menu.Menu, Ext.util.Observable, { - - minWidth : 120, - - shadow : "sides", - - subMenuAlign : "tl-tr?", - - defaultAlign : "tl-bl?", - - allowOtherMenus : false, - - hidden:true, - - // private - render : function(){ - if(this.el){ - return; - } - var el = this.el = new Ext.Layer({ - cls: "x-menu", - shadow:this.shadow, - constrain: false, - parentEl: this.parentEl || document.body, - zindex:15000 - }); - - this.keyNav = new Ext.menu.MenuNav(this); - - if(this.plain){ - el.addClass("x-menu-plain"); - } - if(this.cls){ - el.addClass(this.cls); - } - // generic focus element - this.focusEl = el.createChild({ - tag: "a", cls: "x-menu-focus", href: "#", onclick: "return false;", tabIndex:"-1" - }); - var ul = el.createChild({tag: "ul", cls: "x-menu-list"}); - ul.on("click", this.onClick, this); - ul.on("mouseover", this.onMouseOver, this); - ul.on("mouseout", this.onMouseOut, this); - this.items.each(function(item){ - var li = document.createElement("li"); - li.className = "x-menu-list-item"; - ul.dom.appendChild(li); - item.render(li, this); - }, this); - this.ul = ul; - this.autoWidth(); - }, - - // private - autoWidth : function(){ - var el = this.el, ul = this.ul; - if(!el){ - return; - } - var w = this.width; - if(w){ - el.setWidth(w); - }else if(Ext.isIE){ - el.setWidth(this.minWidth); - var t = el.dom.offsetWidth; // force recalc - el.setWidth(ul.getWidth()+el.getFrameWidth("lr")); - } - }, - - // private - delayAutoWidth : function(){ - if(this.rendered){ - if(!this.awTask){ - this.awTask = new Ext.util.DelayedTask(this.autoWidth, this); - } - this.awTask.delay(20); - } - }, - - // private - findTargetItem : function(e){ - var t = e.getTarget(".x-menu-list-item", this.ul, true); - if(t && t.menuItemId){ - return this.items.get(t.menuItemId); - } - }, - - // private - onClick : function(e){ - var t; - if(t = this.findTargetItem(e)){ - t.onClick(e); - this.fireEvent("click", this, t, e); - } - }, - - // private - setActiveItem : function(item, autoExpand){ - if(item != this.activeItem){ - if(this.activeItem){ - this.activeItem.deactivate(); - } - this.activeItem = item; - item.activate(autoExpand); - }else if(autoExpand){ - item.expandMenu(); - } - }, - - // private - tryActivate : function(start, step){ - var items = this.items; - for(var i = start, len = items.length; i >= 0 && i < len; i+= step){ - var item = items.get(i); - if(!item.disabled && item.canActivate){ - this.setActiveItem(item, false); - return item; - } - } - return false; - }, - - // private - onMouseOver : function(e){ - var t; - if(t = this.findTargetItem(e)){ - if(t.canActivate && !t.disabled){ - this.setActiveItem(t, true); - } - } - this.fireEvent("mouseover", this, e, t); - }, - - // private - onMouseOut : function(e){ - var t; - if(t = this.findTargetItem(e)){ - if(t == this.activeItem && t.shouldDeactivate(e)){ - this.activeItem.deactivate(); - delete this.activeItem; - } - } - this.fireEvent("mouseout", this, e, t); - }, - - - isVisible : function(){ - return this.el && !this.hidden; - }, - - - show : function(el, pos, parentMenu){ - this.parentMenu = parentMenu; - if(!this.el){ - this.render(); - } - this.fireEvent("beforeshow", this); - this.showAt(this.el.getAlignToXY(el, pos || this.defaultAlign), parentMenu, false); - }, - - - showAt : function(xy, parentMenu, _fireBefore){ - this.parentMenu = parentMenu; - if(!this.el){ - this.render(); - } - if(_fireBefore !== false){ - this.fireEvent("beforeshow", this); - } - this.el.setXY(xy); - this.el.show(); - this.hidden = false; - this.focus(); - this.fireEvent("show", this); - }, - - focus : function(){ - if(!this.hidden){ - this.doFocus.defer(50, this); - } - }, - - doFocus : function(){ - if(!this.hidden){ - this.focusEl.focus(); - } - }, - - - hide : function(deep){ - if(this.el && this.isVisible()){ - this.fireEvent("beforehide", this); - if(this.activeItem){ - this.activeItem.deactivate(); - this.activeItem = null; - } - this.el.hide(); - this.hidden = true; - this.fireEvent("hide", this); - } - if(deep === true && this.parentMenu){ - this.parentMenu.hide(true); - } - }, - - - add : function(){ - var a = arguments, l = a.length, item; - for(var i = 0; i < l; i++){ - var el = a[i]; - if(el.render){ // some kind of Item - item = this.addItem(el); - }else if(typeof el == "string"){ // string - if(el == "separator" || el == "-"){ - item = this.addSeparator(); - }else{ - item = this.addText(el); - } - }else if(el.tagName || el.el){ // element - item = this.addElement(el); - }else if(typeof el == "object"){ // must be menu item config? - item = this.addMenuItem(el); - } - } - return item; - }, - - - getEl : function(){ - if(!this.el){ - this.render(); - } - return this.el; - }, - - - addSeparator : function(){ - return this.addItem(new Ext.menu.Separator()); - }, - - - addElement : function(el){ - return this.addItem(new Ext.menu.BaseItem(el)); - }, - - - addItem : function(item){ - this.items.add(item); - if(this.ul){ - var li = document.createElement("li"); - li.className = "x-menu-list-item"; - this.ul.dom.appendChild(li); - item.render(li, this); - this.delayAutoWidth(); - } - return item; - }, - - - addMenuItem : function(config){ - if(!(config instanceof Ext.menu.Item)){ - if(typeof config.checked == "boolean"){ // must be check menu item config? - config = new Ext.menu.CheckItem(config); - }else{ - config = new Ext.menu.Item(config); - } - } - return this.addItem(config); - }, - - - addText : function(text){ - return this.addItem(new Ext.menu.TextItem(text)); - }, - - - insert : function(index, item){ - this.items.insert(index, item); - if(this.ul){ - var li = document.createElement("li"); - li.className = "x-menu-list-item"; - this.ul.dom.insertBefore(li, this.ul.dom.childNodes[index]); - item.render(li, this); - this.delayAutoWidth(); - } - return item; - }, - - - remove : function(item){ - this.items.removeKey(item.id); - item.destroy(); - }, - - - removeAll : function(){ - var f; - while(f = this.items.first()){ - this.remove(f); - } - } -}); - -// MenuNav is a private utility class used internally by the Menu -Ext.menu.MenuNav = function(menu){ - Ext.menu.MenuNav.superclass.constructor.call(this, menu.el); - this.scope = this.menu = menu; -}; - -Ext.extend(Ext.menu.MenuNav, Ext.KeyNav, { - doRelay : function(e, h){ - var k = e.getKey(); - if(!this.menu.activeItem && e.isNavKeyPress() && k != e.SPACE && k != e.RETURN){ - this.menu.tryActivate(0, 1); - return false; - } - return h.call(this.scope || this, e, this.menu); - }, - - up : function(e, m){ - if(!m.tryActivate(m.items.indexOf(m.activeItem)-1, -1)){ - m.tryActivate(m.items.length-1, -1); - } - }, - - down : function(e, m){ - if(!m.tryActivate(m.items.indexOf(m.activeItem)+1, 1)){ - m.tryActivate(0, 1); - } - }, - - right : function(e, m){ - if(m.activeItem){ - m.activeItem.expandMenu(true); - } - }, - - left : function(e, m){ - m.hide(); - if(m.parentMenu && m.parentMenu.activeItem){ - m.parentMenu.activeItem.activate(); - } - }, - - enter : function(e, m){ - if(m.activeItem){ - e.stopPropagation(); - m.activeItem.onClick(e); - m.fireEvent("click", this, m.activeItem); - return true; - } - } -}); - -Ext.menu.MenuMgr = function(){ - var menus, active, groups = {}, attached = false, lastShow = new Date(); - - // private - called when first menu is created - function init(){ - menus = {}, active = new Ext.util.MixedCollection(); - Ext.get(document).addKeyListener(27, function(){ - if(active.length > 0){ - hideAll(); - } - }); - } - - // private - function hideAll(){ - if(active.length > 0){ - var c = active.clone(); - c.each(function(m){ - m.hide(); - }); - } - } - - // private - function onHide(m){ - active.remove(m); - if(active.length < 1){ - Ext.get(document).un("mousedown", onMouseDown); - attached = false; - } - } - - // private - function onShow(m){ - var last = active.last(); - lastShow = new Date(); - active.add(m); - if(!attached){ - Ext.get(document).on("mousedown", onMouseDown); - attached = true; - } - if(m.parentMenu){ - m.getEl().setZIndex(parseInt(m.parentMenu.getEl().getStyle("z-index"), 10) + 3); - m.parentMenu.activeChild = m; - }else if(last && last.isVisible()){ - m.getEl().setZIndex(parseInt(last.getEl().getStyle("z-index"), 10) + 3); - } - } - - // private - function onBeforeHide(m){ - if(m.activeChild){ - m.activeChild.hide(); - } - if(m.autoHideTimer){ - clearTimeout(m.autoHideTimer); - delete m.autoHideTimer; - } - } - - // private - function onBeforeShow(m){ - var pm = m.parentMenu; - if(!pm && !m.allowOtherMenus){ - hideAll(); - }else if(pm && pm.activeChild){ - pm.activeChild.hide(); - } - } - - // private - function onMouseDown(e){ - if(lastShow.getElapsed() > 50 && active.length > 0 && !e.getTarget(".x-menu")){ - hideAll(); - } - } - - // private - function onBeforeCheck(mi, state){ - if(state){ - var g = groups[mi.group]; - for(var i = 0, l = g.length; i < l; i++){ - if(g[i] != mi){ - g[i].setChecked(false); - } - } - } - } - - return { - - - hideAll : function(){ - hideAll(); - }, - - // private - register : function(menu){ - if(!menus){ - init(); - } - menus[menu.id] = menu; - menu.on("beforehide", onBeforeHide); - menu.on("hide", onHide); - menu.on("beforeshow", onBeforeShow); - menu.on("show", onShow); - var g = menu.group; - if(g && menu.events["checkchange"]){ - if(!groups[g]){ - groups[g] = []; - } - groups[g].push(menu); - menu.on("checkchange", onCheck); - } - }, - - - get : function(menu){ - if(typeof menu == "string"){ // menu id - return menus[menu]; - }else if(menu.events){ // menu instance - return menu; - }else if(typeof menu.length == 'number'){ // array of menu items? - return new Ext.menu.Menu({items:menu}); - }else{ // otherwise, must be a config - return new Ext.menu.Menu(menu); - } - }, - - // private - unregister : function(menu){ - delete menus[menu.id]; - menu.un("beforehide", onBeforeHide); - menu.un("hide", onHide); - menu.un("beforeshow", onBeforeShow); - menu.un("show", onShow); - var g = menu.group; - if(g && menu.events["checkchange"]){ - groups[g].remove(menu); - menu.un("checkchange", onCheck); - } - }, - - // private - registerCheckable : function(menuItem){ - var g = menuItem.group; - if(g){ - if(!groups[g]){ - groups[g] = []; - } - groups[g].push(menuItem); - menuItem.on("beforecheckchange", onBeforeCheck); - } - }, - - // private - unregisterCheckable : function(menuItem){ - var g = menuItem.group; - if(g){ - groups[g].remove(menuItem); - menuItem.un("beforecheckchange", onBeforeCheck); - } - } - }; -}(); - - -Ext.menu.BaseItem = function(config){ - Ext.menu.BaseItem.superclass.constructor.call(this, config); - - this.addEvents({ - - click: true, - - activate : true, - - deactivate : true - }); - - if(this.handler){ - this.on("click", this.handler, this.scope, true); - } -}; - -Ext.extend(Ext.menu.BaseItem, Ext.Component, { - - - canActivate : false, - - activeClass : "x-menu-item-active", - - hideOnClick : true, - - hideDelay : 100, - - // private - ctype: "Ext.menu.BaseItem", - - // private - actionMode : "container", - - // private - render : function(container, parentMenu){ - this.parentMenu = parentMenu; - Ext.menu.BaseItem.superclass.render.call(this, container); - this.container.menuItemId = this.id; - }, - - // private - onRender : function(container, position){ - this.el = Ext.get(this.el); - container.dom.appendChild(this.el.dom); - }, - - // private - onClick : function(e){ - if(!this.disabled && this.fireEvent("click", this, e) !== false - && this.parentMenu.fireEvent("itemclick", this, e) !== false){ - this.handleClick(e); - }else{ - e.stopEvent(); - } - }, - - // private - activate : function(){ - if(this.disabled){ - return false; - } - var li = this.container; - li.addClass(this.activeClass); - this.region = li.getRegion().adjust(2, 2, -2, -2); - this.fireEvent("activate", this); - return true; - }, - - // private - deactivate : function(){ - this.container.removeClass(this.activeClass); - this.fireEvent("deactivate", this); - }, - - // private - shouldDeactivate : function(e){ - return !this.region || !this.region.contains(e.getPoint()); - }, - - // private - handleClick : function(e){ - if(this.hideOnClick){ - this.parentMenu.hide.defer(this.hideDelay, this.parentMenu, [true]); - } - }, - - // private - expandMenu : function(autoActivate){ - // do nothing - }, - - // private - hideMenu : function(){ - // do nothing - } -}); - -Ext.menu.TextItem = function(text){ - this.text = text; - Ext.menu.TextItem.superclass.constructor.call(this); -}; - -Ext.extend(Ext.menu.TextItem, Ext.menu.BaseItem, { - - hideOnClick : false, - - itemCls : "x-menu-text", - - // private - onRender : function(){ - var s = document.createElement("span"); - s.className = this.itemCls; - s.innerHTML = this.text; - this.el = s; - Ext.menu.TextItem.superclass.onRender.apply(this, arguments); - } -}); - -Ext.menu.Separator = function(config){ - Ext.menu.Separator.superclass.constructor.call(this, config); -}; - -Ext.extend(Ext.menu.Separator, Ext.menu.BaseItem, { - - itemCls : "x-menu-sep", - - hideOnClick : false, - - // private - onRender : function(li){ - var s = document.createElement("span"); - s.className = this.itemCls; - s.innerHTML = " "; - this.el = s; - li.addClass("x-menu-sep-li"); - Ext.menu.Separator.superclass.onRender.apply(this, arguments); - } -}); - -Ext.menu.Item = function(config){ - Ext.menu.Item.superclass.constructor.call(this, config); - if(this.menu){ - this.menu = Ext.menu.MenuMgr.get(this.menu); - } -}; -Ext.extend(Ext.menu.Item, Ext.menu.BaseItem, { - - - itemCls : "x-menu-item", - - canActivate : true, - - // private - ctype: "Ext.menu.Item", - - // private - onRender : function(container, position){ - var el = document.createElement("a"); - el.hideFocus = true; - el.unselectable = "on"; - el.href = this.href || "#"; - if(this.hrefTarget){ - el.target = this.hrefTarget; - } - el.className = this.itemCls + (this.menu ? " x-menu-item-arrow" : "") + (this.cls ? " " + this.cls : ""); - el.innerHTML = String.format( - '<img src="{0}" class="x-menu-item-icon {2}" />{1}', - this.icon || Ext.BLANK_IMAGE_URL, this.text, this.iconCls || ''); - this.el = el; - Ext.menu.Item.superclass.onRender.call(this, container, position); - }, - - - setText : function(text){ - this.text = text; - if(this.rendered){ - this.el.update(String.format( - '<img src="{0}" class="x-menu-item-icon {2}">{1}', - this.icon || Ext.BLANK_IMAGE_URL, this.text, this.iconCls || '')); - this.parentMenu.autoWidth(); - } - }, - - // private - handleClick : function(e){ - if(!this.href){ // if no link defined, stop the event automatically - e.stopEvent(); - } - Ext.menu.Item.superclass.handleClick.apply(this, arguments); - }, - - // private - activate : function(autoExpand){ - if(Ext.menu.Item.superclass.activate.apply(this, arguments)){ - this.focus(); - if(autoExpand){ - this.expandMenu(); - } - } - return true; - }, - - // private - shouldDeactivate : function(e){ - if(Ext.menu.Item.superclass.shouldDeactivate.call(this, e)){ - if(this.menu && this.menu.isVisible()){ - return !this.menu.getEl().getRegion().contains(e.getPoint()); - } - return true; - } - return false; - }, - - // private - deactivate : function(){ - Ext.menu.Item.superclass.deactivate.apply(this, arguments); - this.hideMenu(); - }, - - // private - expandMenu : function(autoActivate){ - if(!this.disabled && this.menu){ - if(!this.menu.isVisible()){ - this.menu.show(this.container, this.parentMenu.subMenuAlign || "tl-tr?", this.parentMenu); - } - if(autoActivate){ - this.menu.tryActivate(0, 1); - } - } - }, - - // private - hideMenu : function(){ - if(this.menu && this.menu.isVisible()){ - this.menu.hide(); - } - } -}); - -Ext.menu.CheckItem = function(config){ - Ext.menu.CheckItem.superclass.constructor.call(this, config); - this.addEvents({ - - "beforecheckchange" : true, - - "checkchange" : true - }); - if(this.checkHandler){ - this.on('checkchange', this.checkHandler, this.scope); - } -}; -Ext.extend(Ext.menu.CheckItem, Ext.menu.Item, { - - - itemCls : "x-menu-item x-menu-check-item", - - groupClass : "x-menu-group-item", - - - checked: false, - - // private - ctype: "Ext.menu.CheckItem", - - // private - onRender : function(c){ - Ext.menu.CheckItem.superclass.onRender.apply(this, arguments); - if(this.group){ - this.el.addClass(this.groupClass); - } - Ext.menu.MenuMgr.registerCheckable(this); - if(this.checked){ - this.checked = false; - this.setChecked(true, true); - } - }, - - // private - destroy : function(){ - if(this.rendered){ - Ext.menu.MenuMgr.unregisterCheckable(this); - } - Ext.menu.CheckItem.superclass.destroy.apply(this, arguments); - }, - - - setChecked : function(state, suppressEvent){ - if(this.checked != state && this.fireEvent("beforecheckchange", this, state) !== false){ - if(this.container){ - this.container[state ? "addClass" : "removeClass"]("x-menu-item-checked"); - } - this.checked = state; - if(suppressEvent !== true){ - this.fireEvent("checkchange", this, state); - } - } - }, - - // private - handleClick : function(e){ - if(!this.disabled && !(this.checked && this.group)){// disable unselect on radio item - this.setChecked(!this.checked); - } - Ext.menu.CheckItem.superclass.handleClick.apply(this, arguments); - } -}); - -Ext.menu.Adapter = function(component, config){ - Ext.menu.Adapter.superclass.constructor.call(this, config); - this.component = component; -}; -Ext.extend(Ext.menu.Adapter, Ext.menu.BaseItem, { - // private - canActivate : true, - - // private - onRender : function(container, position){ - this.component.render(container); - this.el = this.component.getEl(); - }, - - // private - activate : function(){ - if(this.disabled){ - return false; - } - this.component.focus(); - this.fireEvent("activate", this); - return true; - }, - - // private - deactivate : function(){ - this.fireEvent("deactivate", this); - }, - - // private - disable : function(){ - this.component.disable(); - Ext.menu.Adapter.superclass.disable.call(this); - }, - - // private - enable : function(){ - this.component.enable(); - Ext.menu.Adapter.superclass.enable.call(this); - } -}); - -Ext.menu.DateItem = function(config){ - Ext.menu.DateItem.superclass.constructor.call(this, new Ext.DatePicker(config), config); - - this.picker = this.component; - this.addEvents({select: true}); - - this.picker.on("render", function(picker){ - picker.getEl().swallowEvent("click"); - picker.container.addClass("x-menu-date-item"); - }); - - this.picker.on("select", this.onSelect, this); -}; - -Ext.extend(Ext.menu.DateItem, Ext.menu.Adapter, { - // private - onSelect : function(picker, date){ - this.fireEvent("select", this, date, picker); - Ext.menu.DateItem.superclass.handleClick.call(this); - } -}); - -Ext.menu.ColorItem = function(config){ - Ext.menu.ColorItem.superclass.constructor.call(this, new Ext.ColorPalette(config), config); - - this.palette = this.component; - this.relayEvents(this.palette, ["select"]); - if(this.selectHandler){ - this.on('select', this.selectHandler, this.scope); - } -}; -Ext.extend(Ext.menu.ColorItem, Ext.menu.Adapter); - -Ext.menu.DateMenu = function(config){ - Ext.menu.DateMenu.superclass.constructor.call(this, config); - this.plain = true; - var di = new Ext.menu.DateItem(config); - this.add(di); - - this.picker = di.picker; - - this.relayEvents(di, ["select"]); - - this.on('beforeshow', function(){ - if(this.picker){ - this.picker.hideMonthPicker(true); - } - }, this); -}; -Ext.extend(Ext.menu.DateMenu, Ext.menu.Menu, { - cls:'x-date-menu' -}); - -Ext.menu.ColorMenu = function(config){ - Ext.menu.ColorMenu.superclass.constructor.call(this, config); - this.plain = true; - var ci = new Ext.menu.ColorItem(config); - this.add(ci); - - this.palette = ci.palette; - - this.relayEvents(ci, ["select"]); -}; -Ext.extend(Ext.menu.ColorMenu, Ext.menu.Menu); - -Ext.form.Field = function(config){ - Ext.form.Field.superclass.constructor.call(this, config); -}; - -Ext.extend(Ext.form.Field, Ext.BoxComponent, { - - invalidClass : "x-form-invalid", - - invalidText : "The value in this field is invalid", - - focusClass : "x-form-focus", - - validationEvent : "keyup", - - validateOnBlur : true, - - validationDelay : 250, - - defaultAutoCreate : {tag: "input", type: "text", size: "20", autocomplete: "off"}, - - fieldClass: "x-form-field", - - msgTarget: 'qtip', - - msgFx : 'normal', - - - - - inputType : undefined, - - // private - isFormField : true, - - // private - hasFocus : false, - - - value : undefined, - - - initComponent : function(){ - Ext.form.Field.superclass.initComponent.call(this); - this.addEvents({ - - focus : true, - - blur : true, - - specialkey : true, - - change : true, - - invalid : true, - - valid : true - }); - }, - - - getName: function(){ - return this.rendered && this.el.dom.name ? this.el.dom.name : (this.hiddenName || ''); - }, - - - applyTo : function(target){ - this.allowDomMove = false; - this.el = Ext.get(target); - this.render(this.el.dom.parentNode); - return this; - }, - - // private - onRender : function(ct, position){ - Ext.form.Field.superclass.onRender.call(this, ct, position); - if(!this.el){ - var cfg = this.getAutoCreate(); - if(!cfg.name){ - cfg.name = this.name || this.id; - } - if(this.inputType){ - cfg.type = this.inputType; - } - if(this.tabIndex !== undefined){ - cfg.tabIndex = this.tabIndex; - } - this.el = ct.createChild(cfg, position); - } - var type = this.el.dom.type; - if(type){ - if(type == 'password'){ - type = 'text'; - } - this.el.addClass('x-form-'+type); - } - if(this.readOnly){ - this.el.dom.readOnly = true; - } - - this.el.addClass([this.fieldClass, this.cls]); - this.initValue(); - }, - - // private - initValue : function(){ - if(this.value !== undefined){ - this.setValue(this.value); - }else if(this.el.dom.value.length > 0){ - this.setValue(this.el.dom.value); - } - }, - - - isDirty : function() { - if(this.disabled) { - return false; - } - return String(this.getValue()) !== String(this.originalValue); - }, - - // private - afterRender : function(){ - Ext.form.Field.superclass.afterRender.call(this); - this.initEvents(); - }, - - // private - fireKey : function(e){ - if(e.isNavKeyPress()){ - this.fireEvent("specialkey", this, e); - } - }, - - - reset : function(){ - this.setValue(this.originalValue); - this.clearInvalid(); - }, - - // private - initEvents : function(){ - this.el.on(Ext.isIE ? "keydown" : "keypress", this.fireKey, this); - this.el.on("focus", this.onFocus, this); - this.el.on("blur", this.onBlur, this); - - // reference to original value for reset - this.originalValue = this.getValue(); - }, - - // private - onFocus : function(){ - if(!Ext.isOpera){ // don't touch in Opera - this.el.addClass(this.focusClass); - } - this.hasFocus = true; - this.startValue = this.getValue(); - this.fireEvent("focus", this); - }, - - // private - onBlur : function(){ - this.el.removeClass(this.focusClass); - this.hasFocus = false; - if(this.validationEvent !== false && this.validateOnBlur && this.validationEvent != "blur"){ - this.validate(); - } - var v = this.getValue(); - if(v != this.startValue){ - this.fireEvent('change', this, v, this.startValue); - } - this.fireEvent("blur", this); - }, - - - isValid : function(preventMark){ - if(this.disabled){ - return true; - } - var restore = this.preventMark; - this.preventMark = preventMark === true; - var v = this.validateValue(this.getRawValue()); - this.preventMark = restore; - return v; - }, - - - validate : function(){ - if(this.disabled || this.validateValue(this.getRawValue())){ - this.clearInvalid(); - return true; - } - return false; - }, - - // private - // Subclasses should provide the validation implementation by overriding this - validateValue : function(value){ - return true; - }, - - - markInvalid : function(msg){ - if(!this.rendered || this.preventMark){ // not rendered - return; - } - this.el.addClass(this.invalidClass); - msg = msg || this.invalidText; - switch(this.msgTarget){ - case 'qtip': - this.el.dom.qtip = msg; - this.el.dom.qclass = 'x-form-invalid-tip'; - break; - case 'title': - this.el.dom.title = msg; - break; - case 'under': - if(!this.errorEl){ - var elp = this.el.findParent('.x-form-element', 5, true); - this.errorEl = elp.createChild({cls:'x-form-invalid-msg'}); - this.errorEl.setWidth(elp.getWidth(true)-20); - } - this.errorEl.update(msg); - Ext.form.Field.msgFx[this.msgFx].show(this.errorEl, this); - break; - case 'side': - if(!this.errorIcon){ - var elp = this.el.findParent('.x-form-element', 5, true); - this.errorIcon = elp.createChild({cls:'x-form-invalid-icon'}); - } - this.alignErrorIcon(); - this.errorIcon.dom.qtip = msg; - this.errorIcon.dom.qclass = 'x-form-invalid-tip'; - this.errorIcon.show(); - break; - default: - var t = Ext.getDom(this.msgTarget); - t.innerHTML = msg; - t.style.display = this.msgDisplay; - break; - } - this.fireEvent('invalid', this, msg); - }, - - // private - alignErrorIcon : function(){ - this.errorIcon.alignTo(this.el, 'tl-tr', [2, 0]); - }, - - - clearInvalid : function(){ - if(!this.rendered || this.preventMark){ // not rendered - return; - } - this.el.removeClass(this.invalidClass); - switch(this.msgTarget){ - case 'qtip': - this.el.dom.qtip = ''; - break; - case 'title': - this.el.dom.title = ''; - break; - case 'under': - if(this.errorEl){ - Ext.form.Field.msgFx[this.msgFx].hide(this.errorEl, this); - } - break; - case 'side': - if(this.errorIcon){ - this.errorIcon.dom.qtip = ''; - this.errorIcon.hide(); - } - break; - default: - var t = Ext.getDom(this.msgTarget); - t.innerHTML = ''; - t.style.display = 'none'; - break; - } - this.fireEvent('valid', this); - }, - - - getRawValue : function(){ - return this.el.getValue(); - }, - - - getValue : function(){ - var v = this.el.getValue(); - if(v == this.emptyText || v === undefined){ - v = ''; - } - return v; - }, - - - setRawValue : function(v){ - return this.el.dom.value = (v === null || v === undefined ? '' : v); - }, - - - setValue : function(v){ - this.value = v; - if(this.rendered){ - this.el.dom.value = (v === null || v === undefined ? '' : v); - this.validate(); - } - }, - - adjustSize : function(w, h){ - var s = Ext.form.Field.superclass.adjustSize.call(this, w, h); - s.width = this.adjustWidth(this.el.dom.tagName, s.width); - return s; - }, - - adjustWidth : function(tag, w){ - tag = tag.toLowerCase(); - if(typeof w == 'number' && Ext.isStrict && !Ext.isSafari){ - if(Ext.isIE && (tag == 'input' || tag == 'textarea')){ - if(tag == 'input'){ - return w + 2; - } - if(tag = 'textarea'){ - return w-2; - } - }else if(Ext.isGecko && tag == 'textarea'){ - return w-6; - }else if(Ext.isOpera){ - if(tag == 'input'){ - return w + 2; - } - if(tag = 'textarea'){ - return w-2; - } - } - } - return w; - } -}); - - -// anything other than normal should be considered experimental -Ext.form.Field.msgFx = { - normal : { - show: function(msgEl, f){ - msgEl.setDisplayed('block'); - }, - - hide : function(msgEl, f){ - msgEl.setDisplayed(false).update(''); - } - }, - - slide : { - show: function(msgEl, f){ - msgEl.slideIn('t', {stopFx:true}); - }, - - hide : function(msgEl, f){ - msgEl.slideOut('t', {stopFx:true,useDisplay:true}); - } - }, - - slideRight : { - show: function(msgEl, f){ - msgEl.fixDisplay(); - msgEl.alignTo(f.el, 'tl-tr'); - msgEl.slideIn('l', {stopFx:true}); - }, - - hide : function(msgEl, f){ - msgEl.slideOut('l', {stopFx:true,useDisplay:true}); - } - } -}; - - -Ext.form.TextField = function(config){ - Ext.form.TextField.superclass.constructor.call(this, config); - this.addEvents({ - - autosize : true - }); -}; - -Ext.extend(Ext.form.TextField, Ext.form.Field, { - - grow : false, - - growMin : 30, - - growMax : 800, - - vtype : null, - - maskRe : null, - - disableKeyFilter : false, - - allowBlank : true, - - minLength : 0, - - maxLength : Number.MAX_VALUE, - - minLengthText : "The minimum length for this field is {0}", - - maxLengthText : "The maximum length for this field is {0}", - - selectOnFocus : false, - - blankText : "This field is required", - - validator : null, - - regex : null, - - regexText : "", - - emptyText : null, - - emptyClass : 'x-form-empty-field', - - // private - initEvents : function(){ - Ext.form.TextField.superclass.initEvents.call(this); - if(this.validationEvent == 'keyup'){ - this.validationTask = new Ext.util.DelayedTask(this.validate, this); - this.el.on('keyup', this.filterValidation, this); - } - else if(this.validationEvent !== false){ - this.el.on(this.validationEvent, this.validate, this, {buffer: this.validationDelay}); - } - if(this.selectOnFocus || this.emptyText){ - this.on("focus", this.preFocus, this); - if(this.emptyText){ - this.on('blur', this.postBlur, this); - this.applyEmptyText(); - } - } - if(this.maskRe || (this.vtype && this.disableKeyFilter !== true && (this.maskRe = Ext.form.VTypes[this.vtype+'Mask']))){ - this.el.on("keypress", this.filterKeys, this); - } - if(this.grow){ - this.el.on("keyup", this.onKeyUp, this, {buffer:50}); - this.el.on("click", this.autoSize, this); - } - }, - - filterValidation : function(e){ - if(!e.isNavKeyPress()){ - this.validationTask.delay(this.validationDelay); - } - }, - - // private - onKeyUp : function(e){ - if(!e.isNavKeyPress()){ - this.autoSize(); - } - }, - - - reset : function(){ - Ext.form.TextField.superclass.reset.call(this); - this.applyEmptyText(); - }, - - applyEmptyText : function(){ - if(this.rendered && this.emptyText && this.getRawValue().length < 1){ - this.setRawValue(this.emptyText); - this.el.addClass(this.emptyClass); - } - }, - - // private - preFocus : function(){ - if(this.emptyText){ - if(this.getRawValue() == this.emptyText){ - this.setRawValue(''); - } - this.el.removeClass(this.emptyClass); - } - if(this.selectOnFocus){ - this.el.dom.select(); - } - }, - - // private - postBlur : function(){ - this.applyEmptyText(); - }, - - // private - filterKeys : function(e){ - var k = e.getKey(); - if(!Ext.isIE && (e.isNavKeyPress() || k == e.BACKSPACE || (k == e.DELETE && e.button == -1))){ - return; - } - if(Ext.isIE && (k == e.BACKSPACE || k == e.DELETE || e.isNavKeyPress() || k == e.HOME || k == e.END)){ - return; - } - var c = e.getCharCode(); - if(!this.maskRe.test(String.fromCharCode(c) || '')){ - e.stopEvent(); - } - }, - - setValue : function(v){ - if(this.emptyText && v !== undefined && v !== null && v !== ''){ - this.el.removeClass(this.emptyClass); - } - Ext.form.TextField.superclass.setValue.apply(this, arguments); - }, - - - validateValue : function(value){ - if(value.length < 1 || value === this.emptyText){ // if it's blank - if(this.allowBlank){ - this.clearInvalid(); - return true; - }else{ - this.markInvalid(this.blankText); - return false; - } - } - if(value.length < this.minLength){ - this.markInvalid(String.format(this.minLengthText, this.minLength)); - return false; - } - if(value.length > this.maxLength){ - this.markInvalid(String.format(this.maxLengthText, this.maxLength)); - return false; - } - if(this.vtype){ - var vt = Ext.form.VTypes; - if(!vt[this.vtype](value, this)){ - this.markInvalid(this.vtypeText || vt[this.vtype +'Text']); - return false; - } - } - if(typeof this.validator == "function"){ - var msg = this.validator(value); - if(msg !== true){ - this.markInvalid(msg); - return false; - } - } - if(this.regex && !this.regex.test(value)){ - this.markInvalid(this.regexText); - return false; - } - return true; - }, - - - selectText : function(start, end){ - var v = this.getRawValue(); - if(v.length > 0){ - start = start === undefined ? 0 : start; - end = end === undefined ? v.length : end; - var d = this.el.dom; - if(d.setSelectionRange){ - d.setSelectionRange(start, end); - }else if(d.createTextRange){ - var range = d.createTextRange(); - range.moveStart("character", start); - range.moveEnd("character", v.length-end); - range.select(); - } - } - }, - - - autoSize : function(){ - if(!this.grow || !this.rendered){ - return; - } - if(!this.metrics){ - this.metrics = Ext.util.TextMetrics.createInstance(this.el); - } - var el = this.el; - var v = el.dom.value + " "; - var w = Math.min(this.growMax, Math.max(this.metrics.getWidth(v) + 10, this.growMin)); - this.el.setWidth(w); - this.fireEvent("autosize", this, w); - } -}); - -Ext.form.TriggerField = function(config){ - Ext.form.TriggerField.superclass.constructor.call(this, config); - this.mimicing = false; - this.on('disable', this.disableWrapper, this); - this.on('enable', this.enableWrapper, this); -}; - -Ext.extend(Ext.form.TriggerField, Ext.form.TextField, { - - // private - defaultAutoCreate : {tag: "input", type: "text", size: "16", autocomplete: "off"}, - - hideTrigger:false, - - - - - - - autoSize: Ext.emptyFn, - - monitorTab : true, - - deferHeight : true, - - // private - onResize : function(w, h){ - Ext.form.TriggerField.superclass.onResize.apply(this, arguments); - if(typeof w == 'number'){ - this.el.setWidth(this.adjustWidth('input', w - this.trigger.getWidth())); - } - }, - - adjustSize : Ext.BoxComponent.prototype.adjustSize, - - getResizeEl : function(){ - return this.wrap; - }, - - getPositionEl : function(){ - return this.wrap; - }, - - // private - alignErrorIcon : function(){ - this.errorIcon.alignTo(this.wrap, 'tl-tr', [2, 0]); - }, - - // private - onRender : function(ct, position){ - Ext.form.TriggerField.superclass.onRender.call(this, ct, position); - this.wrap = this.el.wrap({cls: "x-form-field-wrap"}); - this.trigger = this.wrap.createChild(this.triggerConfig || - {tag: "img", src: Ext.BLANK_IMAGE_URL, cls: "x-form-trigger " + this.triggerClass}); - if(this.hideTrigger){ - this.trigger.setDisplayed(false); - } - this.initTrigger(); - if(!this.width){ - this.wrap.setWidth(this.el.getWidth()+this.trigger.getWidth()); - } - }, - - initTrigger : function(){ - this.trigger.on("click", this.onTriggerClick, this, {preventDefault:true}); - this.trigger.addClassOnOver('x-form-trigger-over'); - this.trigger.addClassOnClick('x-form-trigger-click'); - }, - - onDestroy : function(){ - if(this.trigger){ - this.trigger.removeAllListeners(); - this.trigger.remove(); - } - if(this.wrap){ - this.wrap.remove(); - } - Ext.form.TriggerField.superclass.onDestroy.call(this); - }, - - // private - onFocus : function(){ - Ext.form.TriggerField.superclass.onFocus.call(this); - if(!this.mimicing){ - this.wrap.addClass('x-trigger-wrap-focus'); - this.mimicing = true; - Ext.get(Ext.isIE ? document.body : document).on("mousedown", this.mimicBlur, this); - if(this.monitorTab){ - this.el.on("keydown", this.checkTab, this); - } - } - }, - - // private - checkTab : function(e){ - if(e.getKey() == e.TAB){ - this.triggerBlur(); - } - }, - - // private - onBlur : function(){ - // do nothing - }, - - // private - mimicBlur : function(e, t){ - if(!this.wrap.contains(t) && this.validateBlur()){ - this.triggerBlur(); - } - }, - - // private - triggerBlur : function(){ - this.mimicing = false; - Ext.get(Ext.isIE ? document.body : document).un("mousedown", this.mimicBlur); - if(this.monitorTab){ - this.el.un("keydown", this.checkTab, this); - } - this.beforeBlur(); - this.wrap.removeClass('x-trigger-wrap-focus'); - Ext.form.TriggerField.superclass.onBlur.call(this); - }, - - beforeBlur : Ext.emptyFn, - - // private - // This should be overridden by any subclass that needs to check whether or not the field can be blurred. - validateBlur : function(e, t){ - return true; - }, - - // private - disableWrapper : function(){ - if(this.wrap){ - this.wrap.addClass('x-item-disabled'); - } - }, - - // private - enableWrapper : function(){ - if(this.wrap){ - this.wrap.removeClass('x-item-disabled'); - } - }, - - // private - onShow : function(){ - if(this.wrap){ - this.wrap.dom.style.display = ''; - this.wrap.dom.style.visibility = 'visible'; - } - }, - - // private - onHide : function(){ - this.wrap.dom.style.display = 'none'; - }, - - - onTriggerClick : Ext.emptyFn -}); - -Ext.form.TwinTriggerField = Ext.extend(Ext.form.TriggerField, { - initComponent : function(){ - Ext.form.TwinTriggerField.superclass.initComponent.call(this); - - this.triggerConfig = { - tag:'span', cls:'x-form-twin-triggers', cn:[ - {tag: "img", src: Ext.BLANK_IMAGE_URL, cls: "x-form-trigger " + this.trigger1Class}, - {tag: "img", src: Ext.BLANK_IMAGE_URL, cls: "x-form-trigger " + this.trigger2Class} - ]}; - }, - - getTrigger : function(index){ - return this.triggers[index]; - }, - - initTrigger : function(){ - var ts = this.trigger.select('.x-form-trigger', true); - this.wrap.setStyle('overflow', 'hidden'); - var triggerField = this; - ts.each(function(t, all, index){ - t.hide = function(){ - var w = triggerField.wrap.getWidth(); - this.dom.style.display = 'none'; - triggerField.el.setWidth(w-triggerField.trigger.getWidth()); - }; - t.show = function(){ - var w = triggerField.wrap.getWidth(); - this.dom.style.display = ''; - triggerField.el.setWidth(w-triggerField.trigger.getWidth()); - }; - var triggerIndex = 'Trigger'+(index+1); - - if(this['hide'+triggerIndex]){ - t.dom.style.display = 'none'; - } - t.on("click", this['on'+triggerIndex+'Click'], this, {preventDefault:true}); - t.addClassOnOver('x-form-trigger-over'); - t.addClassOnClick('x-form-trigger-click'); - }, this); - this.triggers = ts.elements; - }, - - onTrigger1Click : Ext.emptyFn, - onTrigger2Click : Ext.emptyFn -}); - -Ext.form.TextArea = function(config){ - Ext.form.TextArea.superclass.constructor.call(this, config); - // these are provided exchanges for backwards compat - // minHeight/maxHeight were replaced by growMin/growMax to be - // compatible with TextField growing config values - if(this.minHeight !== undefined){ - this.growMin = this.minHeight; - } - if(this.maxHeight !== undefined){ - this.growMax = this.maxHeight; - } -}; - -Ext.extend(Ext.form.TextArea, Ext.form.TextField, { - - growMin : 60, - - growMax: 1000, - - preventScrollbars: false, - - // private - onRender : function(ct, position){ - if(!this.el){ - this.defaultAutoCreate = { - tag: "textarea", - style:"width:300px;height:60px;", - autocomplete: "off" - }; - } - Ext.form.TextArea.superclass.onRender.call(this, ct, position); - if(this.grow){ - this.textSizeEl = Ext.DomHelper.append(document.body, { - tag: "pre", cls: "x-form-grow-sizer" - }); - if(this.preventScrollbars){ - this.el.setStyle("overflow", "hidden"); - } - this.el.setHeight(this.growMin); - } - }, - - onDestroy : function(){ - if(this.textSizeEl){ - this.textSizeEl.remove(); - } - Ext.form.TextArea.superclass.onDestroy.call(this); - }, - - // private - onKeyUp : function(e){ - if(!e.isNavKeyPress() || e.getKey() == e.ENTER){ - this.autoSize(); - } - }, - - - autoSize : function(){ - if(!this.grow || !this.textSizeEl){ - return; - } - var el = this.el; - var v = el.dom.value; - var ts = this.textSizeEl; - Ext.fly(ts).setWidth(this.el.getWidth()); - if(v.length < 1){ - v = "  "; - }else{ - if(Ext.isIE){ - v = v.replace(/\n/g, '<p> </p>'); - } - v += " \n "; - } - ts.innerHTML = v; - var h = Math.min(this.growMax, Math.max(ts.offsetHeight, this.growMin)); - if(h != this.lastHeight){ - this.lastHeight = h; - this.el.setHeight(h); - this.fireEvent("autosize", this, h); - } - }, - - // private - setValue : function(v){ - Ext.form.TextArea.superclass.setValue.call(this, v); - this.autoSize(); - } -}); - -Ext.form.NumberField = function(config){ - Ext.form.NumberField.superclass.constructor.call(this, config); -}; - -Ext.extend(Ext.form.NumberField, Ext.form.TextField, { - - fieldClass: "x-form-field x-form-num-field", - - allowDecimals : true, - - decimalSeparator : ".", - - decimalPrecision : 2, - - allowNegative : true, - - minValue : Number.NEGATIVE_INFINITY, - - maxValue : Number.MAX_VALUE, - - minText : "The minimum value for this field is {0}", - - maxText : "The maximum value for this field is {0}", - - nanText : "{0} is not a valid number", - - // private - initEvents : function(){ - Ext.form.NumberField.superclass.initEvents.call(this); - var allowed = "0123456789"; - if(this.allowDecimals){ - allowed += this.decimalSeparator; - } - if(this.allowNegative){ - allowed += "-"; - } - var keyPress = function(e){ - var k = e.getKey(); - if(!Ext.isIE && (e.isNavKeyPress() || k == e.BACKSPACE || (k == e.DELETE && e.button == -1))){ - return; - } - var c = e.getCharCode(); - if(allowed.indexOf(String.fromCharCode(c)) === -1){ - e.stopEvent(); - } - }; - this.el.on("keypress", keyPress, this); - }, - - // private - validateValue : function(value){ - if(!Ext.form.NumberField.superclass.validateValue.call(this, value)){ - return false; - } - if(value.length < 1){ // if it's blank and textfield didn't flag it then it's valid - return true; - } - value = String(value).replace(this.decimalSeparator, "."); - if(isNaN(value)){ - this.markInvalid(String.format(this.nanText, value)); - return false; - } - var num = this.parseValue(value); - if(num < this.minValue){ - this.markInvalid(String.format(this.minText, this.minValue)); - return false; - } - if(num > this.maxValue){ - this.markInvalid(String.format(this.maxText, this.maxValue)); - return false; - } - return true; - }, - - // private - parseValue : function(value){ - return parseFloat(String(value).replace(this.decimalSeparator, ".")); - }, - - // private - fixPrecision : function(value){ - if(!this.allowDecimals || this.decimalPrecision == -1 || isNaN(value) || value == 0 || !value){ - return value; - } - // this should work but doesn't due to precision error in JS - // var scale = Math.pow(10, this.decimalPrecision); - // var fixed = this.decimalPrecisionFcn(value * scale); - // return fixed / scale; - // - // so here's our workaround: - var scale = Math.pow(10, this.decimalPrecision+1); - var fixed = this.decimalPrecisionFcn(value * scale); - fixed = this.decimalPrecisionFcn(fixed/10); - return fixed / (scale/10); - }, - - // private - decimalPrecisionFcn : function(v){ - return Math.floor(v); - } -}); - -Ext.form.DateField = function(config){ - Ext.form.DateField.superclass.constructor.call(this, config); - if(typeof this.minValue == "string") this.minValue = this.parseDate(this.minValue); - if(typeof this.maxValue == "string") this.maxValue = this.parseDate(this.maxValue); - this.ddMatch = null; - if(this.disabledDates){ - var dd = this.disabledDates; - var re = "(?:"; - for(var i = 0; i < dd.length; i++){ - re += dd[i]; - if(i != dd.length-1) re += "|"; - } - this.ddMatch = new RegExp(re + ")"); - } -}; - -Ext.extend(Ext.form.DateField, Ext.form.TriggerField, { - - format : "m/d/y", - - altFormats : "m/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d", - - disabledDays : null, - - disabledDaysText : "Disabled", - - disabledDates : null, - - disabledDatesText : "Disabled", - - minValue : null, - - maxValue : null, - - minText : "The date in this field must be after {0}", - - maxText : "The date in this field must be before {0}", - - invalidText : "{0} is not a valid date - it must be in the format {1}", - - triggerClass : 'x-form-date-trigger', - - - // private - defaultAutoCreate : {tag: "input", type: "text", size: "10", autocomplete: "off"}, - - // private - validateValue : function(value){ - value = this.formatDate(value); - if(!Ext.form.DateField.superclass.validateValue.call(this, value)){ - return false; - } - if(value.length < 1){ // if it's blank and textfield didn't flag it then it's valid - return true; - } - var svalue = value; - value = this.parseDate(value); - if(!value){ - this.markInvalid(String.format(this.invalidText, svalue, this.format)); - return false; - } - var time = value.getTime(); - if(this.minValue && time < this.minValue.getTime()){ - this.markInvalid(String.format(this.minText, this.formatDate(this.minValue))); - return false; - } - if(this.maxValue && time > this.maxValue.getTime()){ - this.markInvalid(String.format(this.maxText, this.formatDate(this.maxValue))); - return false; - } - if(this.disabledDays){ - var day = value.getDay(); - for(var i = 0; i < this.disabledDays.length; i++) { - if(day === this.disabledDays[i]){ - this.markInvalid(this.disabledDaysText); - return false; - } - } - } - var fvalue = this.formatDate(value); - if(this.ddMatch && this.ddMatch.test(fvalue)){ - this.markInvalid(String.format(this.disabledDatesText, fvalue)); - return false; - } - return true; - }, - - // private - // Provides logic to override the default TriggerField.validateBlur which just returns true - validateBlur : function(){ - return !this.menu || !this.menu.isVisible(); - }, - - - getValue : function(){ - return this.parseDate(Ext.form.DateField.superclass.getValue.call(this)) || ""; - }, - - - setValue : function(date){ - Ext.form.DateField.superclass.setValue.call(this, this.formatDate(this.parseDate(date))); - }, - - // private - parseDate : function(value){ - if(!value || value instanceof Date){ - return value; - } - var v = Date.parseDate(value, this.format); - if(!v && this.altFormats){ - if(!this.altFormatsArray){ - this.altFormatsArray = this.altFormats.split("|"); - } - for(var i = 0, len = this.altFormatsArray.length; i < len && !v; i++){ - v = Date.parseDate(value, this.altFormatsArray[i]); - } - } - return v; - }, - - // private - formatDate : function(date){ - return (!date || !(date instanceof Date)) ? - date : date.dateFormat(this.format); - }, - - // private - menuListeners : { - select: function(m, d){ - this.setValue(d); - }, - show : function(){ // retain focus styling - this.onFocus(); - }, - hide : function(){ - this.focus.defer(10, this); - var ml = this.menuListeners; - this.menu.un("select", ml.select, this); - this.menu.un("show", ml.show, this); - this.menu.un("hide", ml.hide, this); - } - }, - - // private - // Implements the default empty TriggerField.onTriggerClick function to display the DatePicker - onTriggerClick : function(){ - if(this.disabled){ - return; - } - if(this.menu == null){ - this.menu = new Ext.menu.DateMenu(); - } - Ext.apply(this.menu.picker, { - minDate : this.minValue, - maxDate : this.maxValue, - disabledDatesRE : this.ddMatch, - disabledDatesText : this.disabledDatesText, - disabledDays : this.disabledDays, - disabledDaysText : this.disabledDaysText, - format : this.format, - minText : String.format(this.minText, this.formatDate(this.minValue)), - maxText : String.format(this.maxText, this.formatDate(this.maxValue)) - }); - this.menu.on(Ext.apply({}, this.menuListeners, { - scope:this - })); - this.menu.picker.setValue(this.getValue() || new Date()); - this.menu.show(this.el, "tl-bl?"); - }, - - beforeBlur : function(){ - var v = this.parseDate(this.getRawValue()); - if(v){ - this.setValue(v); - } - } -}); - -Ext.form.ComboBox = function(config){ - Ext.form.ComboBox.superclass.constructor.call(this, config); - this.addEvents({ - - 'expand' : true, - - 'collapse' : true, - - 'beforeselect' : true, - - 'select' : true, - - 'beforequery': true - }); - if(this.transform){ - var s = Ext.getDom(this.transform); - if(!this.hiddenName){ - this.hiddenName = s.name; - } - if(!this.store){ - this.mode = 'local'; - var d = [], opts = s.options; - for(var i = 0, len = opts.length;i < len; i++){ - var o = opts[i]; - var value = (Ext.isIE ? o.getAttributeNode('value').specified : o.hasAttribute('value')) ? o.value : o.text; - if(o.selected) { - this.value = value; - } - d.push([value, o.text]); - } - this.store = new Ext.data.SimpleStore({ - 'id': 0, - fields: ['value', 'text'], - data : d - }); - this.valueField = 'value'; - this.displayField = 'text'; - } - s.name = Ext.id(); // wipe out the name in case somewhere else they have a reference - if(!this.lazyRender){ - this.target = true; - this.el = Ext.DomHelper.insertBefore(s, this.autoCreate || this.defaultAutoCreate); - s.parentNode.removeChild(s); // remove it - this.render(this.el.parentNode); - }else{ - s.parentNode.removeChild(s); // remove it - } - - } - this.selectedIndex = -1; - if(this.mode == 'local'){ - if(config.queryDelay === undefined){ - this.queryDelay = 10; - } - if(config.minChars === undefined){ - this.minChars = 0; - } - } -}; - -Ext.extend(Ext.form.ComboBox, Ext.form.TriggerField, { - - - - - // private - defaultAutoCreate : {tag: "input", type: "text", size: "24", autocomplete: "off"}, - - listWidth: undefined, - - displayField: undefined, - - valueField: undefined, - - hiddenName: undefined, - - listClass: '', - - selectedClass: 'x-combo-selected', - - triggerClass : 'x-form-arrow-trigger', - - shadow:'sides', - - listAlign: 'tl-bl?', - - maxHeight: 300, - - triggerAction: 'query', - - minChars : 4, - - typeAhead: false, - - queryDelay: 500, - - pageSize: 0, - - selectOnFocus:false, - - queryParam: 'query', - - loadingText: 'Loading...', - - resizable: false, - - handleHeight : 8, - - editable: true, - - allQuery: '', - - mode: 'remote', - - minListWidth : 70, - - forceSelection:false, - - typeAheadDelay : 250, - - valueNotFoundText : undefined, - - // private - onRender : function(ct, position){ - Ext.form.ComboBox.superclass.onRender.call(this, ct, position); - if(this.hiddenName){ - this.hiddenField = this.el.insertSibling({tag:'input', type:'hidden', name: this.hiddenName, id: this.hiddenName}, - 'before', true); - this.hiddenField.value = - this.hiddenValue !== undefined ? this.hiddenValue : - this.value !== undefined ? this.value : ''; - - // prevent input submission - this.el.dom.removeAttribute('name'); - } - if(Ext.isGecko){ - this.el.dom.setAttribute('autocomplete', 'off'); - } - - var cls = 'x-combo-list'; - - this.list = new Ext.Layer({ - shadow: this.shadow, cls: [cls, this.listClass].join(' '), constrain:false - }); - - var lw = this.listWidth || Math.max(this.wrap.getWidth(), this.minListWidth); - this.list.setWidth(lw); - this.list.swallowEvent('mousewheel'); - this.assetHeight = 0; - - if(this.title){ - this.header = this.list.createChild({cls:cls+'-hd', html: this.title}); - this.assetHeight += this.header.getHeight(); - } - - this.innerList = this.list.createChild({cls:cls+'-inner'}); - this.innerList.on('mouseover', this.onViewOver, this); - this.innerList.on('mousemove', this.onViewMove, this); - this.innerList.setWidth(lw - this.list.getFrameWidth('lr')) - - if(this.pageSize){ - this.footer = this.list.createChild({cls:cls+'-ft'}); - this.pageTb = new Ext.PagingToolbar(this.footer, this.store, - {pageSize: this.pageSize}); - this.assetHeight += this.footer.getHeight(); - } - - if(!this.tpl){ - this.tpl = '<div class="'+cls+'-item">{' + this.displayField + '}</div>'; - } - - this.view = new Ext.View(this.innerList, this.tpl, { - singleSelect:true, store: this.store, selectedClass: this.selectedClass - }); - - this.view.on('click', this.onViewClick, this); - - this.store.on('beforeload', this.onBeforeLoad, this); - this.store.on('load', this.onLoad, this); - this.store.on('loadexception', this.collapse, this); - - if(this.resizable){ - this.resizer = new Ext.Resizable(this.list, { - pinned:true, handles:'se' - }); - this.resizer.on('resize', function(r, w, h){ - this.maxHeight = h-this.handleHeight-this.list.getFrameWidth('tb')-this.assetHeight; - this.listWidth = w; - this.restrictHeight(); - }, this); - this[this.pageSize?'footer':'innerList'].setStyle('margin-bottom', this.handleHeight+'px'); - } - if(!this.editable){ - this.editable = true; - this.setEditable(false); - } - }, - - // private - initEvents : function(){ - Ext.form.ComboBox.superclass.initEvents.call(this); - - this.keyNav = new Ext.KeyNav(this.el, { - "up" : function(e){ - this.inKeyMode = true; - this.selectPrev(); - }, - - "down" : function(e){ - if(!this.isExpanded()){ - this.onTriggerClick(); - }else{ - this.inKeyMode = true; - this.selectNext(); - } - }, - - "enter" : function(e){ - this.onViewClick(); - //return true; - }, - - "esc" : function(e){ - this.collapse(); - }, - - "tab" : function(e){ - this.onViewClick(false); - return true; - }, - - scope : this, - - doRelay : function(foo, bar, hname){ - if(hname == 'down' || this.scope.isExpanded()){ - return Ext.KeyNav.prototype.doRelay.apply(this, arguments); - } - return true; - } - }); - this.queryDelay = Math.max(this.queryDelay || 10, - this.mode == 'local' ? 10 : 250); - this.dqTask = new Ext.util.DelayedTask(this.initQuery, this); - if(this.typeAhead){ - this.taTask = new Ext.util.DelayedTask(this.onTypeAhead, this); - } - if(this.editable !== false){ - this.el.on("keyup", this.onKeyUp, this); - } - if(this.forceSelection){ - this.on('blur', this.doForce, this); - } - }, - - onDestroy : function(){ - if(this.view){ - this.view.setStore(null); - this.view.el.removeAllListeners(); - this.view.el.remove(); - this.view.purgeListeners(); - } - if(this.list){ - this.list.destroy(); - } - if(this.store){ - this.store.un('beforeload', this.onBeforeLoad, this); - this.store.un('load', this.onLoad, this); - this.store.un('loadexception', this.collapse, this); - } - Ext.form.ComboBox.superclass.onDestroy.call(this); - }, - - // private - fireKey : function(e){ - if(e.isNavKeyPress() && !this.list.isVisible()){ - this.fireEvent("specialkey", this, e); - } - }, - - // private - onResize: function(w, h){ - Ext.form.ComboBox.superclass.onResize.apply(this, arguments); - if(this.list && this.listWidth === undefined){ - var lw = Math.max(w, this.minListWidth); - this.list.setWidth(lw); - this.innerList.setWidth(lw - this.list.getFrameWidth('lr')) - } - }, - - - setEditable : function(value){ - if(value == this.editable){ - return; - } - this.editable = value; - if(!value){ - this.el.dom.setAttribute('readOnly', true); - this.el.on('mousedown', this.onTriggerClick, this); - this.el.addClass('x-combo-noedit'); - }else{ - this.el.dom.setAttribute('readOnly', false); - this.el.un('mousedown', this.onTriggerClick, this); - this.el.removeClass('x-combo-noedit'); - } - }, - - // private - onBeforeLoad : function(){ - if(!this.hasFocus){ - return; - } - this.innerList.update(this.loadingText ? - '<div class="loading-indicator">'+this.loadingText+'</div>' : ''); - this.restrictHeight(); - this.selectedIndex = -1; - }, - - // private - onLoad : function(){ - if(!this.hasFocus){ - return; - } - if(this.store.getCount() > 0){ - this.expand(); - this.restrictHeight(); - if(this.lastQuery == this.allQuery){ - if(this.editable){ - this.el.dom.select(); - } - if(!this.selectByValue(this.value, true)){ - this.select(0, true); - } - }else{ - this.selectNext(); - if(this.typeAhead && this.lastKey != Ext.EventObject.BACKSPACE && this.lastKey != Ext.EventObject.DELETE){ - this.taTask.delay(this.typeAheadDelay); - } - } - }else{ - this.onEmptyResults(); - } - //this.el.focus(); - }, - - // private - onTypeAhead : function(){ - if(this.store.getCount() > 0){ - var r = this.store.getAt(0); - var newValue = r.data[this.displayField]; - var len = newValue.length; - var selStart = this.getRawValue().length; - if(selStart != len){ - this.setRawValue(newValue); - this.selectText(selStart, newValue.length); - } - } - }, - - // private - onSelect : function(record, index){ - if(this.fireEvent('beforeselect', this, record, index) !== false){ - this.setValue(record.data[this.valueField || this.displayField]); - this.collapse(); - this.fireEvent('select', this, record, index); - } - }, - - - getValue : function(){ - if(this.valueField){ - return typeof this.value != 'undefined' ? this.value : ''; - }else{ - return Ext.form.ComboBox.superclass.getValue.call(this); - } - }, - - - clearValue : function(){ - if(this.hiddenField){ - this.hiddenField.value = ''; - } - this.setRawValue(''); - this.lastSelectionText = ''; - }, - - - setValue : function(v){ - var text = v; - if(this.valueField){ - var r = this.findRecord(this.valueField, v); - if(r){ - text = r.data[this.displayField]; - }else if(this.valueNotFoundText !== undefined){ - text = this.valueNotFoundText; - } - } - this.lastSelectionText = text; - if(this.hiddenField){ - this.hiddenField.value = v; - } - Ext.form.ComboBox.superclass.setValue.call(this, text); - this.value = v; - }, - - // private - findRecord : function(prop, value){ - var record; - if(this.store.getCount() > 0){ - this.store.each(function(r){ - if(r.data[prop] == value){ - record = r; - return false; - } - }); - } - return record; - }, - - // private - onViewMove : function(e, t){ - this.inKeyMode = false; - }, - - // private - onViewOver : function(e, t){ - if(this.inKeyMode){ // prevent key nav and mouse over conflicts - return; - } - var item = this.view.findItemFromChild(t); - if(item){ - var index = this.view.indexOf(item); - this.select(index, false); - } - }, - - // private - onViewClick : function(doFocus){ - var index = this.view.getSelectedIndexes()[0]; - var r = this.store.getAt(index); - if(r){ - this.onSelect(r, index); - } - if(doFocus !== false){ - this.el.focus(); - } - }, - - // private - restrictHeight : function(){ - this.innerList.dom.style.height = ''; - var inner = this.innerList.dom; - var h = Math.max(inner.clientHeight, inner.offsetHeight, inner.scrollHeight); - this.innerList.setHeight(h < this.maxHeight ? 'auto' : this.maxHeight); - this.list.beginUpdate(); - this.list.setHeight(this.innerList.getHeight()+this.list.getFrameWidth('tb')+(this.resizable?this.handleHeight:0)+this.assetHeight); - this.list.alignTo(this.el, this.listAlign); - this.list.endUpdate(); - }, - - // private - onEmptyResults : function(){ - this.collapse(); - }, - - - isExpanded : function(){ - return this.list.isVisible(); - }, - - - selectByValue : function(v, scrollIntoView){ - if(v !== undefined && v !== null){ - var r = this.findRecord(this.valueField || this.displayField, v); - if(r){ - this.select(this.store.indexOf(r), scrollIntoView); - return true; - } - } - return false; - }, - - - select : function(index, scrollIntoView){ - this.selectedIndex = index; - this.view.select(index); - if(scrollIntoView !== false){ - var el = this.view.getNode(index); - if(el){ - this.innerList.scrollChildIntoView(el, false); - } - } - }, - - // private - selectNext : function(){ - var ct = this.store.getCount(); - if(ct > 0){ - if(this.selectedIndex == -1){ - this.select(0); - }else if(this.selectedIndex < ct-1){ - this.select(this.selectedIndex+1); - } - } - }, - - // private - selectPrev : function(){ - var ct = this.store.getCount(); - if(ct > 0){ - if(this.selectedIndex == -1){ - this.select(0); - }else if(this.selectedIndex != 0){ - this.select(this.selectedIndex-1); - } - } - }, - - // private - onKeyUp : function(e){ - if(this.editable !== false && !e.isSpecialKey()){ - this.lastKey = e.getKey(); - this.dqTask.delay(this.queryDelay); - } - }, - - // private - validateBlur : function(){ - return !this.list || !this.list.isVisible(); - }, - - // private - initQuery : function(){ - this.doQuery(this.getRawValue()); - }, - - // private - doForce : function(){ - if(this.el.dom.value.length > 0){ - this.el.dom.value = - this.lastSelectionText === undefined ? '' : this.lastSelectionText; - this.applyEmptyText(); - } - }, - - - doQuery : function(q, forceAll){ - if(q === undefined || q === null){ - q = ''; - } - var qe = { - query: q, - forceAll: forceAll, - combo: this, - cancel:false - }; - if(this.fireEvent('beforequery', qe)===false || qe.cancel){ - return false; - } - q = qe.query; - forceAll = qe.forceAll; - if(forceAll === true || (q.length >= this.minChars)){ - if(this.lastQuery != q){ - this.lastQuery = q; - if(this.mode == 'local'){ - this.selectedIndex = -1; - if(forceAll){ - this.store.clearFilter(); - }else{ - this.store.filter(this.displayField, q); - } - this.onLoad(); - }else{ - this.store.baseParams[this.queryParam] = q; - this.store.load({ - params: this.getParams(q) - }); - this.expand(); - } - }else{ - this.selectedIndex = -1; - this.onLoad(); - } - } - }, - - // private - getParams : function(q){ - var p = {}; - //p[this.queryParam] = q; - if(this.pageSize){ - p.start = 0; - p.limit = this.pageSize; - } - return p; - }, - - - collapse : function(){ - if(!this.isExpanded()){ - return; - } - this.list.hide(); - Ext.get(document).un('mousedown', this.collapseIf, this); - this.fireEvent('collapse', this); - }, - - // private - collapseIf : function(e){ - if(!e.within(this.wrap) && !e.within(this.list)){ - this.collapse(); - } - }, - - - expand : function(){ - if(this.isExpanded() || !this.hasFocus){ - return; - } - this.list.alignTo(this.el, this.listAlign); - this.list.show(); - Ext.get(document).on('mousedown', this.collapseIf, this); - this.fireEvent('expand', this); - }, - - // private - // Implements the default empty TriggerField.onTriggerClick function - onTriggerClick : function(){ - if(this.disabled){ - return; - } - if(this.isExpanded()){ - this.collapse(); - this.el.focus(); - }else { - this.hasFocus = true; - if(this.triggerAction == 'all') { - this.doQuery(this.allQuery, true); - } else { - this.doQuery(this.getRawValue()); - } - this.el.focus(); - } - } -}); - -Ext.form.Checkbox = function(config){ - Ext.form.Checkbox.superclass.constructor.call(this, config); - this.addEvents({ - - check : true - }); -}; - -Ext.extend(Ext.form.Checkbox, Ext.form.Field, { - - focusClass : "x-form-check-focus", - - fieldClass: "x-form-field", - - checked: false, - - // private - defaultAutoCreate : { tag: "input", type: 'checkbox', autocomplete: "off"}, - - boxLabel : undefined, - - // - onResize : function(){ - Ext.form.Checkbox.superclass.onResize.apply(this, arguments); - if(!this.boxLabel){ - this.el.alignTo(this.wrap, 'c-c'); - } - }, - - initEvents : function(){ - Ext.form.Checkbox.superclass.initEvents.call(this); - this.el.on("click", this.onClick, this); - this.el.on("change", this.onClick, this); - }, - - - getResizeEl : function(){ - return this.wrap; - }, - - getPositionEl : function(){ - return this.wrap; - }, - - // private - onRender : function(ct, position){ - Ext.form.Checkbox.superclass.onRender.call(this, ct, position); - if(this.inputValue !== undefined){ - this.el.dom.value = this.inputValue; - } - this.wrap = this.el.wrap({cls: "x-form-check-wrap"}); - if(this.boxLabel){ - this.wrap.createChild({tag: 'label', htmlFor: this.el.id, cls: 'x-form-cb-label', html: this.boxLabel}); - } - if(this.checked){ - this.setValue(true); - } - }, - - // private - initValue : Ext.emptyFn, - - - getValue : function(){ - if(this.rendered){ - return this.el.dom.checked; - } - return false; - }, - - onClick : function(){ - if(this.el.dom.checked != this.checked){ - this.setValue(this.el.dom.checked); - } - }, - - - setValue : function(v){ - this.checked = (v === true || v === 'true' || v == '1'); - if(this.el && this.el.dom){ - this.el.dom.checked = this.checked; - } - this.fireEvent("check", this, this.checked); - } -}); - -Ext.form.Radio = function(){ - Ext.form.Radio.superclass.constructor.apply(this, arguments); -}; -Ext.extend(Ext.form.Radio, Ext.form.Checkbox, { - inputType: 'radio', - - - getGroupValue : function(){ - return this.el.up('form').child('input[name='+this.el.dom.name+']:checked', true).value; - } -}); - - -Ext.form.HtmlEditor = Ext.extend(Ext.form.Field, { - - enableFormat : true, - - enableFontSize : true, - - enableColors : true, - - enableAlignments : true, - - enableLists : true, - - enableSourceEdit : true, - - // private properties - validationEvent : false, - deferHeight: true, - initialized : false, - activated : false, - sourceEditMode : false, - onFocus : Ext.emptyFn, - iframePad:3, - defaultAutoCreate : { - tag: "textarea", - style:"width:500px;height:300px;", - autocomplete: "off" - }, - - // private - initComponent : function(){ - this.addEvents({ - - initialize: true, - - beforesync: true, - - beforepush: true, - - sync: true, - - push: true, - - editmodechange: true - }) - }, - - - createToolbar : function(editor){ - - function btn(id, toggle, handler){ - return { - id : id, - cls : 'x-btn-icon x-edit-'+id, - enableToggle:toggle !== false, - scope: editor, - handler:handler||editor.relayBtnCmd, - clickEvent:'mousedown', - tooltip: editor.buttonTips[id] || undefined, - tabIndex:-1 - }; - } - - // build the toolbar - var tb = new Ext.Toolbar(this.wrap.dom.firstChild); - - // stop form submits - tb.el.on('click', function(e){ - e.preventDefault(); - }); - - if(this.enableFormat){ - tb.add( - btn('bold'), - btn('italic'), - btn('underline') - ); - }; - - if(this.enableFontSize){ - tb.add( - '-', - btn('increasefontsize', false, this.adjustFont), - btn('decreasefontsize', false, this.adjustFont) - ); - }; - - if(this.enableColors){ - tb.add( - '-', { - id:'forecolor', - cls:'x-btn-icon x-edit-forecolor', - clickEvent:'mousedown', - tooltip: editor.buttonTips['forecolor'] || undefined, - tabIndex:-1, - menu : new Ext.menu.ColorMenu({ - allowReselect: true, - focus: Ext.emptyFn, - value:'000000', - plain:true, - selectHandler: function(cp, color){ - this.execCmd('forecolor', Ext.isSafari || Ext.isIE ? '#'+color : color); - this.deferFocus(); - }, - scope: this, - clickEvent:'mousedown' - }) - }, { - id:'backcolor', - cls:'x-btn-icon x-edit-backcolor', - clickEvent:'mousedown', - tooltip: editor.buttonTips['backcolor'] || undefined, - tabIndex:-1, - menu : new Ext.menu.ColorMenu({ - focus: Ext.emptyFn, - value:'FFFFFF', - plain:true, - allowReselect: true, - selectHandler: function(cp, color){ - if(Ext.isGecko){ - this.execCmd('useCSS', false); - this.execCmd('hilitecolor', color); - this.execCmd('useCSS', true); - this.deferFocus(); - }else{ - this.execCmd(Ext.isOpera ? 'hilitecolor' : 'backcolor', Ext.isSafari || Ext.isIE ? '#'+color : color); - this.deferFocus(); - } - }, - scope:this, - clickEvent:'mousedown' - }) - } - ); - }; - - if(this.enableAlignments){ - tb.add( - '-', - btn('justifyleft'), - btn('justifycenter'), - btn('justifyright') - ); - }; - - if(!Ext.isSafari){ - if(this.enableLists){ - tb.add( - '-', - btn('insertorderedlist'), - btn('insertunorderedlist') - ); - } - if(this.enableSourceEdit){ - tb.add( - '-', - btn('sourceedit', true, function(btn){ - this.toggleSourceEdit(btn.pressed); - }) - ); - } - } - - this.tb = tb; - }, - - - getDocMarkup : function(){ - return '<html><head><style type="text/css">body{border:0;margin:0;padding:3px;height:98%;cursor:text;}</style></head><body></body></html>'; - }, - - // private - onRender : function(ct, position){ - Ext.form.HtmlEditor.superclass.onRender.call(this, ct, position); - this.el.dom.style.border = '0 none'; - this.el.addClass('x-hidden'); - if(Ext.isIE){ // fix IE 1px bogus margin - this.el.applyStyles('margin-top:-1px;margin-bottom:-1px;') - } - this.wrap = this.el.wrap({ - cls:'x-html-editor-wrap', cn:{cls:'x-html-editor-tb'} - }); - - - this.createToolbar(this); - - this.tb.items.each(function(item){ - if(item.id != 'sourceedit'){ - item.disable(); - } - }); - - var iframe = document.createElement('iframe'); - iframe.name = Ext.id(); - iframe.frameBorder = 'no'; - - iframe.src="javascript:false"; - - this.wrap.dom.appendChild(iframe); - - this.iframe = iframe; - - if(Ext.isIE){ - this.doc = iframe.contentWindow.document; - this.win = iframe.contentWindow; - } else { - this.doc = (iframe.contentDocument || window.frames[iframe.name].document); - this.win = window.frames[iframe.name]; - } - this.doc.designMode = 'on'; - this.doc.open(); - this.doc.write(this.getDocMarkup()) - this.doc.close(); - - var task = { // must defer to wait for browser to be ready - run : function(){ - if(this.doc.body || this.doc.readyState == 'complete'){ - this.doc.designMode="on"; - Ext.TaskMgr.stop(task); - this.initEditor.defer(10, this); - } - }, - interval : 10, - duration:10000, - scope: this - }; - Ext.TaskMgr.start(task); - - if(!this.width){ - this.setSize(this.el.getSize()); - } - }, - - // private - onResize : function(w, h){ - Ext.form.HtmlEditor.superclass.onResize.apply(this, arguments); - if(this.el && this.iframe){ - if(typeof w == 'number'){ - var aw = w - this.wrap.getFrameWidth('lr'); - this.el.setWidth(this.adjustWidth('textarea', aw)); - this.iframe.style.width = aw + 'px'; - } - if(typeof h == 'number'){ - var ah = h - this.wrap.getFrameWidth('tb') - this.tb.el.getHeight(); - this.el.setHeight(this.adjustWidth('textarea', ah)); - this.iframe.style.height = ah + 'px'; - if(this.doc){ - (this.doc.body || this.doc.documentElement).style.height = (ah - (this.iframePad*2)) + 'px'; - } - } - } - }, - - - toggleSourceEdit : function(sourceEditMode){ - if(sourceEditMode === undefined){ - sourceEditMode = !this.sourceEditMode; - } - this.sourceEditMode = sourceEditMode === true; - var btn = this.tb.items.get('sourceedit'); - if(btn.pressed !== this.sourceEditMode){ - btn.toggle(this.sourceEditMode); - return; - } - if(this.sourceEditMode){ - this.tb.items.each(function(item){ - if(item.id != 'sourceedit'){ - item.disable(); - } - }); - this.syncValue(); - this.iframe.className = 'x-hidden'; - this.el.removeClass('x-hidden'); - this.el.focus(); - }else{ - if(this.initialized){ - this.tb.items.each(function(item){ - item.enable(); - }); - } - this.pushValue(); - this.iframe.className = ''; - this.el.addClass('x-hidden'); - this.deferFocus(); - } - this.setSize(this.wrap.getSize()); - this.fireEvent('editmodechange', this, this.sourceEditMode); - }, - - // private (for BoxComponent) - adjustSize : Ext.BoxComponent.prototype.adjustSize, - - // private (for BoxComponent) - getResizeEl : function(){ - return this.wrap; - }, - - // private (for BoxComponent) - getPositionEl : function(){ - return this.wrap; - }, - - // private - initEvents : function(){ - this.originalValue = this.getValue(); - }, - - - markInvalid : Ext.emptyFn, - - clearInvalid : Ext.emptyFn, - - setValue : function(v){ - Ext.form.HtmlEditor.superclass.setValue.call(this, v); - this.pushValue(); - }, - - - cleanHtml : function(html){ - html = String(html); - if(html.length > 5){ - if(Ext.isSafari){ // strip safari nonsense - html = html.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi, ''); - } - } - if(html == ' '){ - html = ''; - } - return html; - }, - - - syncValue : function(){ - if(this.initialized){ - var bd = (this.doc.body || this.doc.documentElement); - var html = bd.innerHTML; - if(Ext.isSafari){ - var bs = bd.getAttribute('style'); // Safari puts text-align styles on the body element! - var m = bs.match(/text-align:(.*?);/i); - if(m && m[1]){ - html = '<div style="'+m[0]+'">' + html + '</div>'; - } - } - html = this.cleanHtml(html); - if(this.fireEvent('beforesync', this, html) !== false){ - this.el.dom.value = html; - this.fireEvent('sync', this, html); - } - } - }, - - - pushValue : function(){ - if(this.initialized){ - var v = this.el.dom.value; - if(v.length < 1){ - v = ' '; - } - if(this.fireEvent('beforepush', this, v) !== false){ - (this.doc.body || this.doc.documentElement).innerHTML = v; - this.fireEvent('push', this, v); - } - } - }, - - // private - deferFocus : function(){ - this.focus.defer(10, this); - }, - - // doc'ed in Field - focus : function(){ - if(this.win && !this.sourceEditMode){ - this.win.focus(); - }else{ - this.el.focus(); - } - }, - - // private - initEditor : function(){ - var dbody = (this.doc.body || this.doc.documentElement); - var ss = this.el.getStyles('font-size', 'font-family', 'background-image', 'background-repeat'); - ss['background-attachment'] = 'fixed'; // w3c - dbody.bgProperties = 'fixed'; // ie - Ext.DomHelper.applyStyles(dbody, ss); - Ext.EventManager.on(this.doc, { - 'mousedown': this.onEditorEvent, - 'dblclick': this.onEditorEvent, - 'click': this.onEditorEvent, - 'keyup': this.onEditorEvent, - buffer:100, - scope: this - }); - if(Ext.isGecko){ - Ext.EventManager.on(this.doc, 'keypress', this.applyCommand, this); - } - if(Ext.isIE || Ext.isSafari || Ext.isOpera){ - Ext.EventManager.on(this.doc, 'keydown', this.fixTab, this); - } - this.initialized = true; - - this.fireEvent('initialize', this); - this.pushValue(); - }, - - // private - onDestroy : function(){ - if(this.rendered){ - this.tb.items.each(function(item){ - if(item.menu){ - item.menu.removeAll(); - if(item.menu.el){ - item.menu.el.destroy(); - } - } - item.destroy(); - }); - this.wrap.dom.innerHTML = ''; - this.wrap.remove(); - } - }, - - // private - onFirstFocus : function(){ - this.activated = true; - this.tb.items.each(function(item){ - item.enable(); - }); - if(Ext.isGecko){ // prevent silly gecko errors - this.win.focus(); - var s = this.win.getSelection(); - if(!s.focusNode || s.focusNode.nodeType != 3){ - var r = s.getRangeAt(0); - r.selectNodeContents((this.doc.body || this.doc.documentElement)); - r.collapse(true); - this.deferFocus(); - } - try{ - this.execCmd('useCSS', true); - this.execCmd('styleWithCSS', false); - }catch(e){} - } - }, - - // private - adjustFont: function(btn){ - var adjust = btn.id == 'increasefontsize' ? 1 : -1; - if(Ext.isSafari){ // safari - adjust *= 2; - } - var v = parseInt(this.doc.queryCommandValue('FontSize')|| 3, 10); - v = Math.max(1, v+adjust); - this.execCmd('FontSize', v + (Ext.isSafari ? 'px' : 0)); - }, - - onEditorEvent : function(e){ - this.updateToolbar(); - }, - - - - updateToolbar: function(){ - - if(!this.activated){ - this.onFirstFocus(); - return; - } - - var btns = this.tb.items.map, doc = this.doc; - - if(this.enableFormat){ - btns.bold.toggle(doc.queryCommandState('bold')); - btns.italic.toggle(doc.queryCommandState('italic')); - btns.underline.toggle(doc.queryCommandState('underline')); - } - if(this.enableAlignments){ - btns.justifyleft.toggle(doc.queryCommandState('justifyleft')); - btns.justifycenter.toggle(doc.queryCommandState('justifycenter')); - btns.justifyright.toggle(doc.queryCommandState('justifyright')); - } - if(!Ext.isSafari && this.enableLists){ - btns.insertorderedlist.toggle(doc.queryCommandState('insertorderedlist')); - btns.insertunorderedlist.toggle(doc.queryCommandState('insertunorderedlist')); - } - if(this.enableColors){ - btns.forecolor.menu.hide(); - btns.backcolor.menu.hide(); - } - - this.syncValue(); - }, - - // private - relayBtnCmd : function(btn){ - this.relayCmd(btn.id); - }, - - - relayCmd : function(cmd, value){ - this.win.focus(); - this.execCmd(cmd, value); - this.updateToolbar(); - this.deferFocus(); - }, - - - execCmd : function(cmd, value){ - this.doc.execCommand(cmd, false, value === undefined ? null : value); - }, - - // private - applyCommand : function(e){ - if(e.ctrlKey){ - var c = e.getCharCode(), cmd; - if(c > 0){ - c = String.fromCharCode(c); - switch(c){ - case 'b': - cmd = 'bold'; - break; - case 'i': - cmd = 'italic'; - break; - case 'u': - cmd = 'underline'; - break; - } - if(cmd){ - this.win.focus(); - this.execCmd(cmd); - this.deferFocus(); - e.preventDefault(); - } - } - } - }, - - // private - fixTab : function(e){ - if(e.getKey() == e.TAB){ - e.stopEvent(); - if(Ext.isIE){ - var r = this.doc.selection.createRange(); - if(r){ - r.collapse(true); - r.pasteHTML(' '); - this.deferFocus(); - } - }else if(Ext.isOpera){ - this.win.focus(); - this.execCmd('InsertHTML',' '); - this.deferFocus(); - }else{ - this.execCmd('InsertText','\t'); - this.deferFocus(); - } - } - }, - - - getToolbar : function(){ - return this.tb; - }, - - - buttonTips : { - bold : { - title: 'Bold (Ctrl+B)', - text: 'Make the selected text bold.', - cls: 'x-html-editor-tip' - }, - italic : { - title: 'Italic (Ctrl+I)', - text: 'Make the selected text italic.', - cls: 'x-html-editor-tip' - }, - underline : { - title: 'Underline (Ctrl+U)', - text: 'Underline the selected text.', - cls: 'x-html-editor-tip' - }, - increasefontsize : { - title: 'Grow Text', - text: 'Increase the font size.', - cls: 'x-html-editor-tip' - }, - decreasefontsize : { - title: 'Shrink Text', - text: 'Decrease the font size.', - cls: 'x-html-editor-tip' - }, - backcolor : { - title: 'Text Highlight Color', - text: 'Change the background color of the selected text.', - cls: 'x-html-editor-tip' - }, - forecolor : { - title: 'Font Color', - text: 'Change the color of the selected text.', - cls: 'x-html-editor-tip' - }, - justifyleft : { - title: 'Align Text Left', - text: 'Align text to the left.', - cls: 'x-html-editor-tip' - }, - justifycenter : { - title: 'Center Text', - text: 'Center text in the editor.', - cls: 'x-html-editor-tip' - }, - justifyright : { - title: 'Align Text Right', - text: 'Align text to the right.', - cls: 'x-html-editor-tip' - }, - insertunorderedlist : { - title: 'Bullet List', - text: 'Start a bulleted list.', - cls: 'x-html-editor-tip' - }, - insertorderedlist : { - title: 'Numbered List', - text: 'Start a numbered list.', - cls: 'x-html-editor-tip' - }, - sourceedit : { - title: 'Source Edit', - text: 'Switch to source editing mode.', - cls: 'x-html-editor-tip' - } - } - - // hide stuff that is not compatible - - - - - - - - - - - -}); - -Ext.form.BasicForm = function(el, config){ - Ext.apply(this, config); - - this.items = new Ext.util.MixedCollection(false, function(o){ - return o.id || (o.id = Ext.id()); - }); - this.addEvents({ - - beforeaction: true, - - actionfailed : true, - - actioncomplete : true - }); - if(el){ - this.initEl(el); - } - Ext.form.BasicForm.superclass.constructor.call(this); -}; - -Ext.extend(Ext.form.BasicForm, Ext.util.Observable, { - - - - - - - - timeout: 30, - - // private - activeAction : null, - - - trackResetOnLoad : false, - - - waitMsgTarget : undefined, - - // private - initEl : function(el){ - this.el = Ext.get(el); - this.id = this.el.id || Ext.id(); - this.el.on('submit', this.onSubmit, this); - this.el.addClass('x-form'); - }, - - // private - onSubmit : function(e){ - e.stopEvent(); - }, - - - isValid : function(){ - var valid = true; - this.items.each(function(f){ - if(!f.validate()){ - valid = false; - } - }); - return valid; - }, - - - isDirty : function(){ - var dirty = false; - this.items.each(function(f){ - if(f.isDirty()){ - dirty = true; - return false; - } - }); - return dirty; - }, - - - doAction : function(action, options){ - if(typeof action == 'string'){ - action = new Ext.form.Action.ACTION_TYPES[action](this, options); - } - if(this.fireEvent('beforeaction', this, action) !== false){ - this.beforeAction(action); - action.run.defer(100, action); - } - return this; - }, - - - submit : function(options){ - this.doAction('submit', options); - return this; - }, - - - load : function(options){ - this.doAction('load', options); - return this; - }, - - - updateRecord : function(record){ - record.beginEdit(); - var fs = record.fields; - fs.each(function(f){ - var field = this.findField(f.name); - if(field){ - record.set(f.name, field.getValue()); - } - }, this); - record.endEdit(); - return this; - }, - - - loadRecord : function(record){ - this.setValues(record.data); - return this; - }, - - // private - beforeAction : function(action){ - var o = action.options; - if(o.waitMsg){ - if(this.waitMsgTarget === true){ - this.el.mask(o.waitMsg, 'x-mask-loading'); - }else if(this.waitMsgTarget){ - this.waitMsgTarget = Ext.get(this.waitMsgTarget); - this.waitMsgTarget.mask(o.waitMsg, 'x-mask-loading'); - }else{ - Ext.MessageBox.wait(o.waitMsg, o.waitTitle || this.waitTitle || 'Please Wait...'); - } - } - }, - - // private - afterAction : function(action, success){ - this.activeAction = null; - var o = action.options; - if(o.waitMsg){ - if(this.waitMsgTarget === true){ - this.el.unmask(); - }else if(this.waitMsgTarget){ - this.waitMsgTarget.unmask(); - }else{ - Ext.MessageBox.updateProgress(1); - Ext.MessageBox.hide(); - } - } - if(success){ - if(o.reset){ - this.reset(); - } - Ext.callback(o.success, o.scope, [this, action]); - this.fireEvent('actioncomplete', this, action); - }else{ - Ext.callback(o.failure, o.scope, [this, action]); - this.fireEvent('actionfailed', this, action); - } - }, - - - findField : function(id){ - var field = this.items.get(id); - if(!field){ - this.items.each(function(f){ - if(f.isFormField && (f.dataIndex == id || f.id == id || f.getName() == id)){ - field = f; - return false; - } - }); - } - return field || null; - }, - - - - markInvalid : function(errors){ - if(errors instanceof Array){ - for(var i = 0, len = errors.length; i < len; i++){ - var fieldError = errors[i]; - var f = this.findField(fieldError.id); - if(f){ - f.markInvalid(fieldError.msg); - } - } - }else{ - var field, id; - for(id in errors){ - if(typeof errors[id] != 'function' && (field = this.findField(id))){ - field.markInvalid(errors[id]); - } - } - } - return this; - }, - - - setValues : function(values){ - if(values instanceof Array){ // array of objects - for(var i = 0, len = values.length; i < len; i++){ - var v = values[i]; - var f = this.findField(v.id); - if(f){ - f.setValue(v.value); - if(this.trackResetOnLoad){ - f.originalValue = f.getValue(); - } - } - } - }else{ // object hash - var field, id; - for(id in values){ - if(typeof values[id] != 'function' && (field = this.findField(id))){ - field.setValue(values[id]); - if(this.trackResetOnLoad){ - field.originalValue = field.getValue(); - } - } - } - } - return this; - }, - - - getValues : function(asString){ - var fs = Ext.lib.Ajax.serializeForm(this.el.dom); - if(asString === true){ - return fs; - } - return Ext.urlDecode(fs); - }, - - - clearInvalid : function(){ - this.items.each(function(f){ - f.clearInvalid(); - }); - return this; - }, - - - reset : function(){ - this.items.each(function(f){ - f.reset(); - }); - return this; - }, - - - add : function(){ - this.items.addAll(Array.prototype.slice.call(arguments, 0)); - return this; - }, - - - - remove : function(field){ - this.items.remove(field); - return this; - }, - - - render : function(){ - this.items.each(function(f){ - if(f.isFormField && !f.rendered && document.getElementById(f.id)){ // if the element exists - f.applyTo(f.id); - } - }); - return this; - }, - - - applyToFields : function(o){ - this.items.each(function(f){ - Ext.apply(f, o); - }); - return this; - }, - - - applyIfToFields : function(o){ - this.items.each(function(f){ - Ext.applyIf(f, o); - }); - return this; - } -}); - -// back compat -Ext.BasicForm = Ext.form.BasicForm; - -Ext.form.Form = function(config){ - Ext.form.Form.superclass.constructor.call(this, null, config); - this.url = this.url || this.action; - if(!this.root){ - this.root = new Ext.form.Layout(Ext.applyIf({ - id: Ext.id() - }, config)); - } - this.active = this.root; - - this.buttons = []; - this.addEvents({ - - clientvalidation: true - }); -}; - -Ext.extend(Ext.form.Form, Ext.form.BasicForm, { - - - - buttonAlign:'center', - - - minButtonWidth:75, - - - labelAlign:'left', - - - monitorValid : false, - - - monitorPoll : 200, - - - column : function(c){ - var col = new Ext.form.Column(c); - this.start(col); - if(arguments.length > 1){ // duplicate code required because of Opera - this.add.apply(this, Array.prototype.slice.call(arguments, 1)); - this.end(); - } - return col; - }, - - - fieldset : function(c){ - var fs = new Ext.form.FieldSet(c); - this.start(fs); - if(arguments.length > 1){ // duplicate code required because of Opera - this.add.apply(this, Array.prototype.slice.call(arguments, 1)); - this.end(); - } - return fs; - }, - - - container : function(c){ - var l = new Ext.form.Layout(c); - this.start(l); - if(arguments.length > 1){ // duplicate code required because of Opera - this.add.apply(this, Array.prototype.slice.call(arguments, 1)); - this.end(); - } - return l; - }, - - - start : function(c){ - // cascade label info - Ext.applyIf(c, {'labelAlign': this.active.labelAlign, 'labelWidth': this.active.labelWidth, 'itemCls': this.active.itemCls}); - this.active.stack.push(c); - c.ownerCt = this.active; - this.active = c; - return this; - }, - - - end : function(){ - if(this.active == this.root){ - return this; - } - this.active = this.active.ownerCt; - return this; - }, - - - add : function(){ - this.active.stack.push.apply(this.active.stack, arguments); - var r = []; - for(var i = 0, a = arguments, len = a.length; i < len; i++) { - if(a[i].isFormField){ - r.push(a[i]); - } - } - if(r.length > 0){ - Ext.form.Form.superclass.add.apply(this, r); - } - return this; - }, - - - render : function(ct){ - ct = Ext.get(ct); - var o = this.autoCreate || { - tag: 'form', - method : this.method || 'POST', - id : this.id || Ext.id() - }; - this.initEl(ct.createChild(o)); - - this.root.render(this.el); - - this.items.each(function(f){ - f.render('x-form-el-'+f.id); - }); - - if(this.buttons.length > 0){ - // tables are required to maintain order and for correct IE layout - var tb = this.el.createChild({cls:'x-form-btns-ct', cn: { - cls:"x-form-btns x-form-btns-"+this.buttonAlign, - html:'<table cellspacing="0"><tbody><tr></tr></tbody></table><div class="x-clear"></div>' - }}, null, true); - var tr = tb.getElementsByTagName('tr')[0]; - for(var i = 0, len = this.buttons.length; i < len; i++) { - var b = this.buttons[i]; - var td = document.createElement('td'); - td.className = 'x-form-btn-td'; - b.render(tr.appendChild(td)); - } - } - if(this.monitorValid){ // initialize after render - this.startMonitoring(); - } - return this; - }, - - - addButton : function(config, handler, scope){ - var bc = { - handler: handler, - scope: scope, - minWidth: this.minButtonWidth, - hideParent:true - }; - if(typeof config == "string"){ - bc.text = config; - }else{ - Ext.apply(bc, config); - } - var btn = new Ext.Button(null, bc); - this.buttons.push(btn); - return btn; - }, - - - startMonitoring : function(){ - if(!this.bound){ - this.bound = true; - Ext.TaskMgr.start({ - run : this.bindHandler, - interval : this.monitorPoll || 200, - scope: this - }); - } - }, - - - stopMonitoring : function(){ - this.bound = false; - }, - - // private - bindHandler : function(){ - if(!this.bound){ - return false; // stops binding - } - var valid = true; - this.items.each(function(f){ - if(!f.isValid(true)){ - valid = false; - return false; - } - }); - for(var i = 0, len = this.buttons.length; i < len; i++){ - var btn = this.buttons[i]; - if(btn.formBind === true && btn.disabled === valid){ - btn.setDisabled(!valid); - } - } - this.fireEvent('clientvalidation', this, valid); - } -}); - - -// back compat -Ext.Form = Ext.form.Form; - - -// define the action interface -Ext.form.Action = function(form, options){ - this.form = form; - this.options = options || {}; -}; - -Ext.form.Action.CLIENT_INVALID = 'client'; -Ext.form.Action.SERVER_INVALID = 'server'; -Ext.form.Action.CONNECT_FAILURE = 'connect'; -Ext.form.Action.LOAD_FAILURE = 'load'; - -Ext.form.Action.prototype = { - type : 'default', - failureType : undefined, - response : undefined, - result : undefined, - - // interface method - run : function(options){ - - }, - - // interface method - success : function(response){ - - }, - - // interface method - handleResponse : function(response){ - - }, - - // default connection failure - failure : function(response){ - this.response = response; - this.failureType = Ext.form.Action.CONNECT_FAILURE; - this.form.afterAction(this, false); - }, - - processResponse : function(response){ - this.response = response; - if(!response.responseText){ - return true; - } - this.result = this.handleResponse(response); - return this.result; - }, - - // utility functions used internally - getUrl : function(appendParams){ - var url = this.options.url || this.form.url || this.form.el.dom.action; - if(appendParams){ - var p = this.getParams(); - if(p){ - url += (url.indexOf('?') != -1 ? '&' : '?') + p; - } - } - return url; - }, - - getMethod : function(){ - return (this.options.method || this.form.method || this.form.el.dom.method || 'POST').toUpperCase(); - }, - - getParams : function(){ - var bp = this.form.baseParams; - var p = this.options.params; - if(p){ - if(typeof p == "object"){ - p = Ext.urlEncode(Ext.applyIf(p, bp)); - }else if(typeof p == 'string' && bp){ - p += '&' + Ext.urlEncode(bp); - } - }else if(bp){ - p = Ext.urlEncode(bp); - } - return p; - }, - - createCallback : function(){ - return { - success: this.success, - failure: this.failure, - scope: this, - timeout: (this.form.timeout*1000), - upload: this.form.fileUpload ? this.success : undefined - }; - } -}; - -Ext.form.Action.Submit = function(form, options){ - Ext.form.Action.Submit.superclass.constructor.call(this, form, options); -}; - -Ext.extend(Ext.form.Action.Submit, Ext.form.Action, { - type : 'submit', - - run : function(){ - var o = this.options; - var isPost = this.getMethod() == 'POST'; - if(o.clientValidation === false || this.form.isValid()){ - Ext.lib.Ajax.formRequest( - this.form.el.dom, - this.getUrl(!isPost), - this.createCallback(), - isPost ? this.getParams() : null, this.form.fileUpload, Ext.SSL_SECURE_URL); - - }else if (o.clientValidation !== false){ // client validation failed - this.failureType = Ext.form.Action.CLIENT_INVALID; - this.form.afterAction(this, false); - } - }, - - success : function(response){ - var result = this.processResponse(response); - if(result === true || result.success){ - this.form.afterAction(this, true); - return; - } - if(result.errors){ - this.form.markInvalid(result.errors); - this.failureType = Ext.form.Action.SERVER_INVALID; - } - this.form.afterAction(this, false); - }, - - handleResponse : function(response){ - if(this.form.errorReader){ - var rs = this.form.errorReader.read(response); - var errors = []; - if(rs.records){ - for(var i = 0, len = rs.records.length; i < len; i++) { - var r = rs.records[i]; - errors[i] = r.data; - } - } - if(errors.length < 1){ - errors = null; - } - return { - success : rs.success, - errors : errors - }; - } - return Ext.decode(response.responseText); - } -}); - - -Ext.form.Action.Load = function(form, options){ - Ext.form.Action.Load.superclass.constructor.call(this, form, options); - this.reader = this.form.reader; -}; - -Ext.extend(Ext.form.Action.Load, Ext.form.Action, { - type : 'load', - - run : function(){ - Ext.lib.Ajax.request( - this.getMethod(), - this.getUrl(false), - this.createCallback(), - this.getParams()); - }, - - success : function(response){ - var result = this.processResponse(response); - if(result === true || !result.success || !result.data){ - this.failureType = Ext.form.Action.LOAD_FAILURE; - this.form.afterAction(this, false); - return; - } - this.form.clearInvalid(); - this.form.setValues(result.data); - this.form.afterAction(this, true); - }, - - handleResponse : function(response){ - if(this.form.reader){ - var rs = this.form.reader.read(response); - var data = rs.records && rs.records[0] ? rs.records[0].data : null; - return { - success : rs.success, - data : data - }; - } - return Ext.decode(response.responseText); - } -}); - -Ext.form.Action.ACTION_TYPES = { - 'load' : Ext.form.Action.Load, - 'submit' : Ext.form.Action.Submit -}; - - -Ext.form.Layout = function(config){ - Ext.form.Layout.superclass.constructor.call(this, config); - this.stack = []; -}; - -Ext.extend(Ext.form.Layout, Ext.Component, { - - - - - - clear : true, - - labelSeparator : ':', - - hideLabels : false, - - // private - defaultAutoCreate : {tag: 'div', cls: 'x-form-ct'}, - - // private - onRender : function(ct, position){ - if(this.el){ // from markup - this.el = Ext.get(this.el); - }else { // generate - var cfg = this.getAutoCreate(); - this.el = ct.createChild(cfg, position); - } - if(this.style){ - this.el.applyStyles(this.style); - } - if(this.labelAlign){ - this.el.addClass('x-form-label-'+this.labelAlign); - } - if(this.hideLabels){ - this.labelStyle = "display:none"; - this.elementStyle = "padding-left:0;"; - }else{ - if(typeof this.labelWidth == 'number'){ - this.labelStyle = "width:"+this.labelWidth+"px;"; - this.elementStyle = "padding-left:"+((this.labelWidth+(typeof this.labelPad == 'number' ? this.labelPad : 5))+'px')+";"; - } - if(this.labelAlign == 'top'){ - this.labelStyle = "width:auto;"; - this.elementStyle = "padding-left:0;"; - } - } - var stack = this.stack; - var slen = stack.length; - if(slen > 0){ - if(!this.fieldTpl){ - var t = new Ext.Template( - '<div class="x-form-item {5}">', - '<label for="{0}" style="{2}">{1}{4}</label>', - '<div class="x-form-element" id="x-form-el-{0}" style="{3}">', - '</div>', - '</div><div class="x-form-clear-left"></div>' - ); - t.disableFormats = true; - t.compile(); - Ext.form.Layout.prototype.fieldTpl = t; - } - for(var i = 0; i < slen; i++) { - if(stack[i].isFormField){ - this.renderField(stack[i]); - }else{ - this.renderComponent(stack[i]); - } - } - } - if(this.clear){ - this.el.createChild({cls:'x-form-clear'}); - } - }, - - // private - renderField : function(f){ - this.fieldTpl.append(this.el, [ - f.id, f.fieldLabel, - f.labelStyle||this.labelStyle||'', - this.elementStyle||'', - typeof f.labelSeparator == 'undefined' ? this.labelSeparator : f.labelSeparator, - f.itemCls||this.itemCls||'' - ]); - }, - - // private - renderComponent : function(c){ - c.render(this.el); - } -}); - - -Ext.form.Column = function(config){ - Ext.form.Column.superclass.constructor.call(this, config); -}; - -Ext.extend(Ext.form.Column, Ext.form.Layout, { - - - - // private - defaultAutoCreate : {tag: 'div', cls: 'x-form-ct x-form-column'}, - - // private - onRender : function(ct, position){ - Ext.form.Column.superclass.onRender.call(this, ct, position); - if(this.width){ - this.el.setWidth(this.width); - } - } -}); - - -Ext.form.FieldSet = function(config){ - Ext.form.FieldSet.superclass.constructor.call(this, config); -}; - -Ext.extend(Ext.form.FieldSet, Ext.form.Layout, { - - - - // private - defaultAutoCreate : {tag: 'fieldset', cn: {tag:'legend'}}, - - // private - onRender : function(ct, position){ - Ext.form.FieldSet.superclass.onRender.call(this, ct, position); - if(this.legend){ - this.setLegend(this.legend); - } - }, - - // private - setLegend : function(text){ - if(this.rendered){ - this.el.child('legend').update(text); - } - } -}); - -Ext.form.VTypes = function(){ - // closure these in so they are only created once. - var alpha = /^[a-zA-Z_]+$/; - var alphanum = /^[a-zA-Z0-9_]+$/; - var email = /^([\w]+)(.[\w]+)*@([\w-]+\.){1,5}([A-Za-z]){2,4}$/; - var url = /(((https?)|(ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i; - - // All these messages and functions are configurable - return { - - 'email' : function(v){ - return email.test(v); - }, - - 'emailText' : 'This field should be an e-mail address in the format "user@domain.com"', - - 'emailMask' : /[a-z0-9_\.\-@]/i, - - - 'url' : function(v){ - return url.test(v); - }, - - 'urlText' : 'This field should be a URL in the format "http:/'+'/www.domain.com"', - - - 'alpha' : function(v){ - return alpha.test(v); - }, - - 'alphaText' : 'This field should only contain letters and _', - - 'alphaMask' : /[a-z_]/i, - - - 'alphanum' : function(v){ - return alphanum.test(v); - }, - - 'alphanumText' : 'This field should only contain letters, numbers and _', - - 'alphanumMask' : /[a-z0-9_]/i - }; -}(); - -Ext.LayoutManager = function(container, config){ - Ext.LayoutManager.superclass.constructor.call(this); - this.el = Ext.get(container); - // ie scrollbar fix - if(this.el.dom == document.body && Ext.isIE && !config.allowScroll){ - document.body.scroll = "no"; - }else if(this.el.dom != document.body && this.el.getStyle('position') == 'static'){ - this.el.position('relative'); - } - this.id = this.el.id; - this.el.addClass("x-layout-container"); - - this.monitorWindowResize = true; - this.regions = {}; - this.addEvents({ - - "layout" : true, - - "regionresized" : true, - - "regioncollapsed" : true, - - "regionexpanded" : true - }); - this.updating = false; - Ext.EventManager.onWindowResize(this.onWindowResize, this, true); -}; - -Ext.extend(Ext.LayoutManager, Ext.util.Observable, { - - isUpdating : function(){ - return this.updating; - }, - - - beginUpdate : function(){ - this.updating = true; - }, - - - endUpdate : function(noLayout){ - this.updating = false; - if(!noLayout){ - this.layout(); - } - }, - - layout: function(){ - - }, - - onRegionResized : function(region, newSize){ - this.fireEvent("regionresized", region, newSize); - this.layout(); - }, - - onRegionCollapsed : function(region){ - this.fireEvent("regioncollapsed", region); - }, - - onRegionExpanded : function(region){ - this.fireEvent("regionexpanded", region); - }, - - - getViewSize : function(){ - var size; - if(this.el.dom != document.body){ - size = this.el.getSize(); - }else{ - size = {width: Ext.lib.Dom.getViewWidth(), height: Ext.lib.Dom.getViewHeight()}; - } - size.width -= this.el.getBorderWidth("lr")-this.el.getPadding("lr"); - size.height -= this.el.getBorderWidth("tb")-this.el.getPadding("tb"); - return size; - }, - - - getEl : function(){ - return this.el; - }, - - - getRegion : function(target){ - return this.regions[target.toLowerCase()]; - }, - - onWindowResize : function(){ - if(this.monitorWindowResize){ - this.layout(); - } - } -}); - -Ext.BorderLayout = function(container, config){ - config = config || {}; - Ext.BorderLayout.superclass.constructor.call(this, container, config); - this.factory = config.factory || Ext.BorderLayout.RegionFactory; - for(var i = 0, len = this.factory.validRegions.length; i < len; i++) { - var target = this.factory.validRegions[i]; - if(config[target]){ - this.addRegion(target, config[target]); - } - } -}; - -Ext.extend(Ext.BorderLayout, Ext.LayoutManager, { - - addRegion : function(target, config){ - if(!this.regions[target]){ - var r = this.factory.create(target, this, config); - this.bindRegion(target, r); - } - return this.regions[target]; - }, - - // private (kinda) - bindRegion : function(name, r){ - this.regions[name] = r; - r.on("visibilitychange", this.layout, this); - r.on("paneladded", this.layout, this); - r.on("panelremoved", this.layout, this); - r.on("invalidated", this.layout, this); - r.on("resized", this.onRegionResized, this); - r.on("collapsed", this.onRegionCollapsed, this); - r.on("expanded", this.onRegionExpanded, this); - }, - - - layout : function(){ - if(this.updating) return; - var size = this.getViewSize(); - var w = size.width, h = size.height; - var centerW = w, centerH = h, centerY = 0, centerX = 0; - //var x = 0, y = 0; - - var rs = this.regions; - var n = rs["north"], s = rs["south"], west = rs["west"], e = rs["east"], c = rs["center"]; - //if(this.hideOnLayout){ // not supported anymore - //c.el.setStyle("display", "none"); - //} - if(n && n.isVisible()){ - var b = n.getBox(); - var m = n.getMargins(); - b.width = w - (m.left+m.right); - b.x = m.left; - b.y = m.top; - centerY = b.height + b.y + m.bottom; - centerH -= centerY; - n.updateBox(this.safeBox(b)); - } - if(s && s.isVisible()){ - var b = s.getBox(); - var m = s.getMargins(); - b.width = w - (m.left+m.right); - b.x = m.left; - var totalHeight = (b.height + m.top + m.bottom); - b.y = h - totalHeight + m.top; - centerH -= totalHeight; - s.updateBox(this.safeBox(b)); - } - if(west && west.isVisible()){ - var b = west.getBox(); - var m = west.getMargins(); - b.height = centerH - (m.top+m.bottom); - b.x = m.left; - b.y = centerY + m.top; - var totalWidth = (b.width + m.left + m.right); - centerX += totalWidth; - centerW -= totalWidth; - west.updateBox(this.safeBox(b)); - } - if(e && e.isVisible()){ - var b = e.getBox(); - var m = e.getMargins(); - b.height = centerH - (m.top+m.bottom); - var totalWidth = (b.width + m.left + m.right); - b.x = w - totalWidth + m.left; - b.y = centerY + m.top; - centerW -= totalWidth; - e.updateBox(this.safeBox(b)); - } - if(c){ - var m = c.getMargins(); - var centerBox = { - x: centerX + m.left, - y: centerY + m.top, - width: centerW - (m.left+m.right), - height: centerH - (m.top+m.bottom) - }; - //if(this.hideOnLayout){ - //c.el.setStyle("display", "block"); - //} - c.updateBox(this.safeBox(centerBox)); - } - this.el.repaint(); - this.fireEvent("layout", this); - }, - - safeBox : function(box){ - box.width = Math.max(0, box.width); - box.height = Math.max(0, box.height); - return box; - }, - - - add : function(target, panel){ - target = target.toLowerCase(); - return this.regions[target].add(panel); - }, - - - remove : function(target, panel){ - target = target.toLowerCase(); - return this.regions[target].remove(panel); - }, - - - findPanel : function(panelId){ - var rs = this.regions; - for(var target in rs){ - if(typeof rs[target] != "function"){ - var p = rs[target].getPanel(panelId); - if(p){ - return p; - } - } - } - return null; - }, - - - showPanel : function(panelId) { - var rs = this.regions; - for(var target in rs){ - var r = rs[target]; - if(typeof r != "function"){ - if(r.hasPanel(panelId)){ - return r.showPanel(panelId); - } - } - } - return null; - }, - - - restoreState : function(provider){ - if(!provider){ - provider = Ext.state.Manager; - } - var sm = new Ext.LayoutStateManager(); - sm.init(this, provider); - }, - - - batchAdd : function(regions){ - this.beginUpdate(); - for(var rname in regions){ - var lr = this.regions[rname]; - if(lr){ - this.addTypedPanels(lr, regions[rname]); - } - } - this.endUpdate(); - }, - - - addTypedPanels : function(lr, ps){ - if(typeof ps == 'string'){ - lr.add(new Ext.ContentPanel(ps)); - } - else if(ps instanceof Array){ - for(var i =0, len = ps.length; i < len; i++){ - this.addTypedPanels(lr, ps[i]); - } - } - else if(!ps.events){ // raw config? - var el = ps.el; - delete ps.el; // prevent conflict - lr.add(new Ext.ContentPanel(el || Ext.id(), ps)); - } - else { // panel object assumed! - lr.add(ps); - } - } -}); - -Ext.BorderLayout.create = function(config, targetEl){ - var layout = new Ext.BorderLayout(targetEl || document.body, config); - layout.beginUpdate(); - var regions = Ext.BorderLayout.RegionFactory.validRegions; - for(var j = 0, jlen = regions.length; j < jlen; j++){ - var lr = regions[j]; - if(layout.regions[lr] && config[lr].panels){ - var r = layout.regions[lr]; - var ps = config[lr].panels; - layout.addTypedPanels(r, ps); - } - } - layout.endUpdate(); - return layout; -}; - -Ext.BorderLayout.RegionFactory = { - validRegions : ["north","south","east","west","center"], - - create : function(target, mgr, config){ - target = target.toLowerCase(); - if(config.lightweight || config.basic){ - return new Ext.BasicLayoutRegion(mgr, config, target); - } - switch(target){ - case "north": - return new Ext.NorthLayoutRegion(mgr, config); - case "south": - return new Ext.SouthLayoutRegion(mgr, config); - case "east": - return new Ext.EastLayoutRegion(mgr, config); - case "west": - return new Ext.WestLayoutRegion(mgr, config); - case "center": - return new Ext.CenterLayoutRegion(mgr, config); - } - throw 'Layout region "'+target+'" not supported.'; - } -}; - -Ext.BasicLayoutRegion = function(mgr, config, pos, skipConfig){ - this.mgr = mgr; - this.position = pos; - this.events = { - - "beforeremove" : true, - - "invalidated" : true, - - "visibilitychange" : true, - - "paneladded" : true, - - "panelremoved" : true, - - "collapsed" : true, - - "expanded" : true, - - "slideshow" : true, - - "slidehide" : true, - - "panelactivated" : true, - - "resized" : true - }; - - this.panels = new Ext.util.MixedCollection(); - this.panels.getKey = this.getPanelId.createDelegate(this); - this.box = null; - this.activePanel = null; - if(skipConfig !== true){ - this.applyConfig(config); - } -}; - -Ext.extend(Ext.BasicLayoutRegion, Ext.util.Observable, { - getPanelId : function(p){ - return p.getId(); - }, - - applyConfig : function(config){ - this.margins = config.margins || this.margins || {top: 0, left: 0, right:0, bottom: 0}; - this.config = config; - }, - - - resizeTo : function(newSize){ - var el = this.el ? this.el : - (this.activePanel ? this.activePanel.getEl() : null); - if(el){ - switch(this.position){ - case "east": - case "west": - el.setWidth(newSize); - this.fireEvent("resized", this, newSize); - break; - case "north": - case "south": - el.setHeight(newSize); - this.fireEvent("resized", this, newSize); - break; - } - } - }, - - getBox : function(){ - return this.activePanel ? this.activePanel.getEl().getBox(false, true) : null; - }, - - getMargins : function(){ - return this.margins; - }, - - updateBox : function(box){ - this.box = box; - var el = this.activePanel.getEl(); - el.dom.style.left = box.x + "px"; - el.dom.style.top = box.y + "px"; - this.activePanel.setSize(box.width, box.height); - }, - - - getEl : function(){ - return this.activePanel; - }, - - - isVisible : function(){ - return this.activePanel ? true : false; - }, - - setActivePanel : function(panel){ - panel = this.getPanel(panel); - if(this.activePanel && this.activePanel != panel){ - this.activePanel.setActiveState(false); - this.activePanel.getEl().setLeftTop(-10000,-10000); - } - this.activePanel = panel; - panel.setActiveState(true); - if(this.box){ - panel.setSize(this.box.width, this.box.height); - } - this.fireEvent("panelactivated", this, panel); - this.fireEvent("invalidated"); - }, - - - showPanel : function(panel){ - if(panel = this.getPanel(panel)){ - this.setActivePanel(panel); - } - return panel; - }, - - - getActivePanel : function(){ - return this.activePanel; - }, - - - add : function(panel){ - if(arguments.length > 1){ - for(var i = 0, len = arguments.length; i < len; i++) { - this.add(arguments[i]); - } - return null; - } - if(this.hasPanel(panel)){ - this.showPanel(panel); - return panel; - } - var el = panel.getEl(); - if(el.dom.parentNode != this.mgr.el.dom){ - this.mgr.el.dom.appendChild(el.dom); - } - if(panel.setRegion){ - panel.setRegion(this); - } - this.panels.add(panel); - el.setStyle("position", "absolute"); - if(!panel.background){ - this.setActivePanel(panel); - if(this.config.initialSize && this.panels.getCount()==1){ - this.resizeTo(this.config.initialSize); - } - } - this.fireEvent("paneladded", this, panel); - return panel; - }, - - - hasPanel : function(panel){ - if(typeof panel == "object"){ // must be panel obj - panel = panel.getId(); - } - return this.getPanel(panel) ? true : false; - }, - - - remove : function(panel, preservePanel){ - panel = this.getPanel(panel); - if(!panel){ - return null; - } - var e = {}; - this.fireEvent("beforeremove", this, panel, e); - if(e.cancel === true){ - return null; - } - var panelId = panel.getId(); - this.panels.removeKey(panelId); - return panel; - }, - - - getPanel : function(id){ - if(typeof id == "object"){ // must be panel obj - return id; - } - return this.panels.get(id); - }, - - - getPosition: function(){ - return this.position; - } -}); - -Ext.LayoutRegion = function(mgr, config, pos){ - Ext.LayoutRegion.superclass.constructor.call(this, mgr, config, pos, true); - var dh = Ext.DomHelper; - - this.el = dh.append(mgr.el.dom, {tag: "div", cls: "x-layout-panel x-layout-panel-" + this.position}, true); - - - this.titleEl = dh.append(this.el.dom, {tag: "div", unselectable: "on", cls: "x-unselectable x-layout-panel-hd x-layout-title-"+this.position, children:[ - {tag: "span", cls: "x-unselectable x-layout-panel-hd-text", unselectable: "on", html: " "}, - {tag: "div", cls: "x-unselectable x-layout-panel-hd-tools", unselectable: "on"} - ]}, true); - this.titleEl.enableDisplayMode(); - - this.titleTextEl = this.titleEl.dom.firstChild; - this.tools = Ext.get(this.titleEl.dom.childNodes[1], true); - this.closeBtn = this.createTool(this.tools.dom, "x-layout-close"); - this.closeBtn.enableDisplayMode(); - this.closeBtn.on("click", this.closeClicked, this); - this.closeBtn.hide(); - - this.createBody(config); - this.visible = true; - this.collapsed = false; - - if(config.hideWhenEmpty){ - this.hide(); - this.on("paneladded", this.validateVisibility, this); - this.on("panelremoved", this.validateVisibility, this); - } - this.applyConfig(config); -}; - -Ext.extend(Ext.LayoutRegion, Ext.BasicLayoutRegion, { - - createBody : function(){ - - this.bodyEl = this.el.createChild({tag: "div", cls: "x-layout-panel-body"}); - }, - - applyConfig : function(c){ - if(c.collapsible && this.position != "center" && !this.collapsedEl){ - var dh = Ext.DomHelper; - if(c.titlebar !== false){ - this.collapseBtn = this.createTool(this.tools.dom, "x-layout-collapse-"+this.position); - this.collapseBtn.on("click", this.collapse, this); - this.collapseBtn.enableDisplayMode(); - - if(c.showPin === true || this.showPin){ - this.stickBtn = this.createTool(this.tools.dom, "x-layout-stick"); - this.stickBtn.enableDisplayMode(); - this.stickBtn.on("click", this.expand, this); - this.stickBtn.hide(); - } - } - - this.collapsedEl = dh.append(this.mgr.el.dom, {cls: "x-layout-collapsed x-layout-collapsed-"+this.position, children:[ - {cls: "x-layout-collapsed-tools", children:[{cls: "x-layout-ctools-inner"}]} - ]}, true); - if(c.floatable !== false){ - this.collapsedEl.addClassOnOver("x-layout-collapsed-over"); - this.collapsedEl.on("click", this.collapseClick, this); - } - - if(c.collapsedTitle && (this.position == "north" || this.position== "south")) { - this.collapsedTitleTextEl = dh.append(this.collapsedEl.dom, {tag: "div", cls: "x-unselectable x-layout-panel-hd-text", - id: "message", unselectable: "on", style:{"float":"left"}}); - this.collapsedTitleTextEl.innerHTML = c.collapsedTitle; - } - this.expandBtn = this.createTool(this.collapsedEl.dom.firstChild.firstChild, "x-layout-expand-"+this.position); - this.expandBtn.on("click", this.expand, this); - } - if(this.collapseBtn){ - this.collapseBtn.setVisible(c.collapsible == true); - } - this.cmargins = c.cmargins || this.cmargins || - (this.position == "west" || this.position == "east" ? - {top: 0, left: 2, right:2, bottom: 0} : - {top: 2, left: 0, right:0, bottom: 2}); - this.margins = c.margins || this.margins || {top: 0, left: 0, right:0, bottom: 0}; - this.bottomTabs = c.tabPosition != "top"; - this.autoScroll = c.autoScroll || false; - if(this.autoScroll){ - this.bodyEl.setStyle("overflow", "auto"); - }else{ - this.bodyEl.setStyle("overflow", "hidden"); - } - //if(c.titlebar !== false){ - if((!c.titlebar && !c.title) || c.titlebar === false){ - this.titleEl.hide(); - }else{ - this.titleEl.show(); - if(c.title){ - this.titleTextEl.innerHTML = c.title; - } - } - //} - this.duration = c.duration || .30; - this.slideDuration = c.slideDuration || .45; - this.config = c; - if(c.collapsed){ - this.collapse(true); - } - if(c.hidden){ - this.hide(); - } - }, - - isVisible : function(){ - return this.visible; - }, - - - setCollapsedTitle : function(title){ - title = title || " "; - if(this.collapsedTitleTextEl){ - this.collapsedTitleTextEl.innerHTML = title; - } - }, - - getBox : function(){ - var b; - if(!this.collapsed){ - b = this.el.getBox(false, true); - }else{ - b = this.collapsedEl.getBox(false, true); - } - return b; - }, - - getMargins : function(){ - return this.collapsed ? this.cmargins : this.margins; - }, - - highlight : function(){ - this.el.addClass("x-layout-panel-dragover"); - }, - - unhighlight : function(){ - this.el.removeClass("x-layout-panel-dragover"); - }, - - updateBox : function(box){ - this.box = box; - if(!this.collapsed){ - this.el.dom.style.left = box.x + "px"; - this.el.dom.style.top = box.y + "px"; - this.updateBody(box.width, box.height); - }else{ - this.collapsedEl.dom.style.left = box.x + "px"; - this.collapsedEl.dom.style.top = box.y + "px"; - this.collapsedEl.setSize(box.width, box.height); - } - if(this.tabs){ - this.tabs.autoSizeTabs(); - } - }, - - updateBody : function(w, h){ - if(w !== null){ - this.el.setWidth(w); - w -= this.el.getBorderWidth("rl"); - if(this.config.adjustments){ - w += this.config.adjustments[0]; - } - } - if(h !== null){ - this.el.setHeight(h); - h = this.titleEl && this.titleEl.isDisplayed() ? h - (this.titleEl.getHeight()||0) : h; - h -= this.el.getBorderWidth("tb"); - if(this.config.adjustments){ - h += this.config.adjustments[1]; - } - this.bodyEl.setHeight(h); - if(this.tabs){ - h = this.tabs.syncHeight(h); - } - } - if(this.panelSize){ - w = w !== null ? w : this.panelSize.width; - h = h !== null ? h : this.panelSize.height; - } - if(this.activePanel){ - var el = this.activePanel.getEl(); - w = w !== null ? w : el.getWidth(); - h = h !== null ? h : el.getHeight(); - this.panelSize = {width: w, height: h}; - this.activePanel.setSize(w, h); - } - if(Ext.isIE && this.tabs){ - this.tabs.el.repaint(); - } - }, - - - getEl : function(){ - return this.el; - }, - - - hide : function(){ - if(!this.collapsed){ - this.el.dom.style.left = "-2000px"; - this.el.hide(); - }else{ - this.collapsedEl.dom.style.left = "-2000px"; - this.collapsedEl.hide(); - } - this.visible = false; - this.fireEvent("visibilitychange", this, false); - }, - - - show : function(){ - if(!this.collapsed){ - this.el.show(); - }else{ - this.collapsedEl.show(); - } - this.visible = true; - this.fireEvent("visibilitychange", this, true); - }, - - closeClicked : function(){ - if(this.activePanel){ - this.remove(this.activePanel); - } - }, - - collapseClick : function(e){ - if(this.isSlid){ - e.stopPropagation(); - this.slideIn(); - }else{ - e.stopPropagation(); - this.slideOut(); - } - }, - - - collapse : function(skipAnim){ - if(this.collapsed) return; - this.collapsed = true; - if(this.split){ - this.split.el.hide(); - } - if(this.config.animate && skipAnim !== true){ - this.fireEvent("invalidated", this); - this.animateCollapse(); - }else{ - this.el.setLocation(-20000,-20000); - this.el.hide(); - this.collapsedEl.show(); - this.fireEvent("collapsed", this); - this.fireEvent("invalidated", this); - } - }, - - animateCollapse : function(){ - // overridden - }, - - - expand : function(e, skipAnim){ - if(e) e.stopPropagation(); - if(!this.collapsed || this.el.hasActiveFx()) return; - if(this.isSlid){ - this.afterSlideIn(); - skipAnim = true; - } - this.collapsed = false; - if(this.config.animate && skipAnim !== true){ - this.animateExpand(); - }else{ - this.el.show(); - if(this.split){ - this.split.el.show(); - } - this.collapsedEl.setLocation(-2000,-2000); - this.collapsedEl.hide(); - this.fireEvent("invalidated", this); - this.fireEvent("expanded", this); - } - }, - - animateExpand : function(){ - // overridden - }, - - initTabs : function(){ - this.bodyEl.setStyle("overflow", "hidden"); - var ts = new Ext.TabPanel(this.bodyEl.dom, { - tabPosition: this.bottomTabs ? 'bottom' : 'top', - disableTooltips: this.config.disableTabTips - }); - if(this.config.hideTabs){ - ts.stripWrap.setDisplayed(false); - } - this.tabs = ts; - ts.resizeTabs = this.config.resizeTabs === true; - ts.minTabWidth = this.config.minTabWidth || 40; - ts.maxTabWidth = this.config.maxTabWidth || 250; - ts.preferredTabWidth = this.config.preferredTabWidth || 150; - ts.monitorResize = false; - ts.bodyEl.setStyle("overflow", this.config.autoScroll ? "auto" : "hidden"); - ts.bodyEl.addClass('x-layout-tabs-body'); - this.panels.each(this.initPanelAsTab, this); - }, - - initPanelAsTab : function(panel){ - var ti = this.tabs.addTab(panel.getEl().id, panel.getTitle(), null, - this.config.closeOnTab && panel.isClosable()); - if(panel.tabTip !== undefined){ - ti.setTooltip(panel.tabTip); - } - ti.on("activate", function(){ - this.setActivePanel(panel); - }, this); - if(this.config.closeOnTab){ - ti.on("beforeclose", function(t, e){ - e.cancel = true; - this.remove(panel); - }, this); - } - return ti; - }, - - updatePanelTitle : function(panel, title){ - if(this.activePanel == panel){ - this.updateTitle(title); - } - if(this.tabs){ - var ti = this.tabs.getTab(panel.getEl().id); - ti.setText(title); - if(panel.tabTip !== undefined){ - ti.setTooltip(panel.tabTip); - } - } - }, - - updateTitle : function(title){ - if(this.titleTextEl && !this.config.title){ - this.titleTextEl.innerHTML = (typeof title != "undefined" && title.length > 0 ? title : " "); - } - }, - - setActivePanel : function(panel){ - panel = this.getPanel(panel); - if(this.activePanel && this.activePanel != panel){ - this.activePanel.setActiveState(false); - } - this.activePanel = panel; - panel.setActiveState(true); - if(this.panelSize){ - panel.setSize(this.panelSize.width, this.panelSize.height); - } - if(this.closeBtn){ - this.closeBtn.setVisible(!this.config.closeOnTab && !this.isSlid && panel.isClosable()); - } - this.updateTitle(panel.getTitle()); - if(this.tabs){ - this.fireEvent("invalidated", this); - } - this.fireEvent("panelactivated", this, panel); - }, - - - showPanel : function(panel){ - if(panel = this.getPanel(panel)){ - if(this.tabs){ - var tab = this.tabs.getTab(panel.getEl().id); - if(tab.isHidden()){ - this.tabs.unhideTab(tab.id); - } - tab.activate(); - }else{ - this.setActivePanel(panel); - } - } - return panel; - }, - - - getActivePanel : function(){ - return this.activePanel; - }, - - validateVisibility : function(){ - if(this.panels.getCount() < 1){ - this.updateTitle(" "); - this.closeBtn.hide(); - this.hide(); - }else{ - if(!this.isVisible()){ - this.show(); - } - } - }, - - - add : function(panel){ - if(arguments.length > 1){ - for(var i = 0, len = arguments.length; i < len; i++) { - this.add(arguments[i]); - } - return null; - } - if(this.hasPanel(panel)){ - this.showPanel(panel); - return panel; - } - panel.setRegion(this); - this.panels.add(panel); - if(this.panels.getCount() == 1 && !this.config.alwaysShowTabs){ - this.bodyEl.dom.appendChild(panel.getEl().dom); - if(panel.background !== true){ - this.setActivePanel(panel); - } - this.fireEvent("paneladded", this, panel); - return panel; - } - if(!this.tabs){ - this.initTabs(); - }else{ - this.initPanelAsTab(panel); - } - if(panel.background !== true){ - this.tabs.activate(panel.getEl().id); - } - this.fireEvent("paneladded", this, panel); - return panel; - }, - - - hidePanel : function(panel){ - if(this.tabs && (panel = this.getPanel(panel))){ - this.tabs.hideTab(panel.getEl().id); - } - }, - - - unhidePanel : function(panel){ - if(this.tabs && (panel = this.getPanel(panel))){ - this.tabs.unhideTab(panel.getEl().id); - } - }, - - clearPanels : function(){ - while(this.panels.getCount() > 0){ - this.remove(this.panels.first()); - } - }, - - - remove : function(panel, preservePanel){ - panel = this.getPanel(panel); - if(!panel){ - return null; - } - var e = {}; - this.fireEvent("beforeremove", this, panel, e); - if(e.cancel === true){ - return null; - } - preservePanel = (typeof preservePanel != "undefined" ? preservePanel : (this.config.preservePanels === true || panel.preserve === true)); - var panelId = panel.getId(); - this.panels.removeKey(panelId); - if(preservePanel){ - document.body.appendChild(panel.getEl().dom); - } - if(this.tabs){ - this.tabs.removeTab(panel.getEl().id); - }else if (!preservePanel){ - this.bodyEl.dom.removeChild(panel.getEl().dom); - } - if(this.panels.getCount() == 1 && this.tabs && !this.config.alwaysShowTabs){ - var p = this.panels.first(); - var tempEl = document.createElement("div"); // temp holder to keep IE from deleting the node - tempEl.appendChild(p.getEl().dom); - this.bodyEl.update(""); - this.bodyEl.dom.appendChild(p.getEl().dom); - tempEl = null; - this.updateTitle(p.getTitle()); - this.tabs = null; - this.bodyEl.setStyle("overflow", this.config.autoScroll ? "auto" : "hidden"); - this.setActivePanel(p); - } - panel.setRegion(null); - if(this.activePanel == panel){ - this.activePanel = null; - } - if(this.config.autoDestroy !== false && preservePanel !== true){ - try{panel.destroy();}catch(e){} - } - this.fireEvent("panelremoved", this, panel); - return panel; - }, - - - getTabs : function(){ - return this.tabs; - }, - - createTool : function(parentEl, className){ - var btn = Ext.DomHelper.append(parentEl, {tag: "div", cls: "x-layout-tools-button", - children: [{tag: "div", cls: "x-layout-tools-button-inner " + className, html: " "}]}, true); - btn.addClassOnOver("x-layout-tools-button-over"); - return btn; - } -}); - -Ext.SplitLayoutRegion = function(mgr, config, pos, cursor){ - this.cursor = cursor; - Ext.SplitLayoutRegion.superclass.constructor.call(this, mgr, config, pos); -}; - -Ext.extend(Ext.SplitLayoutRegion, Ext.LayoutRegion, { - splitTip : "Drag to resize.", - collapsibleSplitTip : "Drag to resize. Double click to hide.", - useSplitTips : false, - - applyConfig : function(config){ - Ext.SplitLayoutRegion.superclass.applyConfig.call(this, config); - if(config.split){ - if(!this.split){ - var splitEl = Ext.DomHelper.append(this.mgr.el.dom, - {tag: "div", id: this.el.id + "-split", cls: "x-layout-split x-layout-split-"+this.position, html: " "}); - - this.split = new Ext.SplitBar(splitEl, this.el, this.orientation); - this.split.on("moved", this.onSplitMove, this); - this.split.useShim = config.useShim === true; - this.split.getMaximumSize = this[this.position == 'north' || this.position == 'south' ? 'getVMaxSize' : 'getHMaxSize'].createDelegate(this); - if(this.useSplitTips){ - this.split.el.dom.title = config.collapsible ? this.collapsibleSplitTip : this.splitTip; - } - if(config.collapsible){ - this.split.el.on("dblclick", this.collapse, this); - } - } - if(typeof config.minSize != "undefined"){ - this.split.minSize = config.minSize; - } - if(typeof config.maxSize != "undefined"){ - this.split.maxSize = config.maxSize; - } - if(config.hideWhenEmpty || config.hidden){ - this.hideSplitter(); - } - } - }, - - getHMaxSize : function(){ - var cmax = this.config.maxSize || 10000; - var center = this.mgr.getRegion("center"); - return Math.min(cmax, (this.el.getWidth()+center.getEl().getWidth())-center.getMinWidth()); - }, - - getVMaxSize : function(){ - var cmax = this.config.maxSize || 10000; - var center = this.mgr.getRegion("center"); - return Math.min(cmax, (this.el.getHeight()+center.getEl().getHeight())-center.getMinHeight()); - }, - - onSplitMove : function(split, newSize){ - this.fireEvent("resized", this, newSize); - }, - - - getSplitBar : function(){ - return this.split; - }, - - hide : function(){ - this.hideSplitter(); - Ext.SplitLayoutRegion.superclass.hide.call(this); - }, - - hideSplitter : function(){ - if(this.split){ - this.split.el.setLocation(-2000,-2000); - this.split.el.hide(); - } - }, - - show : function(){ - if(this.split){ - this.split.el.show(); - } - Ext.SplitLayoutRegion.superclass.show.call(this); - }, - - beforeSlide: function(){ - if(Ext.isGecko){// firefox overflow auto bug workaround - this.bodyEl.clip(); - if(this.tabs) this.tabs.bodyEl.clip(); - if(this.activePanel){ - this.activePanel.getEl().clip(); - - if(this.activePanel.beforeSlide){ - this.activePanel.beforeSlide(); - } - } - } - }, - - afterSlide : function(){ - if(Ext.isGecko){// firefox overflow auto bug workaround - this.bodyEl.unclip(); - if(this.tabs) this.tabs.bodyEl.unclip(); - if(this.activePanel){ - this.activePanel.getEl().unclip(); - if(this.activePanel.afterSlide){ - this.activePanel.afterSlide(); - } - } - } - }, - - initAutoHide : function(){ - if(this.autoHide !== false){ - if(!this.autoHideHd){ - var st = new Ext.util.DelayedTask(this.slideIn, this); - this.autoHideHd = { - "mouseout": function(e){ - if(!e.within(this.el, true)){ - st.delay(500); - } - }, - "mouseover" : function(e){ - st.cancel(); - }, - scope : this - }; - } - this.el.on(this.autoHideHd); - } - }, - - clearAutoHide : function(){ - if(this.autoHide !== false){ - this.el.un("mouseout", this.autoHideHd.mouseout); - this.el.un("mouseover", this.autoHideHd.mouseover); - } - }, - - clearMonitor : function(){ - Ext.get(document).un("click", this.slideInIf, this); - }, - - // these names are backwards but not changed for compat - slideOut : function(){ - if(this.isSlid || this.el.hasActiveFx()){ - return; - } - this.isSlid = true; - if(this.collapseBtn){ - this.collapseBtn.hide(); - } - this.closeBtnState = this.closeBtn.getStyle('display'); - this.closeBtn.hide(); - if(this.stickBtn){ - this.stickBtn.show(); - } - this.el.show(); - this.el.alignTo(this.collapsedEl, this.getCollapseAnchor()); - this.beforeSlide(); - this.el.setStyle("z-index", 10001); - this.el.slideIn(this.getSlideAnchor(), { - callback: function(){ - this.afterSlide(); - this.initAutoHide(); - Ext.get(document).on("click", this.slideInIf, this); - this.fireEvent("slideshow", this); - }, - scope: this, - block: true - }); - }, - - afterSlideIn : function(){ - this.clearAutoHide(); - this.isSlid = false; - this.clearMonitor(); - this.el.setStyle("z-index", ""); - if(this.collapseBtn){ - this.collapseBtn.show(); - } - this.closeBtn.setStyle('display', this.closeBtnState); - if(this.stickBtn){ - this.stickBtn.hide(); - } - this.fireEvent("slidehide", this); - }, - - slideIn : function(cb){ - if(!this.isSlid || this.el.hasActiveFx()){ - Ext.callback(cb); - return; - } - this.isSlid = false; - this.beforeSlide(); - this.el.slideOut(this.getSlideAnchor(), { - callback: function(){ - this.el.setLeftTop(-10000, -10000); - this.afterSlide(); - this.afterSlideIn(); - Ext.callback(cb); - }, - scope: this, - block: true - }); - }, - - slideInIf : function(e){ - if(!e.within(this.el)){ - this.slideIn(); - } - }, - - animateCollapse : function(){ - this.beforeSlide(); - this.el.setStyle("z-index", 20000); - var anchor = this.getSlideAnchor(); - this.el.slideOut(anchor, { - callback : function(){ - this.el.setStyle("z-index", ""); - this.collapsedEl.slideIn(anchor, {duration:.3}); - this.afterSlide(); - this.el.setLocation(-10000,-10000); - this.el.hide(); - this.fireEvent("collapsed", this); - }, - scope: this, - block: true - }); - }, - - animateExpand : function(){ - this.beforeSlide(); - this.el.alignTo(this.collapsedEl, this.getCollapseAnchor(), this.getExpandAdj()); - this.el.setStyle("z-index", 20000); - this.collapsedEl.hide({ - duration:.1 - }); - this.el.slideIn(this.getSlideAnchor(), { - callback : function(){ - this.el.setStyle("z-index", ""); - this.afterSlide(); - if(this.split){ - this.split.el.show(); - } - this.fireEvent("invalidated", this); - this.fireEvent("expanded", this); - }, - scope: this, - block: true - }); - }, - - anchors : { - "west" : "left", - "east" : "right", - "north" : "top", - "south" : "bottom" - }, - - sanchors : { - "west" : "l", - "east" : "r", - "north" : "t", - "south" : "b" - }, - - canchors : { - "west" : "tl-tr", - "east" : "tr-tl", - "north" : "tl-bl", - "south" : "bl-tl" - }, - - getAnchor : function(){ - return this.anchors[this.position]; - }, - - getCollapseAnchor : function(){ - return this.canchors[this.position]; - }, - - getSlideAnchor : function(){ - return this.sanchors[this.position]; - }, - - getAlignAdj : function(){ - var cm = this.cmargins; - switch(this.position){ - case "west": - return [0, 0]; - break; - case "east": - return [0, 0]; - break; - case "north": - return [0, 0]; - break; - case "south": - return [0, 0]; - break; - } - }, - - getExpandAdj : function(){ - var c = this.collapsedEl, cm = this.cmargins; - switch(this.position){ - case "west": - return [-(cm.right+c.getWidth()+cm.left), 0]; - break; - case "east": - return [cm.right+c.getWidth()+cm.left, 0]; - break; - case "north": - return [0, -(cm.top+cm.bottom+c.getHeight())]; - break; - case "south": - return [0, cm.top+cm.bottom+c.getHeight()]; - break; - } - } -}); - -Ext.CenterLayoutRegion = function(mgr, config){ - Ext.CenterLayoutRegion.superclass.constructor.call(this, mgr, config, "center"); - this.visible = true; - this.minWidth = config.minWidth || 20; - this.minHeight = config.minHeight || 20; -}; - -Ext.extend(Ext.CenterLayoutRegion, Ext.LayoutRegion, { - hide : function(){ - // center panel can't be hidden - }, - - show : function(){ - // center panel can't be hidden - }, - - getMinWidth: function(){ - return this.minWidth; - }, - - getMinHeight: function(){ - return this.minHeight; - } -}); - - -Ext.NorthLayoutRegion = function(mgr, config){ - Ext.NorthLayoutRegion.superclass.constructor.call(this, mgr, config, "north", "n-resize"); - if(this.split){ - this.split.placement = Ext.SplitBar.TOP; - this.split.orientation = Ext.SplitBar.VERTICAL; - this.split.el.addClass("x-layout-split-v"); - } - var size = config.initialSize || config.height; - if(typeof size != "undefined"){ - this.el.setHeight(size); - } -}; -Ext.extend(Ext.NorthLayoutRegion, Ext.SplitLayoutRegion, { - orientation: Ext.SplitBar.VERTICAL, - getBox : function(){ - if(this.collapsed){ - return this.collapsedEl.getBox(); - } - var box = this.el.getBox(); - if(this.split){ - box.height += this.split.el.getHeight(); - } - return box; - }, - - updateBox : function(box){ - if(this.split && !this.collapsed){ - box.height -= this.split.el.getHeight(); - this.split.el.setLeft(box.x); - this.split.el.setTop(box.y+box.height); - this.split.el.setWidth(box.width); - } - if(this.collapsed){ - this.updateBody(box.width, null); - } - Ext.NorthLayoutRegion.superclass.updateBox.call(this, box); - } -}); - -Ext.SouthLayoutRegion = function(mgr, config){ - Ext.SouthLayoutRegion.superclass.constructor.call(this, mgr, config, "south", "s-resize"); - if(this.split){ - this.split.placement = Ext.SplitBar.BOTTOM; - this.split.orientation = Ext.SplitBar.VERTICAL; - this.split.el.addClass("x-layout-split-v"); - } - var size = config.initialSize || config.height; - if(typeof size != "undefined"){ - this.el.setHeight(size); - } -}; -Ext.extend(Ext.SouthLayoutRegion, Ext.SplitLayoutRegion, { - orientation: Ext.SplitBar.VERTICAL, - getBox : function(){ - if(this.collapsed){ - return this.collapsedEl.getBox(); - } - var box = this.el.getBox(); - if(this.split){ - var sh = this.split.el.getHeight(); - box.height += sh; - box.y -= sh; - } - return box; - }, - - updateBox : function(box){ - if(this.split && !this.collapsed){ - var sh = this.split.el.getHeight(); - box.height -= sh; - box.y += sh; - this.split.el.setLeft(box.x); - this.split.el.setTop(box.y-sh); - this.split.el.setWidth(box.width); - } - if(this.collapsed){ - this.updateBody(box.width, null); - } - Ext.SouthLayoutRegion.superclass.updateBox.call(this, box); - } -}); - -Ext.EastLayoutRegion = function(mgr, config){ - Ext.EastLayoutRegion.superclass.constructor.call(this, mgr, config, "east", "e-resize"); - if(this.split){ - this.split.placement = Ext.SplitBar.RIGHT; - this.split.orientation = Ext.SplitBar.HORIZONTAL; - this.split.el.addClass("x-layout-split-h"); - } - var size = config.initialSize || config.width; - if(typeof size != "undefined"){ - this.el.setWidth(size); - } -}; -Ext.extend(Ext.EastLayoutRegion, Ext.SplitLayoutRegion, { - orientation: Ext.SplitBar.HORIZONTAL, - getBox : function(){ - if(this.collapsed){ - return this.collapsedEl.getBox(); - } - var box = this.el.getBox(); - if(this.split){ - var sw = this.split.el.getWidth(); - box.width += sw; - box.x -= sw; - } - return box; - }, - - updateBox : function(box){ - if(this.split && !this.collapsed){ - var sw = this.split.el.getWidth(); - box.width -= sw; - this.split.el.setLeft(box.x); - this.split.el.setTop(box.y); - this.split.el.setHeight(box.height); - box.x += sw; - } - if(this.collapsed){ - this.updateBody(null, box.height); - } - Ext.EastLayoutRegion.superclass.updateBox.call(this, box); - } -}); - -Ext.WestLayoutRegion = function(mgr, config){ - Ext.WestLayoutRegion.superclass.constructor.call(this, mgr, config, "west", "w-resize"); - if(this.split){ - this.split.placement = Ext.SplitBar.LEFT; - this.split.orientation = Ext.SplitBar.HORIZONTAL; - this.split.el.addClass("x-layout-split-h"); - } - var size = config.initialSize || config.width; - if(typeof size != "undefined"){ - this.el.setWidth(size); - } -}; -Ext.extend(Ext.WestLayoutRegion, Ext.SplitLayoutRegion, { - orientation: Ext.SplitBar.HORIZONTAL, - getBox : function(){ - if(this.collapsed){ - return this.collapsedEl.getBox(); - } - var box = this.el.getBox(); - if(this.split){ - box.width += this.split.el.getWidth(); - } - return box; - }, - - updateBox : function(box){ - if(this.split && !this.collapsed){ - var sw = this.split.el.getWidth(); - box.width -= sw; - this.split.el.setLeft(box.x+box.width); - this.split.el.setTop(box.y); - this.split.el.setHeight(box.height); - } - if(this.collapsed){ - this.updateBody(null, box.height); - } - Ext.WestLayoutRegion.superclass.updateBox.call(this, box); - } -}); - - -Ext.LayoutStateManager = function(layout){ - // default empty state - this.state = { - north: {}, - south: {}, - east: {}, - west: {} - }; -}; - -Ext.LayoutStateManager.prototype = { - init : function(layout, provider){ - this.provider = provider; - var state = provider.get(layout.id+"-layout-state"); - if(state){ - var wasUpdating = layout.isUpdating(); - if(!wasUpdating){ - layout.beginUpdate(); - } - for(var key in state){ - if(typeof state[key] != "function"){ - var rstate = state[key]; - var r = layout.getRegion(key); - if(r && rstate){ - if(rstate.size){ - r.resizeTo(rstate.size); - } - if(rstate.collapsed == true){ - r.collapse(true); - }else{ - r.expand(null, true); - } - } - } - } - if(!wasUpdating){ - layout.endUpdate(); - } - this.state = state; - } - this.layout = layout; - layout.on("regionresized", this.onRegionResized, this); - layout.on("regioncollapsed", this.onRegionCollapsed, this); - layout.on("regionexpanded", this.onRegionExpanded, this); - }, - - storeState : function(){ - this.provider.set(this.layout.id+"-layout-state", this.state); - }, - - onRegionResized : function(region, newSize){ - this.state[region.getPosition()].size = newSize; - this.storeState(); - }, - - onRegionCollapsed : function(region){ - this.state[region.getPosition()].collapsed = true; - this.storeState(); - }, - - onRegionExpanded : function(region){ - this.state[region.getPosition()].collapsed = false; - this.storeState(); - } -}; - -Ext.ContentPanel = function(el, config, content){ - if(el.autoCreate){ - config = el; - el = Ext.id(); - } - this.el = Ext.get(el); - if(!this.el && config && config.autoCreate){ - if(typeof config.autoCreate == "object"){ - if(!config.autoCreate.id){ - config.autoCreate.id = config.id||el; - } - this.el = Ext.DomHelper.append(document.body, - config.autoCreate, true); - }else{ - this.el = Ext.DomHelper.append(document.body, - {tag: "div", cls: "x-layout-inactive-content", id: config.id||el}, true); - } - } - this.closable = false; - this.loaded = false; - this.active = false; - if(typeof config == "string"){ - this.title = config; - }else{ - Ext.apply(this, config); - } - if(this.resizeEl){ - this.resizeEl = Ext.get(this.resizeEl, true); - }else{ - this.resizeEl = this.el; - } - this.addEvents({ - - "activate" : true, - - "deactivate" : true, - - - "resize" : true - }); - if(this.autoScroll){ - this.resizeEl.setStyle("overflow", "auto"); - } - content = content || this.content; - if(content){ - this.setContent(content); - } - if(config && config.url){ - this.setUrl(this.url, this.params, this.loadOnce); - } - Ext.ContentPanel.superclass.constructor.call(this); -}; - -Ext.extend(Ext.ContentPanel, Ext.util.Observable, { - tabTip:'', - setRegion : function(region){ - this.region = region; - if(region){ - this.el.replaceClass("x-layout-inactive-content", "x-layout-active-content"); - }else{ - this.el.replaceClass("x-layout-active-content", "x-layout-inactive-content"); - } - }, - - - getToolbar : function(){ - return this.toolbar; - }, - - setActiveState : function(active){ - this.active = active; - if(!active){ - this.fireEvent("deactivate", this); - }else{ - this.fireEvent("activate", this); - } - }, - - setContent : function(content, loadScripts){ - this.el.update(content, loadScripts); - }, - - ignoreResize : function(w, h){ - if(this.lastSize && this.lastSize.width == w && this.lastSize.height == h){ - return true; - }else{ - this.lastSize = {width: w, height: h}; - return false; - } - }, - - getUpdateManager : function(){ - return this.el.getUpdateManager(); - }, - - load : function(){ - var um = this.el.getUpdateManager(); - um.update.apply(um, arguments); - return this; - }, - - - - setUrl : function(url, params, loadOnce){ - if(this.refreshDelegate){ - this.removeListener("activate", this.refreshDelegate); - } - this.refreshDelegate = this._handleRefresh.createDelegate(this, [url, params, loadOnce]); - this.on("activate", this.refreshDelegate); - return this.el.getUpdateManager(); - }, - - _handleRefresh : function(url, params, loadOnce){ - if(!loadOnce || !this.loaded){ - var updater = this.el.getUpdateManager(); - updater.update(url, params, this._setLoaded.createDelegate(this)); - } - }, - - _setLoaded : function(){ - this.loaded = true; - }, - - - getId : function(){ - return this.el.id; - }, - - - getEl : function(){ - return this.el; - }, - - adjustForComponents : function(width, height){ - if(this.resizeEl != this.el){ - width -= this.el.getFrameWidth('lr'); - height -= this.el.getFrameWidth('tb'); - } - if(this.toolbar){ - var te = this.toolbar.getEl(); - height -= te.getHeight(); - te.setWidth(width); - } - if(this.adjustments){ - width += this.adjustments[0]; - height += this.adjustments[1]; - } - return {"width": width, "height": height}; - }, - - setSize : function(width, height){ - if(this.fitToFrame && !this.ignoreResize(width, height)){ - if(this.fitContainer && this.resizeEl != this.el){ - this.el.setSize(width, height); - } - var size = this.adjustForComponents(width, height); - this.resizeEl.setSize(this.autoWidth ? "auto" : size.width, this.autoHeight ? "auto" : size.height); - this.fireEvent('resize', this, size.width, size.height); - } - }, - - - getTitle : function(){ - return this.title; - }, - - - setTitle : function(title){ - this.title = title; - if(this.region){ - this.region.updatePanelTitle(this, title); - } - }, - - - isClosable : function(){ - return this.closable; - }, - - beforeSlide : function(){ - this.el.clip(); - this.resizeEl.clip(); - }, - - afterSlide : function(){ - this.el.unclip(); - this.resizeEl.unclip(); - }, - - - refresh : function(){ - if(this.refreshDelegate){ - this.loaded = false; - this.refreshDelegate(); - } - }, - - - destroy : function(){ - this.el.removeAllListeners(); - var tempEl = document.createElement("span"); - tempEl.appendChild(this.el.dom); - tempEl.innerHTML = ""; - this.el.remove(); - this.el = null; - } -}); - - -Ext.GridPanel = function(grid, config){ - this.wrapper = Ext.DomHelper.append(document.body, // wrapper for IE7 strict & safari scroll issue - {tag: "div", cls: "x-layout-grid-wrapper x-layout-inactive-content"}, true); - this.wrapper.dom.appendChild(grid.getGridEl().dom); - Ext.GridPanel.superclass.constructor.call(this, this.wrapper, config); - if(this.toolbar){ - this.toolbar.el.insertBefore(this.wrapper.dom.firstChild); - } - grid.monitorWindowResize = false; // turn off autosizing - grid.autoHeight = false; - grid.autoWidth = false; - this.grid = grid; - this.grid.getGridEl().replaceClass("x-layout-inactive-content", "x-layout-component-panel"); -}; - -Ext.extend(Ext.GridPanel, Ext.ContentPanel, { - getId : function(){ - return this.grid.id; - }, - - - getGrid : function(){ - return this.grid; - }, - - setSize : function(width, height){ - if(!this.ignoreResize(width, height)){ - var grid = this.grid; - var size = this.adjustForComponents(width, height); - grid.getGridEl().setSize(size.width, size.height); - grid.autoSize(); - } - }, - - beforeSlide : function(){ - this.grid.getView().scroller.clip(); - }, - - afterSlide : function(){ - this.grid.getView().scroller.unclip(); - }, - - destroy : function(){ - this.grid.destroy(); - delete this.grid; - Ext.GridPanel.superclass.destroy.call(this); - } -}); - - - -Ext.NestedLayoutPanel = function(layout, config){ - Ext.NestedLayoutPanel.superclass.constructor.call(this, layout.getEl(), config); - layout.monitorWindowResize = false; // turn off autosizing - this.layout = layout; - this.layout.getEl().addClass("x-layout-nested-layout"); -}; - -Ext.extend(Ext.NestedLayoutPanel, Ext.ContentPanel, { - - setSize : function(width, height){ - if(!this.ignoreResize(width, height)){ - var size = this.adjustForComponents(width, height); - var el = this.layout.getEl(); - el.setSize(size.width, size.height); - var touch = el.dom.offsetWidth; - this.layout.layout(); - // ie requires a double layout on the first pass - if(Ext.isIE && !this.initialized){ - this.initialized = true; - this.layout.layout(); - } - } - }, - - - getLayout : function(){ - return this.layout; - } -}); - -Ext.ScrollPanel = function(el, config, content){ - config = config || {}; - config.fitToFrame = true; - Ext.ScrollPanel.superclass.constructor.call(this, el, config, content); - - this.el.dom.style.overflow = "hidden"; - var wrap = this.el.wrap({cls: "x-scroller x-layout-inactive-content"}); - this.el.removeClass("x-layout-inactive-content"); - this.el.on("mousewheel", this.onWheel, this); - - var up = wrap.createChild({cls: "x-scroller-up", html: " "}, this.el.dom); - var down = wrap.createChild({cls: "x-scroller-down", html: " "}); - up.unselectable(); down.unselectable(); - up.on("click", this.scrollUp, this); - down.on("click", this.scrollDown, this); - up.addClassOnOver("x-scroller-btn-over"); - down.addClassOnOver("x-scroller-btn-over"); - up.addClassOnClick("x-scroller-btn-click"); - down.addClassOnClick("x-scroller-btn-click"); - this.adjustments = [0, -(up.getHeight() + down.getHeight())]; - - this.resizeEl = this.el; - this.el = wrap; this.up = up; this.down = down; -}; - -Ext.extend(Ext.ScrollPanel, Ext.ContentPanel, { - increment : 100, - wheelIncrement : 5, - scrollUp : function(){ - this.resizeEl.scroll("up", this.increment, {callback: this.afterScroll, scope: this}); - }, - - scrollDown : function(){ - this.resizeEl.scroll("down", this.increment, {callback: this.afterScroll, scope: this}); - }, - - afterScroll : function(){ - var el = this.resizeEl; - var t = el.dom.scrollTop, h = el.dom.scrollHeight, ch = el.dom.clientHeight; - this.up[t == 0 ? "addClass" : "removeClass"]("x-scroller-btn-disabled"); - this.down[h - t <= ch ? "addClass" : "removeClass"]("x-scroller-btn-disabled"); - }, - - setSize : function(){ - Ext.ScrollPanel.superclass.setSize.apply(this, arguments); - this.afterScroll(); - }, - - onWheel : function(e){ - var d = e.getWheelDelta(); - this.resizeEl.dom.scrollTop -= (d*this.wheelIncrement); - this.afterScroll(); - e.stopEvent(); - }, - - setContent : function(content, loadScripts){ - this.resizeEl.update(content, loadScripts); - } - -}); - -Ext.ReaderLayout = function(config, renderTo){ - var c = config || {size:{}}; - Ext.ReaderLayout.superclass.constructor.call(this, renderTo || document.body, { - north: c.north !== false ? Ext.apply({ - split:false, - initialSize: 32, - titlebar: false - }, c.north) : false, - west: c.west !== false ? Ext.apply({ - split:true, - initialSize: 200, - minSize: 175, - maxSize: 400, - titlebar: true, - collapsible: true, - animate: true, - margins:{left:5,right:0,bottom:5,top:5}, - cmargins:{left:5,right:5,bottom:5,top:5} - }, c.west) : false, - east: c.east !== false ? Ext.apply({ - split:true, - initialSize: 200, - minSize: 175, - maxSize: 400, - titlebar: true, - collapsible: true, - animate: true, - margins:{left:0,right:5,bottom:5,top:5}, - cmargins:{left:5,right:5,bottom:5,top:5} - }, c.east) : false, - center: Ext.apply({ - tabPosition: 'top', - autoScroll:false, - closeOnTab: true, - titlebar:false, - margins:{left:c.west!==false ? 0 : 5,right:c.east!==false ? 0 : 5,bottom:5,top:2} - }, c.center) - }); - - this.el.addClass('x-reader'); - - this.beginUpdate(); - - var inner = new Ext.BorderLayout(Ext.get(document.body).createChild(), { - south: c.preview !== false ? Ext.apply({ - split:true, - initialSize: 200, - minSize: 100, - autoScroll:true, - collapsible:true, - titlebar: true, - cmargins:{top:5,left:0, right:0, bottom:0} - }, c.preview) : false, - center: Ext.apply({ - autoScroll:false, - titlebar:false, - minHeight:200 - }, c.listView) - }); - this.add('center', new Ext.NestedLayoutPanel(inner, - Ext.apply({title: c.mainTitle || '',tabTip:''},c.innerPanelCfg))); - - this.endUpdate(); - - this.regions.preview = inner.getRegion('south'); - this.regions.listView = inner.getRegion('center'); -}; - -Ext.extend(Ext.ReaderLayout, Ext.BorderLayout); - -Ext.grid.Grid = function(container, config){ - // initialize the container - this.container = Ext.get(container); - this.container.update(""); - this.container.setStyle("overflow", "hidden"); - this.container.addClass('x-grid-container'); - - this.id = this.container.id; - - Ext.apply(this, config); - // check and correct shorthanded configs - if(this.ds){ - this.dataSource = this.ds; - delete this.ds; - } - if(this.cm){ - this.colModel = this.cm; - delete this.cm; - } - if(this.sm){ - this.selModel = this.sm; - delete this.sm; - } - - if(this.width){ - this.container.setWidth(this.width); - } - - if(this.height){ - this.container.setHeight(this.height); - } - - this.addEvents({ - // raw events - - "click" : true, - - "dblclick" : true, - - "contextmenu" : true, - - "mousedown" : true, - - "mouseup" : true, - - "mouseover" : true, - - "mouseout" : true, - - "keypress" : true, - - "keydown" : true, - - // custom events - - - "cellclick" : true, - - "celldblclick" : true, - - "rowclick" : true, - - "rowdblclick" : true, - - "headerclick" : true, - - "headerdblclick" : true, - - "rowcontextmenu" : true, - - "cellcontextmenu" : true, - - "headercontextmenu" : true, - - "bodyscroll" : true, - - "columnresize" : true, - - "columnmove" : true, - - "startdrag" : true, - - "enddrag" : true, - - "dragdrop" : true, - - "dragover" : true, - - "dragenter" : true, - - "dragout" : true, - - render : true - }); - - Ext.grid.Grid.superclass.constructor.call(this); -}; -Ext.extend(Ext.grid.Grid, Ext.util.Observable, { - - minColumnWidth : 25, - - - autoSizeColumns : false, - - - autoSizeHeaders : true, - - - monitorWindowResize : true, - - - maxRowsToMeasure : 0, - - - trackMouseOver : true, - - - enableDragDrop : false, - - - enableColumnMove : true, - - - enableColumnHide : true, - - - enableRowHeightSync : false, - - - stripeRows : true, - - - autoHeight : false, - - - autoExpandColumn : false, - - - autoExpandMin : 50, - - - autoExpandMax : 1000, - - - view : null, - - - loadMask : false, - - // private - rendered : false, - - - - render : function(){ - var c = this.container; - // try to detect autoHeight/width mode - if((!c.dom.offsetHeight || c.dom.offsetHeight < 20) || c.getStyle("height") == "auto"){ - this.autoHeight = true; - } - var view = this.getView(); - view.init(this); - - c.on("click", this.onClick, this); - c.on("dblclick", this.onDblClick, this); - c.on("contextmenu", this.onContextMenu, this); - c.on("keydown", this.onKeyDown, this); - - this.relayEvents(c, ["mousedown","mouseup","mouseover","mouseout","keypress"]); - - this.getSelectionModel().init(this); - - view.render(); - - if(this.loadMask){ - this.loadMask = new Ext.LoadMask(this.container, - Ext.apply({store:this.dataSource}, this.loadMask)); - } - this.rendered = true; - this.fireEvent('render', this); - return this; - }, - - reconfigure : function(dataSource, colModel){ - if(this.loadMask){ - this.loadMask.destroy(); - this.loadMask = new Ext.LoadMask(this.container, - Ext.apply({store:dataSource}, this.loadMask)); - } - this.view.bind(dataSource, colModel); - this.dataSource = dataSource; - this.colModel = colModel; - this.view.refresh(true); - }, - - onKeyDown : function(e){ - this.fireEvent("keydown", e); - }, - - - destroy : function(removeEl, keepListeners){ - if(this.loadMask){ - this.loadMask.destroy(); - } - var c = this.container; - c.removeAllListeners(); - this.view.destroy(); - this.colModel.purgeListeners(); - if(!keepListeners){ - this.purgeListeners(); - } - c.update(""); - if(removeEl === true){ - c.remove(); - } - }, - - // private - processEvent : function(name, e){ - this.fireEvent(name, e); - var t = e.getTarget(); - var v = this.view; - var header = v.findHeaderIndex(t); - if(header !== false){ - this.fireEvent("header" + name, this, header, e); - }else{ - var row = v.findRowIndex(t); - var cell = v.findCellIndex(t); - if(row !== false){ - this.fireEvent("row" + name, this, row, e); - if(cell !== false){ - this.fireEvent("cell" + name, this, row, cell, e); - } - } - } - }, - - // private - onClick : function(e){ - this.processEvent("click", e); - }, - - // private - onContextMenu : function(e, t){ - this.processEvent("contextmenu", e); - }, - - // private - onDblClick : function(e){ - this.processEvent("dblclick", e); - }, - - walkCells : function(row, col, step, fn, scope){ - var cm = this.colModel, clen = cm.getColumnCount(); - var ds = this.dataSource, rlen = ds.getCount(), first = true; - if(step < 0){ - if(col < 0){ - row--; - first = false; - } - while(row >= 0){ - if(!first){ - col = clen-1; - } - first = false; - while(col >= 0){ - if(fn.call(scope || this, row, col, cm) === true){ - return [row, col]; - } - col--; - } - row--; - } - } else { - if(col >= clen){ - row++; - first = false; - } - while(row < rlen){ - if(!first){ - col = 0; - } - first = false; - while(col < clen){ - if(fn.call(scope || this, row, col, cm) === true){ - return [row, col]; - } - col++; - } - row++; - } - } - return null; - }, - - getSelections : function(){ - return this.selModel.getSelections(); - }, - - - autoSize : function(){ - if(this.rendered){ - this.view.layout(); - if(this.view.adjustForScroll){ - this.view.adjustForScroll(); - } - } - }, - - getGridEl : function(){ - return this.container; - }, - - // private for compatibility, overridden by editor grid - stopEditing : function(){}, - - - getSelectionModel : function(){ - if(!this.selModel){ - this.selModel = new Ext.grid.RowSelectionModel(); - } - return this.selModel; - }, - - - getDataSource : function(){ - return this.dataSource; - }, - - - getColumnModel : function(){ - return this.colModel; - }, - - - getView : function(){ - if(!this.view){ - this.view = new Ext.grid.GridView(this.viewConfig); - } - return this.view; - }, - - getDragDropText : function(){ - var count = this.selModel.getCount(); - return String.format(this.ddText, count, count == 1 ? '' : 's'); - } -}); - -Ext.grid.Grid.prototype.ddText = "{0} selected row{1}"; -Ext.grid.AbstractGridView = function(){ - this.grid = null; - - this.events = { - "beforerowremoved" : true, - "beforerowsinserted" : true, - "beforerefresh" : true, - "rowremoved" : true, - "rowsinserted" : true, - "rowupdated" : true, - "refresh" : true - }; - Ext.grid.AbstractGridView.superclass.constructor.call(this); -}; - -Ext.extend(Ext.grid.AbstractGridView, Ext.util.Observable, { - rowClass : "x-grid-row", - cellClass : "x-grid-cell", - tdClass : "x-grid-td", - hdClass : "x-grid-hd", - splitClass : "x-grid-hd-split", - - init: function(grid){ - this.grid = grid; - var cid = this.grid.getGridEl().id; - this.colSelector = "#" + cid + " ." + this.cellClass + "-"; - this.tdSelector = "#" + cid + " ." + this.tdClass + "-"; - this.hdSelector = "#" + cid + " ." + this.hdClass + "-"; - this.splitSelector = "#" + cid + " ." + this.splitClass + "-"; - }, - - getColumnRenderers : function(){ - var renderers = []; - var cm = this.grid.colModel; - var colCount = cm.getColumnCount(); - for(var i = 0; i < colCount; i++){ - renderers[i] = cm.getRenderer(i); - } - return renderers; - }, - - getColumnIds : function(){ - var ids = []; - var cm = this.grid.colModel; - var colCount = cm.getColumnCount(); - for(var i = 0; i < colCount; i++){ - ids[i] = cm.getColumnId(i); - } - return ids; - }, - - getDataIndexes : function(){ - if(!this.indexMap){ - this.indexMap = this.buildIndexMap(); - } - return this.indexMap.colToData; - }, - - getColumnIndexByDataIndex : function(dataIndex){ - if(!this.indexMap){ - this.indexMap = this.buildIndexMap(); - } - return this.indexMap.dataToCol[dataIndex]; - }, - - - setCSSStyle : function(colIndex, name, value){ - var selector = "#" + this.grid.id + " .x-grid-col-" + colIndex; - Ext.util.CSS.updateRule(selector, name, value); - }, - - generateRules : function(cm){ - var ruleBuf = []; - for(var i = 0, len = cm.getColumnCount(); i < len; i++){ - var cid = cm.getColumnId(i); - ruleBuf.push(this.colSelector, cid, " {\n", cm.config[i].css, "}\n", - this.tdSelector, cid, " {\n}\n", - this.hdSelector, cid, " {\n}\n", - this.splitSelector, cid, " {\n}\n"); - } - return Ext.util.CSS.createStyleSheet(ruleBuf.join("")); - } -}); -Ext.grid.GridView = function(config){ - Ext.grid.GridView.superclass.constructor.call(this); - this.el = null; - - Ext.apply(this, config); -}; - -Ext.extend(Ext.grid.GridView, Ext.grid.AbstractGridView, { - - - rowClass : "x-grid-row", - - cellClass : "x-grid-col", - - tdClass : "x-grid-td", - - hdClass : "x-grid-hd", - - splitClass : "x-grid-split", - - sortClasses : ["sort-asc", "sort-desc"], - - enableMoveAnim : false, - - hlColor: "C3DAF9", - - dh : Ext.DomHelper, - - fly : Ext.Element.fly, - - css : Ext.util.CSS, - - borderWidth: 1, - - splitOffset: 3, - - scrollIncrement : 22, - - cellRE: /(?:.*?)x-grid-(?:hd|cell|csplit)-(?:[\d]+)-([\d]+)(?:.*?)/, - - findRE: /\s?(?:x-grid-hd|x-grid-col|x-grid-csplit)\s/, - - bind : function(ds, cm){ - if(this.ds){ - this.ds.un("load", this.onLoad, this); - this.ds.un("datachanged", this.onDataChange); - this.ds.un("add", this.onAdd); - this.ds.un("remove", this.onRemove); - this.ds.un("update", this.onUpdate); - this.ds.un("clear", this.onClear); - } - if(ds){ - ds.on("load", this.onLoad, this); - ds.on("datachanged", this.onDataChange, this); - ds.on("add", this.onAdd, this); - ds.on("remove", this.onRemove, this); - ds.on("update", this.onUpdate, this); - ds.on("clear", this.onClear, this); - } - this.ds = ds; - - if(this.cm){ - this.cm.un("widthchange", this.onColWidthChange, this); - this.cm.un("headerchange", this.onHeaderChange, this); - this.cm.un("hiddenchange", this.onHiddenChange, this); - this.cm.un("columnmoved", this.onColumnMove, this); - this.cm.un("columnlockchange", this.onColumnLock, this); - } - if(cm){ - this.generateRules(cm); - cm.on("widthchange", this.onColWidthChange, this); - cm.on("headerchange", this.onHeaderChange, this); - cm.on("hiddenchange", this.onHiddenChange, this); - cm.on("columnmoved", this.onColumnMove, this); - cm.on("columnlockchange", this.onColumnLock, this); - } - this.cm = cm; - }, - - init: function(grid){ - Ext.grid.GridView.superclass.init.call(this, grid); - - this.bind(grid.dataSource, grid.colModel); - - grid.on("headerclick", this.handleHeaderClick, this); - - if(grid.trackMouseOver){ - grid.on("mouseover", this.onRowOver, this); - grid.on("mouseout", this.onRowOut, this); - } - grid.cancelTextSelection = function(){}; - this.gridId = grid.id; - - var tpls = this.templates || {}; - - if(!tpls.master){ - tpls.master = new Ext.Template( - '<div class="x-grid" hidefocus="true">', - '<div class="x-grid-topbar"></div>', - '<div class="x-grid-scroller"><div></div></div>', - '<div class="x-grid-locked">', - '<div class="x-grid-header">{lockedHeader}</div>', - '<div class="x-grid-body">{lockedBody}</div>', - "</div>", - '<div class="x-grid-viewport">', - '<div class="x-grid-header">{header}</div>', - '<div class="x-grid-body">{body}</div>', - "</div>", - '<div class="x-grid-bottombar"></div>', - '<a href="#" class="x-grid-focus" tabIndex="-1"></a>', - '<div class="x-grid-resize-proxy"> </div>', - "</div>" - ); - tpls.master.disableformats = true; - } - - if(!tpls.header){ - tpls.header = new Ext.Template( - '<table border="0" cellspacing="0" cellpadding="0">', - '<tbody><tr class="x-grid-hd-row">{cells}</tr></tbody>', - "</table>{splits}" - ); - tpls.header.disableformats = true; - } - tpls.header.compile(); - - if(!tpls.hcell){ - tpls.hcell = new Ext.Template( - '<td class="x-grid-hd x-grid-td-{id} {cellId}"><div title="{title}" class="x-grid-hd-inner x-grid-hd-{id}">', - '<div class="x-grid-hd-text" unselectable="on">{value}<img class="x-grid-sort-icon" src="', Ext.BLANK_IMAGE_URL, '" /></div>', - "</div></td>" - ); - tpls.hcell.disableFormats = true; - } - tpls.hcell.compile(); - - if(!tpls.hsplit){ - tpls.hsplit = new Ext.Template('<div class="x-grid-split {splitId} x-grid-split-{id}" style="{style}" unselectable="on"> </div>'); - tpls.hsplit.disableFormats = true; - } - tpls.hsplit.compile(); - - if(!tpls.body){ - tpls.body = new Ext.Template( - '<table border="0" cellspacing="0" cellpadding="0">', - "<tbody>{rows}</tbody>", - "</table>" - ); - tpls.body.disableFormats = true; - } - tpls.body.compile(); - - if(!tpls.row){ - tpls.row = new Ext.Template('<tr class="x-grid-row {alt}">{cells}</tr>'); - tpls.row.disableFormats = true; - } - tpls.row.compile(); - - if(!tpls.cell){ - tpls.cell = new Ext.Template( - '<td class="x-grid-col x-grid-td-{id} {cellId} {css}" tabIndex="0">', - '<div class="x-grid-col-{id} x-grid-cell-inner"><div class="x-grid-cell-text" unselectable="on" {attr}>{value}</div></div>', - "</td>" - ); - tpls.cell.disableFormats = true; - } - tpls.cell.compile(); - - this.templates = tpls; - }, - - // remap these for backwards compat - onColWidthChange : function(){ - this.updateColumns.apply(this, arguments); - }, - onHeaderChange : function(){ - this.updateHeaders.apply(this, arguments); - }, - onHiddenChange : function(){ - this.handleHiddenChange.apply(this, arguments); - }, - onColumnMove : function(){ - this.handleColumnMove.apply(this, arguments); - }, - onColumnLock : function(){ - this.handleLockChange.apply(this, arguments); - }, - - onDataChange : function(){ - this.refresh(); - this.updateHeaderSortState(); - }, - - onClear : function(){ - this.refresh(); - }, - - onUpdate : function(ds, record){ - this.refreshRow(record); - }, - - refreshRow : function(record){ - var ds = this.ds, index; - if(typeof record == 'number'){ - index = record; - record = ds.getAt(index); - }else{ - index = ds.indexOf(record); - } - var rows = this.getRowComposite(index); - var cls = []; - this.insertRows(ds, index, index, true); - this.onRemove(ds, record, index+1, true); - this.syncRowHeights(index, index); - this.layout(); - this.fireEvent("rowupdated", this, index, record); - }, - - onAdd : function(ds, records, index){ - this.insertRows(ds, index, index + (records.length-1)); - }, - - onRemove : function(ds, record, index, isUpdate){ - if(isUpdate !== true){ - this.fireEvent("beforerowremoved", this, index, record); - } - var bt = this.getBodyTable(), lt = this.getLockedTable(); - if(bt.rows[index]){ - bt.firstChild.removeChild(bt.rows[index]); - } - if(lt.rows[index]){ - lt.firstChild.removeChild(lt.rows[index]); - } - if(isUpdate !== true){ - this.stripeRows(index); - this.syncRowHeights(index, index); - this.layout(); - this.fireEvent("rowremoved", this, index, record); - } - }, - - onLoad : function(){ - this.scrollToTop(); - }, - - - scrollToTop : function(){ - if(this.scroller){ - this.scroller.dom.scrollTop = 0; - this.syncScroll(); - } - }, - - - getHeaderPanel : function(doShow){ - if(doShow){ - this.headerPanel.show(); - } - return this.headerPanel; - }, - - - getFooterPanel : function(doShow){ - if(doShow){ - this.footerPanel.show(); - } - return this.footerPanel; - }, - - initElements : function(){ - var E = Ext.Element; - var el = this.grid.getGridEl().dom.firstChild; - var cs = el.childNodes; - - this.el = new E(el); - this.headerPanel = new E(el.firstChild); - this.headerPanel.enableDisplayMode("block"); - - this.scroller = new E(cs[1]); - this.scrollSizer = new E(this.scroller.dom.firstChild); - - this.lockedWrap = new E(cs[2]); - this.lockedHd = new E(this.lockedWrap.dom.firstChild); - this.lockedBody = new E(this.lockedWrap.dom.childNodes[1]); - - this.mainWrap = new E(cs[3]); - this.mainHd = new E(this.mainWrap.dom.firstChild); - this.mainBody = new E(this.mainWrap.dom.childNodes[1]); - - this.footerPanel = new E(cs[4]); - this.footerPanel.enableDisplayMode("block"); - - this.focusEl = new E(cs[5]); - this.focusEl.swallowEvent("click", true); - this.resizeProxy = new E(cs[6]); - - this.headerSelector = String.format( - '#{0} td.x-grid-hd, #{1} td.x-grid-hd', - this.lockedHd.id, this.mainHd.id - ); - - this.splitterSelector = String.format( - '#{0} div.x-grid-split, #{1} div.x-grid-split', - this.lockedHd.id, this.mainHd.id - ); - }, - - getHeaderCell : function(index){ - return Ext.DomQuery.select(this.headerSelector)[index]; - }, - - getHeaderCellMeasure : function(index){ - return this.getHeaderCell(index).firstChild; - }, - - getHeaderCellText : function(index){ - return this.getHeaderCell(index).firstChild.firstChild; - }, - - getLockedTable : function(){ - return this.lockedBody.dom.firstChild; - }, - - getBodyTable : function(){ - return this.mainBody.dom.firstChild; - }, - - getLockedRow : function(index){ - return this.getLockedTable().rows[index]; - }, - - getRow : function(index){ - return this.getBodyTable().rows[index]; - }, - - getRowComposite : function(index){ - if(!this.rowEl){ - this.rowEl = new Ext.CompositeElementLite(); - } - var els = [], lrow, mrow; - if(lrow = this.getLockedRow(index)){ - els.push(lrow); - } - if(mrow = this.getRow(index)){ - els.push(mrow); - } - this.rowEl.elements = els; - return this.rowEl; - }, - - getCell : function(rowIndex, colIndex){ - var locked = this.cm.getLockedCount(); - var source; - if(colIndex < locked){ - source = this.lockedBody.dom.firstChild; - }else{ - source = this.mainBody.dom.firstChild; - colIndex -= locked; - } - return source.rows[rowIndex].childNodes[colIndex]; - }, - - getCellText : function(rowIndex, colIndex){ - return this.getCell(rowIndex, colIndex).firstChild.firstChild; - }, - - getCellBox : function(cell){ - var b = this.fly(cell).getBox(); - if(Ext.isOpera){ // opera fails to report the Y - b.y = cell.offsetTop + this.mainBody.getY(); - } - return b; - }, - - getCellIndex : function(cell){ - var id = String(cell.className).match(this.cellRE); - if(id){ - return parseInt(id[1], 10); - } - return 0; - }, - - findHeaderIndex : function(n){ - var r = Ext.fly(n).findParent("td." + this.hdClass, 6); - return r ? this.getCellIndex(r) : false; - }, - - findHeaderCell : function(n){ - var r = Ext.fly(n).findParent("td." + this.hdClass, 6); - return r ? r : false; - }, - - findRowIndex : function(n){ - if(!n){ - return false; - } - var r = Ext.fly(n).findParent("tr." + this.rowClass, 6); - return r ? r.rowIndex : false; - }, - - findCellIndex : function(node){ - var stop = this.el.dom; - while(node && node != stop){ - if(this.findRE.test(node.className)){ - return this.getCellIndex(node); - } - node = node.parentNode; - } - return false; - }, - - getColumnId : function(index){ - return this.cm.getColumnId(index); - }, - - getSplitters : function(){ - if(this.splitterSelector){ - return Ext.DomQuery.select(this.splitterSelector); - }else{ - return null; - } - }, - - getSplitter : function(index){ - return this.getSplitters()[index]; - }, - - onRowOver : function(e, t){ - var row; - if((row = this.findRowIndex(t)) !== false){ - this.getRowComposite(row).addClass("x-grid-row-over"); - } - }, - - onRowOut : function(e, t){ - var row; - if((row = this.findRowIndex(t)) !== false && row !== this.findRowIndex(e.getRelatedTarget())){ - this.getRowComposite(row).removeClass("x-grid-row-over"); - } - }, - - renderHeaders : function(){ - var cm = this.cm; - var ct = this.templates.hcell, ht = this.templates.header, st = this.templates.hsplit; - var cb = [], lb = [], sb = [], lsb = [], p = {}; - for(var i = 0, len = cm.getColumnCount(); i < len; i++){ - p.cellId = "x-grid-hd-0-" + i; - p.splitId = "x-grid-csplit-0-" + i; - p.id = cm.getColumnId(i); - p.title = cm.getColumnTooltip(i) || ""; - p.value = cm.getColumnHeader(i) || ""; - p.style = (this.grid.enableColumnResize === false || !cm.isResizable(i) || cm.isFixed(i)) ? 'cursor:default' : ''; - if(!cm.isLocked(i)){ - cb[cb.length] = ct.apply(p); - sb[sb.length] = st.apply(p); - }else{ - lb[lb.length] = ct.apply(p); - lsb[lsb.length] = st.apply(p); - } - } - return [ht.apply({cells: lb.join(""), splits:lsb.join("")}), - ht.apply({cells: cb.join(""), splits:sb.join("")})]; - }, - - updateHeaders : function(){ - var html = this.renderHeaders(); - this.lockedHd.update(html[0]); - this.mainHd.update(html[1]); - }, - - - focusRow : function(row){ - var x = this.scroller.dom.scrollLeft; - this.focusCell(row, 0, false); - this.scroller.dom.scrollLeft = x; - }, - - - focusCell : function(row, col, hscroll){ - var el = this.ensureVisible(row, col, hscroll); - this.focusEl.alignTo(el, "tl-tl"); - if(Ext.isGecko){ - this.focusEl.focus(); - }else{ - this.focusEl.focus.defer(1, this.focusEl); - } - }, - - - ensureVisible : function(row, col, hscroll){ - if(typeof row != "number"){ - row = row.rowIndex; - } - if(row < 0 && row >= this.ds.getCount()){ - return; - } - col = (col !== undefined ? col : 0); - var cm = this.grid.colModel; - while(cm.isHidden(col)){ - col++; - } - - var el = this.getCell(row, col); - if(!el){ - return; - } - var c = this.scroller.dom; - - var ctop = parseInt(el.offsetTop, 10); - var cleft = parseInt(el.offsetLeft, 10); - var cbot = ctop + el.offsetHeight; - var cright = cleft + el.offsetWidth; - - var ch = c.clientHeight - this.mainHd.dom.offsetHeight; - var stop = parseInt(c.scrollTop, 10); - var sleft = parseInt(c.scrollLeft, 10); - var sbot = stop + ch; - var sright = sleft + c.clientWidth; - - if(ctop < stop){ - c.scrollTop = ctop; - }else if(cbot > sbot){ - c.scrollTop = cbot-ch; - } - - if(hscroll !== false){ - if(cleft < sleft){ - c.scrollLeft = cleft; - }else if(cright > sright){ - c.scrollLeft = cright-c.clientWidth; - } - } - return el; - }, - - updateColumns : function(){ - this.grid.stopEditing(); - var cm = this.grid.colModel, colIds = this.getColumnIds(); - //var totalWidth = cm.getTotalWidth(); - var pos = 0; - for(var i = 0, len = cm.getColumnCount(); i < len; i++){ - //if(cm.isHidden(i)) continue; - var w = cm.getColumnWidth(i); - this.css.updateRule(this.colSelector+colIds[i], "width", (w - this.borderWidth) + "px"); - this.css.updateRule(this.hdSelector+colIds[i], "width", (w - this.borderWidth) + "px"); - } - this.updateSplitters(); - }, - - generateRules : function(cm){ - var ruleBuf = []; - for(var i = 0, len = cm.getColumnCount(); i < len; i++){ - var cid = cm.getColumnId(i); - var align = ''; - if(cm.config[i].align){ - align = 'text-align:'+cm.config[i].align+';'; - } - var hidden = ''; - if(cm.isHidden(i)){ - hidden = 'display:none;'; - } - var width = "width:" + (cm.getColumnWidth(i) - this.borderWidth) + "px;"; - ruleBuf.push( - this.colSelector, cid, " {\n", cm.config[i].css, align, width, "\n}\n", - this.hdSelector, cid, " {\n", align, width, "}\n", - this.tdSelector, cid, " {\n",hidden,"\n}\n", - this.splitSelector, cid, " {\n", hidden , "\n}\n"); - } - return Ext.util.CSS.createStyleSheet(ruleBuf.join("")); - }, - - updateSplitters : function(){ - var cm = this.cm, s = this.getSplitters(); - if(s){ // splitters not created yet - var pos = 0, locked = true; - for(var i = 0, len = cm.getColumnCount(); i < len; i++){ - if(cm.isHidden(i)) continue; - var w = cm.getColumnWidth(i); - if(!cm.isLocked(i) && locked){ - pos = 0; - locked = false; - } - pos += w; - s[i].style.left = (pos-this.splitOffset) + "px"; - } - } - }, - - handleHiddenChange : function(colModel, colIndex, hidden){ - if(hidden){ - this.hideColumn(colIndex); - }else{ - this.unhideColumn(colIndex); - } - }, - - hideColumn : function(colIndex){ - var cid = this.getColumnId(colIndex); - this.css.updateRule(this.tdSelector+cid, "display", "none"); - this.css.updateRule(this.splitSelector+cid, "display", "none"); - if(Ext.isSafari){ - this.updateHeaders(); - } - this.updateSplitters(); - this.layout(); - }, - - unhideColumn : function(colIndex){ - var cid = this.getColumnId(colIndex); - this.css.updateRule(this.tdSelector+cid, "display", ""); - this.css.updateRule(this.splitSelector+cid, "display", ""); - - if(Ext.isSafari){ - this.updateHeaders(); - } - this.updateSplitters(); - this.layout(); - }, - - insertRows : function(dm, firstRow, lastRow, isUpdate){ - if(firstRow == 0 && lastRow == dm.getCount()-1){ - this.refresh(); - }else{ - if(!isUpdate){ - this.fireEvent("beforerowsinserted", this, firstRow, lastRow); - } - var s = this.getScrollState(); - var markup = this.renderRows(firstRow, lastRow); - this.bufferRows(markup[0], this.getLockedTable(), firstRow); - this.bufferRows(markup[1], this.getBodyTable(), firstRow); - this.restoreScroll(s); - if(!isUpdate){ - this.fireEvent("rowsinserted", this, firstRow, lastRow); - this.syncRowHeights(firstRow, lastRow); - this.stripeRows(firstRow); - this.layout(); - } - } - }, - - bufferRows : function(markup, target, index){ - var before = null, trows = target.rows, tbody = target.tBodies[0]; - if(index < trows.length){ - before = trows[index]; - } - var b = document.createElement("div"); - b.innerHTML = "<table><tbody>"+markup+"</tbody></table>"; - var rows = b.firstChild.rows; - for(var i = 0, len = rows.length; i < len; i++){ - if(before){ - tbody.insertBefore(rows[0], before); - }else{ - tbody.appendChild(rows[0]); - } - } - b.innerHTML = ""; - b = null; - }, - - deleteRows : function(dm, firstRow, lastRow){ - if(dm.getRowCount()<1){ - this.fireEvent("beforerefresh", this); - this.mainBody.update(""); - this.lockedBody.update(""); - this.fireEvent("refresh", this); - }else{ - this.fireEvent("beforerowsdeleted", this, firstRow, lastRow); - var bt = this.getBodyTable(); - var tbody = bt.firstChild; - var rows = bt.rows; - for(var rowIndex = firstRow; rowIndex <= lastRow; rowIndex++){ - tbody.removeChild(rows[firstRow]); - } - this.stripeRows(firstRow); - this.fireEvent("rowsdeleted", this, firstRow, lastRow); - } - }, - - updateRows : function(dataSource, firstRow, lastRow){ - var s = this.getScrollState(); - this.refresh(); - this.restoreScroll(s); - }, - - handleSort : function(dataSource, sortColumnIndex, sortDir, noRefresh){ - if(!noRefresh){ - this.refresh(); - } - this.updateHeaderSortState(); - }, - - getScrollState : function(){ - var sb = this.scroller.dom; - return {left: sb.scrollLeft, top: sb.scrollTop}; - }, - - stripeRows : function(startRow){ - if(!this.grid.stripeRows || this.ds.getCount() < 1){ - return; - } - startRow = startRow || 0; - var rows = this.getBodyTable().rows; - var lrows = this.getLockedTable().rows; - var cls = ' x-grid-row-alt '; - for(var i = startRow, len = rows.length; i < len; i++){ - var row = rows[i], lrow = lrows[i]; - var isAlt = ((i+1) % 2 == 0); - var hasAlt = (' '+row.className + ' ').indexOf(cls) != -1; - if(isAlt == hasAlt){ - continue; - } - if(isAlt){ - row.className += " x-grid-row-alt"; - }else{ - row.className = row.className.replace("x-grid-row-alt", ""); - } - if(lrow){ - lrow.className = row.className; - } - } - }, - - restoreScroll : function(state){ - var sb = this.scroller.dom; - sb.scrollLeft = state.left; - sb.scrollTop = state.top; - this.syncScroll(); - }, - - syncScroll : function(){ - var sb = this.scroller.dom; - var sh = this.mainHd.dom; - var bs = this.mainBody.dom; - var lv = this.lockedBody.dom; - sh.scrollLeft = bs.scrollLeft = sb.scrollLeft; - lv.scrollTop = bs.scrollTop = sb.scrollTop; - }, - - handleScroll : function(e){ - this.syncScroll(); - var sb = this.scroller.dom; - this.grid.fireEvent("bodyscroll", sb.scrollLeft, sb.scrollTop); - e.stopEvent(); - }, - - handleWheel : function(e){ - var d = e.getWheelDelta(); - this.scroller.dom.scrollTop -= d*22; - // set this here to prevent jumpy scrolling on large tables - this.lockedBody.dom.scrollTop = this.mainBody.dom.scrollTop = this.scroller.dom.scrollTop; - e.stopEvent(); - }, - - renderRows : function(startRow, endRow){ - // pull in all the crap needed to render rows - var g = this.grid, cm = g.colModel, ds = g.dataSource, stripe = g.stripeRows; - var colCount = cm.getColumnCount(); - - if(ds.getCount() < 1){ - return ["", ""]; - } - - // build a map for all the columns - var cs = []; - for(var i = 0; i < colCount; i++){ - var name = cm.getDataIndex(i); - cs[i] = { - name : typeof name == 'undefined' ? ds.fields.get(i).name : name, - renderer : cm.getRenderer(i), - id : cm.getColumnId(i), - locked : cm.isLocked(i) - }; - } - - startRow = startRow || 0; - endRow = typeof endRow == "undefined"? ds.getCount()-1 : endRow; - - // records to render - var rs = ds.getRange(startRow, endRow); - - return this.doRender(cs, rs, ds, startRow, colCount, stripe); - }, - - // As much as I hate to duplicate code, this was branched because FireFox really hates - // [].join("") on strings. The performance difference was substantial enough to - // branch this function - doRender : Ext.isGecko ? - function(cs, rs, ds, startRow, colCount, stripe){ - var ts = this.templates, ct = ts.cell, rt = ts.row; - // buffers - var buf = "", lbuf = "", cb, lcb, c, p = {}, rp = {}, r, rowIndex; - for(var j = 0, len = rs.length; j < len; j++){ - r = rs[j]; cb = ""; lcb = ""; rowIndex = (j+startRow); - for(var i = 0; i < colCount; i++){ - c = cs[i]; - p.cellId = "x-grid-cell-" + rowIndex + "-" + i; - p.id = c.id; - p.css = p.attr = ""; - p.value = c.renderer(r.data[c.name], p, r, rowIndex, i, ds); - if(p.value == undefined || p.value === "") p.value = " "; - if(r.dirty && typeof r.modified[c.name] !== 'undefined'){ - p.css += p.css ? ' x-grid-dirty-cell' : 'x-grid-dirty-cell'; - } - var markup = ct.apply(p); - if(!c.locked){ - cb+= markup; - }else{ - lcb+= markup; - } - } - var alt = []; - if(stripe && ((rowIndex+1) % 2 == 0)){ - alt[0] = "x-grid-row-alt"; - } - if(r.dirty){ - alt[1] = " x-grid-dirty-row"; - } - rp.cells = lcb; - if(this.getRowClass){ - alt[2] = this.getRowClass(r, rowIndex); - } - rp.alt = alt.join(" "); - lbuf+= rt.apply(rp); - rp.cells = cb; - buf+= rt.apply(rp); - } - return [lbuf, buf]; - } : - function(cs, rs, ds, startRow, colCount, stripe){ - var ts = this.templates, ct = ts.cell, rt = ts.row; - // buffers - var buf = [], lbuf = [], cb, lcb, c, p = {}, rp = {}, r, rowIndex; - for(var j = 0, len = rs.length; j < len; j++){ - r = rs[j]; cb = []; lcb = []; rowIndex = (j+startRow); - for(var i = 0; i < colCount; i++){ - c = cs[i]; - p.cellId = "x-grid-cell-" + rowIndex + "-" + i; - p.id = c.id; - p.css = p.attr = ""; - p.value = c.renderer(r.data[c.name], p, r, rowIndex, i, ds); - if(p.value == undefined || p.value === "") p.value = " "; - if(r.dirty && typeof r.modified[c.name] !== 'undefined'){ - p.css += p.css ? ' x-grid-dirty-cell' : 'x-grid-dirty-cell'; - } - var markup = ct.apply(p); - if(!c.locked){ - cb[cb.length] = markup; - }else{ - lcb[lcb.length] = markup; - } - } - var alt = []; - if(stripe && ((rowIndex+1) % 2 == 0)){ - alt[0] = "x-grid-row-alt"; - } - if(r.dirty){ - alt[1] = " x-grid-dirty-row"; - } - rp.cells = lcb; - if(this.getRowClass){ - alt[2] = this.getRowClass(r, rowIndex); - } - rp.alt = alt.join(" "); - rp.cells = lcb.join(""); - lbuf[lbuf.length] = rt.apply(rp); - rp.cells = cb.join(""); - buf[buf.length] = rt.apply(rp); - } - return [lbuf.join(""), buf.join("")]; - }, - - renderBody : function(){ - var markup = this.renderRows(); - var bt = this.templates.body; - return [bt.apply({rows: markup[0]}), bt.apply({rows: markup[1]})]; - }, - - - refresh : function(headersToo){ - this.fireEvent("beforerefresh", this); - this.grid.stopEditing(); - var result = this.renderBody(); - this.lockedBody.update(result[0]); - this.mainBody.update(result[1]); - if(headersToo === true){ - this.updateHeaders(); - this.updateColumns(); - this.updateSplitters(); - this.updateHeaderSortState(); - } - this.syncRowHeights(); - this.layout(); - this.fireEvent("refresh", this); - }, - - handleColumnMove : function(cm, oldIndex, newIndex){ - this.indexMap = null; - var s = this.getScrollState(); - this.refresh(true); - this.restoreScroll(s); - this.afterMove(newIndex); - }, - - afterMove : function(colIndex){ - if(this.enableMoveAnim && Ext.enableFx){ - this.fly(this.getHeaderCell(colIndex).firstChild).highlight(this.hlColor); - } - }, - - updateCell : function(dm, rowIndex, dataIndex){ - var colIndex = this.getColumnIndexByDataIndex(dataIndex); - if(typeof colIndex == "undefined"){ // not present in grid - return; - } - var cm = this.grid.colModel; - var cell = this.getCell(rowIndex, colIndex); - var cellText = this.getCellText(rowIndex, colIndex); - - var p = { - cellId : "x-grid-cell-" + rowIndex + "-" + colIndex, - id : cm.getColumnId(colIndex), - css: colIndex == cm.getColumnCount()-1 ? "x-grid-col-last" : "" - }; - var renderer = cm.getRenderer(colIndex); - var val = renderer(dm.getValueAt(rowIndex, dataIndex), p, rowIndex, colIndex, dm); - if(typeof val == "undefined" || val === "") val = " "; - cellText.innerHTML = val; - cell.className = this.cellClass + " " + p.cellId + " " + p.css; - this.syncRowHeights(rowIndex, rowIndex); - }, - - calcColumnWidth : function(colIndex, maxRowsToMeasure){ - var maxWidth = 0; - if(this.grid.autoSizeHeaders){ - var h = this.getHeaderCellMeasure(colIndex); - maxWidth = Math.max(maxWidth, h.scrollWidth); - } - var tb, index; - if(this.cm.isLocked(colIndex)){ - tb = this.getLockedTable(); - index = colIndex; - }else{ - tb = this.getBodyTable(); - index = colIndex - this.cm.getLockedCount(); - } - if(tb && tb.rows){ - var rows = tb.rows; - var stopIndex = Math.min(maxRowsToMeasure || rows.length, rows.length); - for(var i = 0; i < stopIndex; i++){ - var cell = rows[i].childNodes[index].firstChild; - maxWidth = Math.max(maxWidth, cell.scrollWidth); - } - } - return maxWidth + 5; - }, - - autoSizeColumn : function(colIndex, forceMinSize, suppressEvent){ - if(this.cm.isHidden(colIndex)){ - return; // can't calc a hidden column - } - if(forceMinSize){ - var cid = this.cm.getColumnId(colIndex); - this.css.updateRule(this.colSelector + cid, "width", this.grid.minColumnWidth + "px"); - if(this.grid.autoSizeHeaders){ - this.css.updateRule(this.hdSelector + cid, "width", this.grid.minColumnWidth + "px"); - } - } - var newWidth = this.calcColumnWidth(colIndex); - this.cm.setColumnWidth(colIndex, - Math.max(this.grid.minColumnWidth, newWidth), suppressEvent); - if(!suppressEvent){ - this.grid.fireEvent("columnresize", colIndex, newWidth); - } - }, - - - autoSizeColumns : function(){ - var cm = this.grid.colModel; - var colCount = cm.getColumnCount(); - for(var i = 0; i < colCount; i++){ - this.autoSizeColumn(i, true, true); - } - if(cm.getTotalWidth() < this.scroller.dom.clientWidth){ - this.fitColumns(); - }else{ - this.updateColumns(); - this.layout(); - } - }, - - - fitColumns : function(reserveScrollSpace){ - var cm = this.grid.colModel; - var colCount = cm.getColumnCount(); - var cols = []; - var width = 0; - var i, w; - for (i = 0; i < colCount; i++){ - if(!cm.isHidden(i) && !cm.isFixed(i)){ - w = cm.getColumnWidth(i); - cols.push(i); - cols.push(w); - width += w; - } - } - var avail = Math.min(this.scroller.dom.clientWidth, this.el.getWidth()); - if(reserveScrollSpace){ - avail -= 17; - } - var frac = (avail - cm.getTotalWidth())/width; - while (cols.length){ - w = cols.pop(); - i = cols.pop(); - cm.setColumnWidth(i, Math.floor(w + w*frac), true); - } - this.updateColumns(); - this.layout(); - }, - - onRowSelect : function(rowIndex){ - var row = this.getRowComposite(rowIndex); - row.addClass("x-grid-row-selected"); - }, - - onRowDeselect : function(rowIndex){ - var row = this.getRowComposite(rowIndex); - row.removeClass("x-grid-row-selected"); - }, - - onCellSelect : function(row, col){ - var cell = this.getCell(row, col); - if(cell){ - Ext.fly(cell).addClass("x-grid-cell-selected"); - } - }, - - onCellDeselect : function(row, col){ - var cell = this.getCell(row, col); - if(cell){ - Ext.fly(cell).removeClass("x-grid-cell-selected"); - } - }, - - updateHeaderSortState : function(){ - var state = this.ds.getSortState(); - if(!state){ - return; - } - this.sortState = state; - var sortColumn = this.cm.findColumnIndex(state.field); - if(sortColumn != -1){ - var sortDir = state.direction; - var sc = this.sortClasses; - var hds = this.el.select(this.headerSelector).removeClass(sc); - hds.item(sortColumn).addClass(sc[sortDir == "DESC" ? 1 : 0]); - } - }, - - handleHeaderClick : function(g, index){ - if(this.headersDisabled){ - return; - } - var dm = g.dataSource, cm = g.colModel; - if(!cm.isSortable(index)){ - return; - } - g.stopEditing(); - dm.sort(cm.getDataIndex(index)); - }, - - - destroy : function(){ - if(this.colMenu){ - this.colMenu.removeAll(); - Ext.menu.MenuMgr.unregister(this.colMenu); - this.colMenu.getEl().remove(); - delete this.colMenu; - } - if(this.hmenu){ - this.hmenu.removeAll(); - Ext.menu.MenuMgr.unregister(this.hmenu); - this.hmenu.getEl().remove(); - delete this.hmenu; - } - if(this.grid.enableColumnMove){ - var dds = Ext.dd.DDM.ids['gridHeader' + this.grid.getGridEl().id]; - if(dds){ - for(var dd in dds){ - if(!dds[dd].config.isTarget && dds[dd].dragElId){ - var elid = dds[dd].dragElId; - dds[dd].unreg(); - Ext.get(elid).remove(); - } else if(dds[dd].config.isTarget){ - dds[dd].proxyTop.remove(); - dds[dd].proxyBottom.remove(); - dds[dd].unreg(); - } - if(Ext.dd.DDM.locationCache[dd]){ - delete Ext.dd.DDM.locationCache[dd]; - } - } - delete Ext.dd.DDM.ids['gridHeader' + this.grid.getGridEl().id]; - } - } - - this.bind(null, null); - Ext.EventManager.removeResizeListener(this.onWindowResize, this); - }, - - handleLockChange : function(){ - this.refresh(true); - }, - - onDenyColumnLock : function(){ - - }, - - onDenyColumnHide : function(){ - - }, - - handleHdMenuClick : function(item){ - var index = this.hdCtxIndex; - var cm = this.cm, ds = this.ds; - switch(item.id){ - case "asc": - ds.sort(cm.getDataIndex(index), "ASC"); - break; - case "desc": - ds.sort(cm.getDataIndex(index), "DESC"); - break; - case "lock": - var lc = cm.getLockedCount(); - if(cm.getColumnCount(true) <= lc+1){ - this.onDenyColumnLock(); - return; - } - if(lc != index){ - cm.setLocked(index, true, true); - cm.moveColumn(index, lc); - this.grid.fireEvent("columnmove", index, lc); - }else{ - cm.setLocked(index, true); - } - break; - case "unlock": - var lc = cm.getLockedCount(); - if((lc-1) != index){ - cm.setLocked(index, false, true); - cm.moveColumn(index, lc-1); - this.grid.fireEvent("columnmove", index, lc-1); - }else{ - cm.setLocked(index, false); - } - break; - default: - index = cm.getIndexById(item.id.substr(4)); - if(index != -1){ - if(item.checked && cm.getColumnCount(true) <= 1){ - this.onDenyColumnHide(); - return false; - } - cm.setHidden(index, item.checked); - } - } - return true; - }, - - beforeColMenuShow : function(){ - var cm = this.cm, colCount = cm.getColumnCount(); - this.colMenu.removeAll(); - for(var i = 0; i < colCount; i++){ - this.colMenu.add(new Ext.menu.CheckItem({ - id: "col-"+cm.getColumnId(i), - text: cm.getColumnHeader(i), - checked: !cm.isHidden(i), - hideOnClick:false - })); - } - }, - - handleHdCtx : function(g, index, e){ - e.stopEvent(); - var hd = this.getHeaderCell(index); - this.hdCtxIndex = index; - var ms = this.hmenu.items, cm = this.cm; - ms.get("asc").setDisabled(!cm.isSortable(index)); - ms.get("desc").setDisabled(!cm.isSortable(index)); - if(this.grid.enableColLock !== false){ - ms.get("lock").setDisabled(cm.isLocked(index)); - ms.get("unlock").setDisabled(!cm.isLocked(index)); - } - this.hmenu.show(hd, "tl-bl"); - }, - - handleHdOver : function(e){ - var hd = this.findHeaderCell(e.getTarget()); - if(hd && !this.headersDisabled){ - if(this.grid.colModel.isSortable(this.getCellIndex(hd))){ - this.fly(hd).addClass("x-grid-hd-over"); - } - } - }, - - handleHdOut : function(e){ - var hd = this.findHeaderCell(e.getTarget()); - if(hd){ - this.fly(hd).removeClass("x-grid-hd-over"); - } - }, - - handleSplitDblClick : function(e, t){ - var i = this.getCellIndex(t); - if(this.grid.enableColumnResize !== false && this.cm.isResizable(i) && !this.cm.isFixed(i)){ - this.autoSizeColumn(i, true); - this.layout(); - } - }, - - render : function(){ - - var cm = this.cm; - var colCount = cm.getColumnCount(); - - if(this.grid.monitorWindowResize === true){ - Ext.EventManager.onWindowResize(this.onWindowResize, this, true); - } - var header = this.renderHeaders(); - var body = this.templates.body.apply({rows:""}); - var html = this.templates.master.apply({ - lockedBody: body, - body: body, - lockedHeader: header[0], - header: header[1] - }); - - //this.updateColumns(); - - this.grid.getGridEl().dom.innerHTML = html; - - this.initElements(); - - this.scroller.on("scroll", this.handleScroll, this); - this.lockedBody.on("mousewheel", this.handleWheel, this); - this.mainBody.on("mousewheel", this.handleWheel, this); - - this.mainHd.on("mouseover", this.handleHdOver, this); - this.mainHd.on("mouseout", this.handleHdOut, this); - this.mainHd.on("dblclick", this.handleSplitDblClick, this, - {delegate: "."+this.splitClass}); - - this.lockedHd.on("mouseover", this.handleHdOver, this); - this.lockedHd.on("mouseout", this.handleHdOut, this); - this.lockedHd.on("dblclick", this.handleSplitDblClick, this, - {delegate: "."+this.splitClass}); - - if(this.grid.enableColumnResize !== false && Ext.grid.SplitDragZone){ - new Ext.grid.SplitDragZone(this.grid, this.lockedHd.dom, this.mainHd.dom); - } - - this.updateSplitters(); - - if(this.grid.enableColumnMove && Ext.grid.HeaderDragZone){ - new Ext.grid.HeaderDragZone(this.grid, this.lockedHd.dom, this.mainHd.dom); - new Ext.grid.HeaderDropZone(this.grid, this.lockedHd.dom, this.mainHd.dom); - } - - if(this.grid.enableCtxMenu !== false && Ext.menu.Menu){ - this.hmenu = new Ext.menu.Menu({id: this.grid.id + "-hctx"}); - this.hmenu.add( - {id:"asc", text: this.sortAscText, cls: "xg-hmenu-sort-asc"}, - {id:"desc", text: this.sortDescText, cls: "xg-hmenu-sort-desc"} - ); - if(this.grid.enableColLock !== false){ - this.hmenu.add('-', - {id:"lock", text: this.lockText, cls: "xg-hmenu-lock"}, - {id:"unlock", text: this.unlockText, cls: "xg-hmenu-unlock"} - ); - } - if(this.grid.enableColumnHide !== false){ - - this.colMenu = new Ext.menu.Menu({id:this.grid.id + "-hcols-menu"}); - this.colMenu.on("beforeshow", this.beforeColMenuShow, this); - this.colMenu.on("itemclick", this.handleHdMenuClick, this); - - this.hmenu.add('-', - {id:"columns", text: this.columnsText, menu: this.colMenu} - ); - } - this.hmenu.on("itemclick", this.handleHdMenuClick, this); - - this.grid.on("headercontextmenu", this.handleHdCtx, this); - } - - if((this.grid.enableDragDrop || this.grid.enableDrag) && Ext.grid.GridDragZone){ - this.dd = new Ext.grid.GridDragZone(this.grid, { - ddGroup : this.grid.ddGroup || 'GridDD' - }); - } - - - - this.updateHeaderSortState(); - - this.beforeInitialResize(); - this.layout(true); - - // two part rendering gives faster view to the user - this.renderPhase2.defer(1, this); - }, - - renderPhase2 : function(){ - // render the rows now - this.refresh(); - if(this.grid.autoSizeColumns){ - this.autoSizeColumns(); - } - }, - - beforeInitialResize : function(){ - - }, - - onColumnSplitterMoved : function(i, w){ - this.userResized = true; - var cm = this.grid.colModel; - cm.setColumnWidth(i, w, true); - var cid = cm.getColumnId(i); - this.css.updateRule(this.colSelector + cid, "width", (w-this.borderWidth) + "px"); - this.css.updateRule(this.hdSelector + cid, "width", (w-this.borderWidth) + "px"); - this.updateSplitters(); - this.layout(); - this.grid.fireEvent("columnresize", i, w); - }, - - syncRowHeights : function(startIndex, endIndex){ - if(this.grid.enableRowHeightSync === true && this.cm.getLockedCount() > 0){ - startIndex = startIndex || 0; - var mrows = this.getBodyTable().rows; - var lrows = this.getLockedTable().rows; - var len = mrows.length-1; - endIndex = Math.min(endIndex || len, len); - for(var i = startIndex; i <= endIndex; i++){ - var m = mrows[i], l = lrows[i]; - var h = Math.max(m.offsetHeight, l.offsetHeight); - m.style.height = l.style.height = h + "px"; - } - } - }, - - layout : function(initialRender, is2ndPass){ - var g = this.grid; - var auto = g.autoHeight; - var scrollOffset = 16; - var c = g.getGridEl(), cm = this.cm, - expandCol = g.autoExpandColumn, - gv = this; - //c.beginMeasure(); - - if(!c.dom.offsetWidth){ // display:none? - if(initialRender){ - this.lockedWrap.show(); - this.mainWrap.show(); - } - return; - } - - var hasLock = this.cm.isLocked(0); - - var tbh = this.headerPanel.getHeight(); - var bbh = this.footerPanel.getHeight(); - - if(auto){ - var ch = this.getBodyTable().offsetHeight + tbh + bbh + this.mainHd.getHeight(); - var newHeight = ch + c.getBorderWidth("tb"); - if(g.maxHeight){ - newHeight = Math.min(g.maxHeight, newHeight); - } - c.setHeight(newHeight); - } - - if(g.autoWidth){ - c.setWidth(cm.getTotalWidth()+c.getBorderWidth('lr')); - } - - var s = this.scroller; - - var csize = c.getSize(true); - - this.el.setSize(csize.width, csize.height); - - this.headerPanel.setWidth(csize.width); - this.footerPanel.setWidth(csize.width); - - var hdHeight = this.mainHd.getHeight(); - var vw = csize.width; - var vh = csize.height - (tbh + bbh); - - s.setSize(vw, vh); - - var bt = this.getBodyTable(); - var ltWidth = hasLock ? - Math.max(this.getLockedTable().offsetWidth, this.lockedHd.dom.firstChild.offsetWidth) : 0; - - var scrollHeight = bt.offsetHeight; - var scrollWidth = ltWidth + bt.offsetWidth; - var vscroll = false, hscroll = false; - - this.scrollSizer.setSize(scrollWidth, scrollHeight+hdHeight); - - var lw = this.lockedWrap, mw = this.mainWrap; - var lb = this.lockedBody, mb = this.mainBody; - - setTimeout(function(){ - var t = s.dom.offsetTop; - var w = s.dom.clientWidth, - h = s.dom.clientHeight; - - lw.setTop(t); - lw.setSize(ltWidth, h); - - mw.setLeftTop(ltWidth, t); - mw.setSize(w-ltWidth, h); - - lb.setHeight(h-hdHeight); - mb.setHeight(h-hdHeight); - - if(is2ndPass !== true && !gv.userResized && expandCol){ - // high speed resize without full column calculation - var ci = cm.getIndexById(expandCol); - var tw = cm.getTotalWidth(false); - var currentWidth = cm.getColumnWidth(ci); - var cw = Math.min(Math.max(((w-tw)+currentWidth-2)-(w <= s.dom.offsetWidth ? 0 : 18), g.autoExpandMin), g.autoExpandMax); - if(currentWidth != cw){ - cm.setColumnWidth(ci, cw, true); - gv.css.updateRule(gv.colSelector+expandCol, "width", (cw - gv.borderWidth) + "px"); - gv.css.updateRule(gv.hdSelector+expandCol, "width", (cw - gv.borderWidth) + "px"); - gv.updateSplitters(); - gv.layout(false, true); - } - } - - if(initialRender){ - lw.show(); - mw.show(); - } - //c.endMeasure(); - }, 10); - }, - - onWindowResize : function(){ - if(!this.grid.monitorWindowResize || this.grid.autoHeight){ - return; - } - this.layout(); - }, - - appendFooter : function(parentEl){ - return null; - }, - - sortAscText : "Sort Ascending", - sortDescText : "Sort Descending", - lockText : "Lock Column", - unlockText : "Unlock Column", - columnsText : "Columns" -}); -// private -// This is a support class used internally by the Grid components -Ext.grid.HeaderDragZone = function(grid, hd, hd2){ - this.grid = grid; - this.view = grid.getView(); - this.ddGroup = "gridHeader" + this.grid.getGridEl().id; - Ext.grid.HeaderDragZone.superclass.constructor.call(this, hd); - if(hd2){ - this.setHandleElId(Ext.id(hd)); - this.setOuterHandleElId(Ext.id(hd2)); - } - this.scroll = false; -}; -Ext.extend(Ext.grid.HeaderDragZone, Ext.dd.DragZone, { - maxDragWidth: 120, - getDragData : function(e){ - var t = Ext.lib.Event.getTarget(e); - var h = this.view.findHeaderCell(t); - if(h){ - return {ddel: h.firstChild, header:h}; - } - return false; - }, - - onInitDrag : function(e){ - this.view.headersDisabled = true; - var clone = this.dragData.ddel.cloneNode(true); - clone.id = Ext.id(); - clone.style.width = Math.min(this.dragData.header.offsetWidth,this.maxDragWidth) + "px"; - this.proxy.update(clone); - return true; - }, - - afterValidDrop : function(){ - var v = this.view; - setTimeout(function(){ - v.headersDisabled = false; - }, 50); - }, - - afterInvalidDrop : function(){ - var v = this.view; - setTimeout(function(){ - v.headersDisabled = false; - }, 50); - } -}); - -// private -// This is a support class used internally by the Grid components -Ext.grid.HeaderDropZone = function(grid, hd, hd2){ - this.grid = grid; - this.view = grid.getView(); - // split the proxies so they don't interfere with mouse events - this.proxyTop = Ext.DomHelper.append(document.body, { - tag:"div", cls:"col-move-top", html:" " - }, true); - this.proxyBottom = Ext.DomHelper.append(document.body, { - tag:"div", cls:"col-move-bottom", html:" " - }, true); - this.proxyTop.hide = this.proxyBottom.hide = function(){ - this.setLeftTop(-100,-100); - this.setStyle("visibility", "hidden"); - }; - this.ddGroup = "gridHeader" + this.grid.getGridEl().id; - // temporarily disabled - //Ext.dd.ScrollManager.register(this.view.scroller.dom); - Ext.grid.HeaderDropZone.superclass.constructor.call(this, grid.getGridEl().dom); -}; -Ext.extend(Ext.grid.HeaderDropZone, Ext.dd.DropZone, { - proxyOffsets : [-4, -9], - fly: Ext.Element.fly, - - getTargetFromEvent : function(e){ - var t = Ext.lib.Event.getTarget(e); - var cindex = this.view.findCellIndex(t); - if(cindex !== false){ - return this.view.getHeaderCell(cindex); - } - }, - - nextVisible : function(h){ - var v = this.view, cm = this.grid.colModel; - h = h.nextSibling; - while(h){ - if(!cm.isHidden(v.getCellIndex(h))){ - return h; - } - h = h.nextSibling; - } - return null; - }, - - prevVisible : function(h){ - var v = this.view, cm = this.grid.colModel; - h = h.prevSibling; - while(h){ - if(!cm.isHidden(v.getCellIndex(h))){ - return h; - } - h = h.prevSibling; - } - return null; - }, - - positionIndicator : function(h, n, e){ - var x = Ext.lib.Event.getPageX(e); - var r = Ext.lib.Dom.getRegion(n.firstChild); - var px, pt, py = r.top + this.proxyOffsets[1]; - if((r.right - x) <= (r.right-r.left)/2){ - px = r.right+this.view.borderWidth; - pt = "after"; - }else{ - px = r.left; - pt = "before"; - } - var oldIndex = this.view.getCellIndex(h); - var newIndex = this.view.getCellIndex(n); - - if(this.grid.colModel.isFixed(newIndex)){ - return false; - } - - var locked = this.grid.colModel.isLocked(newIndex); - - if(pt == "after"){ - newIndex++; - } - if(oldIndex < newIndex){ - newIndex--; - } - if(oldIndex == newIndex && (locked == this.grid.colModel.isLocked(oldIndex))){ - return false; - } - px += this.proxyOffsets[0]; - this.proxyTop.setLeftTop(px, py); - this.proxyTop.show(); - if(!this.bottomOffset){ - this.bottomOffset = this.view.mainHd.getHeight(); - } - this.proxyBottom.setLeftTop(px, py+this.proxyTop.dom.offsetHeight+this.bottomOffset); - this.proxyBottom.show(); - return pt; - }, - - onNodeEnter : function(n, dd, e, data){ - if(data.header != n){ - this.positionIndicator(data.header, n, e); - } - }, - - onNodeOver : function(n, dd, e, data){ - var result = false; - if(data.header != n){ - result = this.positionIndicator(data.header, n, e); - } - if(!result){ - this.proxyTop.hide(); - this.proxyBottom.hide(); - } - return result ? this.dropAllowed : this.dropNotAllowed; - }, - - onNodeOut : function(n, dd, e, data){ - this.proxyTop.hide(); - this.proxyBottom.hide(); - }, - - onNodeDrop : function(n, dd, e, data){ - var h = data.header; - if(h != n){ - var cm = this.grid.colModel; - var x = Ext.lib.Event.getPageX(e); - var r = Ext.lib.Dom.getRegion(n.firstChild); - var pt = (r.right - x) <= ((r.right-r.left)/2) ? "after" : "before"; - var oldIndex = this.view.getCellIndex(h); - var newIndex = this.view.getCellIndex(n); - var locked = cm.isLocked(newIndex); - if(pt == "after"){ - newIndex++; - } - if(oldIndex < newIndex){ - newIndex--; - } - if(oldIndex == newIndex && (locked == cm.isLocked(oldIndex))){ - return false; - } - cm.setLocked(oldIndex, locked, true); - cm.moveColumn(oldIndex, newIndex); - this.grid.fireEvent("columnmove", oldIndex, newIndex); - return true; - } - return false; - } -}); - - -Ext.grid.GridView.ColumnDragZone = function(grid, hd){ - Ext.grid.GridView.ColumnDragZone.superclass.constructor.call(this, grid, hd, null); - this.proxy.el.addClass('x-grid3-col-dd'); -}; - -Ext.extend(Ext.grid.GridView.ColumnDragZone, Ext.grid.HeaderDragZone, { - handleMouseDown : function(e){ - - }, - - callHandleMouseDown : function(e){ - Ext.grid.GridView.ColumnDragZone.superclass.handleMouseDown.call(this, e); - } -}); -// private -// This is a support class used internally by the Grid components -Ext.grid.SplitDragZone = function(grid, hd, hd2){ - this.grid = grid; - this.view = grid.getView(); - this.proxy = this.view.resizeProxy; - Ext.grid.SplitDragZone.superclass.constructor.call(this, hd, - "gridSplitters" + this.grid.getGridEl().id, { - dragElId : Ext.id(this.proxy.dom), resizeFrame:false - }); - this.setHandleElId(Ext.id(hd)); - this.setOuterHandleElId(Ext.id(hd2)); - this.scroll = false; -}; -Ext.extend(Ext.grid.SplitDragZone, Ext.dd.DDProxy, { - fly: Ext.Element.fly, - - b4StartDrag : function(x, y){ - this.view.headersDisabled = true; - this.proxy.setHeight(this.view.mainWrap.getHeight()); - var w = this.cm.getColumnWidth(this.cellIndex); - var minw = Math.max(w-this.grid.minColumnWidth, 0); - this.resetConstraints(); - this.setXConstraint(minw, 1000); - this.setYConstraint(0, 0); - this.minX = x - minw; - this.maxX = x + 1000; - this.startPos = x; - Ext.dd.DDProxy.prototype.b4StartDrag.call(this, x, y); - }, - - - handleMouseDown : function(e){ - ev = Ext.EventObject.setEvent(e); - var t = this.fly(ev.getTarget()); - if(t.hasClass("x-grid-split")){ - this.cellIndex = this.view.getCellIndex(t.dom); - this.split = t.dom; - this.cm = this.grid.colModel; - if(this.cm.isResizable(this.cellIndex) && !this.cm.isFixed(this.cellIndex)){ - Ext.grid.SplitDragZone.superclass.handleMouseDown.apply(this, arguments); - } - } - }, - - endDrag : function(e){ - this.view.headersDisabled = false; - var endX = Math.max(this.minX, Ext.lib.Event.getPageX(e)); - var diff = endX - this.startPos; - this.view.onColumnSplitterMoved(this.cellIndex, this.cm.getColumnWidth(this.cellIndex)+diff); - }, - - autoOffset : function(){ - this.setDelta(0,0); - } -}); -// private -// This is a support class used internally by the Grid components -Ext.grid.GridDragZone = function(grid, config){ - this.view = grid.getView(); - Ext.grid.GridDragZone.superclass.constructor.call(this, this.view.mainBody.dom, config); - if(this.view.lockedBody){ - this.setHandleElId(Ext.id(this.view.mainBody.dom)); - this.setOuterHandleElId(Ext.id(this.view.lockedBody.dom)); - } - this.scroll = false; - this.grid = grid; - this.ddel = document.createElement('div'); - this.ddel.className = 'x-grid-dd-wrap'; -}; - -Ext.extend(Ext.grid.GridDragZone, Ext.dd.DragZone, { - ddGroup : "GridDD", - - getDragData : function(e){ - var t = Ext.lib.Event.getTarget(e); - var rowIndex = this.view.findRowIndex(t); - if(rowIndex !== false){ - var sm = this.grid.selModel; - if(!sm.isSelected(rowIndex) || e.hasModifier()){ - sm.handleMouseDown(e, t); - } - return {grid: this.grid, ddel: this.ddel, rowIndex: rowIndex, selections:sm.getSelections()}; - } - return false; - }, - - onInitDrag : function(e){ - var data = this.dragData; - this.ddel.innerHTML = this.grid.getDragDropText(); - this.proxy.update(this.ddel); - // fire start drag? - }, - - afterRepair : function(){ - this.dragging = false; - }, - - getRepairXY : function(e, data){ - return false; - }, - - onEndDrag : function(data, e){ - // fire end drag? - }, - - onValidDrop : function(dd, e, id){ - // fire drag drop? - this.hideProxy(); - }, - - beforeInvalidDrop : function(e, id){ - - } -}); - -Ext.grid.ColumnModel = function(config){ - Ext.grid.ColumnModel.superclass.constructor.call(this); - - this.config = config; - this.lookup = {}; - - // if id, create one - // if the column does not have a dataIndex mapping, - // map it to the order it is in the config - for(var i = 0, len = config.length; i < len; i++){ - if(typeof config[i].dataIndex == "undefined"){ - config[i].dataIndex = i; - } - if(typeof config[i].renderer == "string"){ - config[i].renderer = Ext.util.Format[config[i].renderer]; - } - if(typeof config[i].id == "undefined"){ - config[i].id = i; - } - this.lookup[config[i].id] = config[i]; - } - - - this.defaultWidth = 100; - - - this.defaultSortable = false; - - this.addEvents({ - - "widthchange": true, - - "headerchange": true, - - "hiddenchange": true, - - "columnmoved" : true, - - "columnlockchange" : true - }); - Ext.grid.ColumnModel.superclass.constructor.call(this); -}; -Ext.extend(Ext.grid.ColumnModel, Ext.util.Observable, { - - - - - - - - - - - getColumnId : function(index){ - return this.config[index].id; - }, - - getColumnById : function(id){ - return this.lookup[id]; - }, - - getIndexById : function(id){ - for(var i = 0, len = this.config.length; i < len; i++){ - if(this.config[i].id == id){ - return i; - } - } - return -1; - }, - - moveColumn : function(oldIndex, newIndex){ - var c = this.config[oldIndex]; - this.config.splice(oldIndex, 1); - this.config.splice(newIndex, 0, c); - this.dataMap = null; - this.fireEvent("columnmoved", this, oldIndex, newIndex); - }, - - isLocked : function(colIndex){ - return this.config[colIndex].locked === true; - }, - - setLocked : function(colIndex, value, suppressEvent){ - if(this.isLocked(colIndex) == value){ - return; - } - this.config[colIndex].locked = value; - if(!suppressEvent){ - this.fireEvent("columnlockchange", this, colIndex, value); - } - }, - - getTotalLockedWidth : function(){ - var totalWidth = 0; - for(var i = 0; i < this.config.length; i++){ - if(this.isLocked(i) && !this.isHidden(i)){ - this.totalWidth += this.getColumnWidth(i); - } - } - return totalWidth; - }, - - getLockedCount : function(){ - for(var i = 0, len = this.config.length; i < len; i++){ - if(!this.isLocked(i)){ - return i; - } - } - }, - - - getColumnCount : function(visibleOnly){ - if(visibleOnly === true){ - var c = 0; - for(var i = 0, len = this.config.length; i < len; i++){ - if(!this.isHidden(i)){ - c++; - } - } - return c; - } - return this.config.length; - }, - - - getColumnsBy : function(fn, scope){ - var r = []; - for(var i = 0, len = this.config.length; i < len; i++){ - var c = this.config[i]; - if(fn.call(scope||this, c, i) === true){ - r[r.length] = c; - } - } - return r; - }, - - - isSortable : function(col){ - if(typeof this.config[col].sortable == "undefined"){ - return this.defaultSortable; - } - return this.config[col].sortable; - }, - - - getRenderer : function(col){ - if(!this.config[col].renderer){ - return Ext.grid.ColumnModel.defaultRenderer; - } - return this.config[col].renderer; - }, - - - setRenderer : function(col, fn){ - this.config[col].renderer = fn; - }, - - - getColumnWidth : function(col){ - return this.config[col].width || this.defaultWidth; - }, - - - setColumnWidth : function(col, width, suppressEvent){ - this.config[col].width = width; - this.totalWidth = null; - if(!suppressEvent){ - this.fireEvent("widthchange", this, col, width); - } - }, - - - getTotalWidth : function(includeHidden){ - if(!this.totalWidth){ - this.totalWidth = 0; - for(var i = 0, len = this.config.length; i < len; i++){ - if(includeHidden || !this.isHidden(i)){ - this.totalWidth += this.getColumnWidth(i); - } - } - } - return this.totalWidth; - }, - - - getColumnHeader : function(col){ - return this.config[col].header; - }, - - - setColumnHeader : function(col, header){ - this.config[col].header = header; - this.fireEvent("headerchange", this, col, header); - }, - - - getColumnTooltip : function(col){ - return this.config[col].tooltip; - }, - - setColumnTooltip : function(col, tooltip){ - this.config[col].tooltip = tooltip; - }, - - - getDataIndex : function(col){ - return this.config[col].dataIndex; - }, - - - setDataIndex : function(col, dataIndex){ - this.config[col].dataIndex = dataIndex; - }, - - findColumnIndex : function(dataIndex){ - var c = this.config; - for(var i = 0, len = c.length; i < len; i++){ - if(c[i].dataIndex == dataIndex){ - return i; - } - } - return -1; - }, - - - isCellEditable : function(colIndex, rowIndex){ - return (this.config[colIndex].editable || (typeof this.config[colIndex].editable == "undefined" && this.config[colIndex].editor)) ? true : false; - }, - - - getCellEditor : function(colIndex, rowIndex){ - return this.config[colIndex].editor; - }, - - - setEditable : function(col, editable){ - this.config[col].editable = editable; - }, - - - - isHidden : function(colIndex){ - return this.config[colIndex].hidden; - }, - - - - isFixed : function(colIndex){ - return this.config[colIndex].fixed; - }, - - - isResizable : function(colIndex){ - return colIndex >= 0 && this.config[colIndex].resizable !== false && this.config[colIndex].fixed !== true; - }, - - setHidden : function(colIndex, hidden){ - this.config[colIndex].hidden = hidden; - this.totalWidth = null; - this.fireEvent("hiddenchange", this, colIndex, hidden); - }, - - - setEditor : function(col, editor){ - this.config[col].editor = editor; - } -}); - -Ext.grid.ColumnModel.defaultRenderer = function(value){ - if(typeof value == "string" && value.length < 1){ - return " "; - } - return value; -}; - -// Alias for backwards compatibility -Ext.grid.DefaultColumnModel = Ext.grid.ColumnModel; - - -Ext.grid.AbstractSelectionModel = function(){ - this.locked = false; - Ext.grid.AbstractSelectionModel.superclass.constructor.call(this); -}; - -Ext.extend(Ext.grid.AbstractSelectionModel, Ext.util.Observable, { - - init : function(grid){ - this.grid = grid; - this.initEvents(); - }, - - - lock : function(){ - this.locked = true; - }, - - - unlock : function(){ - this.locked = false; - }, - - - isLocked : function(){ - return this.locked; - } -}); - -Ext.grid.RowSelectionModel = function(config){ - Ext.apply(this, config); - this.selections = new Ext.util.MixedCollection(false, function(o){ - return o.id; - }); - - this.last = false; - this.lastActive = false; - - this.addEvents({ - - "selectionchange" : true, - - "beforerowselect" : true, - - "rowselect" : true, - - "rowdeselect" : true - }); - - this.locked = false; -}; - -Ext.extend(Ext.grid.RowSelectionModel, Ext.grid.AbstractSelectionModel, { - - singleSelect : false, - - // private - initEvents : function(){ - - if(!this.grid.enableDragDrop && !this.grid.enableDrag){ - this.grid.on("mousedown", this.handleMouseDown, this); - } - - this.rowNav = new Ext.KeyNav(this.grid.getGridEl(), { - "up" : function(e){ - if(!e.shiftKey){ - this.selectPrevious(e.shiftKey); - }else if(this.last !== false && this.lastActive !== false){ - var last = this.last; - this.selectRange(this.last, this.lastActive-1); - this.grid.getView().focusRow(this.lastActive); - if(last !== false){ - this.last = last; - } - }else{ - this.selectFirstRow(); - } - }, - "down" : function(e){ - if(!e.shiftKey){ - this.selectNext(e.shiftKey); - }else if(this.last !== false && this.lastActive !== false){ - var last = this.last; - this.selectRange(this.last, this.lastActive+1); - this.grid.getView().focusRow(this.lastActive); - if(last !== false){ - this.last = last; - } - }else{ - this.selectFirstRow(); - } - }, - scope: this - }); - - var view = this.grid.view; - view.on("refresh", this.onRefresh, this); - view.on("rowupdated", this.onRowUpdated, this); - view.on("rowremoved", this.onRemove, this); - }, - - // private - onRefresh : function(){ - var ds = this.grid.dataSource, i, v = this.grid.view; - var s = this.selections; - s.each(function(r){ - if((i = ds.indexOfId(r.id)) != -1){ - v.onRowSelect(i); - }else{ - s.remove(r); - } - }); - }, - - // private - onRemove : function(v, index, r){ - this.selections.remove(r); - }, - - // private - onRowUpdated : function(v, index, r){ - if(this.isSelected(r)){ - v.onRowSelect(index); - } - }, - - - selectRecords : function(records, keepExisting){ - if(!keepExisting){ - this.clearSelections(); - } - var ds = this.grid.dataSource; - for(var i = 0, len = records.length; i < len; i++){ - this.selectRow(ds.indexOf(records[i]), true); - } - }, - - - getCount : function(){ - return this.selections.length; - }, - - - selectFirstRow : function(){ - this.selectRow(0); - }, - - - selectLastRow : function(keepExisting){ - this.selectRow(this.grid.dataSource.getCount() - 1, keepExisting); - }, - - - selectNext : function(keepExisting){ - if(this.last !== false && (this.last+1) < this.grid.dataSource.getCount()){ - this.selectRow(this.last+1, keepExisting); - this.grid.getView().focusRow(this.last); - } - }, - - - selectPrevious : function(keepExisting){ - if(this.last){ - this.selectRow(this.last-1, keepExisting); - this.grid.getView().focusRow(this.last); - } - }, - - - getSelections : function(){ - return [].concat(this.selections.items); - }, - - - getSelected : function(){ - return this.selections.itemAt(0); - }, - - - - clearSelections : function(fast){ - if(this.locked) return; - if(fast !== true){ - var ds = this.grid.dataSource; - var s = this.selections; - s.each(function(r){ - this.deselectRow(ds.indexOfId(r.id)); - }, this); - s.clear(); - }else{ - this.selections.clear(); - } - this.last = false; - }, - - - - selectAll : function(){ - if(this.locked) return; - this.selections.clear(); - for(var i = 0, len = this.grid.dataSource.getCount(); i < len; i++){ - this.selectRow(i, true); - } - }, - - - hasSelection : function(){ - return this.selections.length > 0; - }, - - - isSelected : function(index){ - var r = typeof index == "number" ? this.grid.dataSource.getAt(index) : index; - return (r && this.selections.key(r.id) ? true : false); - }, - - - isIdSelected : function(id){ - return (this.selections.key(id) ? true : false); - }, - - // private - handleMouseDown : function(e, t){ - var view = this.grid.getView(), rowIndex; - if(this.isLocked() || (rowIndex = view.findRowIndex(t)) === false){ - return; - }; - if(e.shiftKey && this.last !== false){ - var last = this.last; - this.selectRange(last, rowIndex, e.ctrlKey); - this.last = last; // reset the last - view.focusRow(rowIndex); - }else{ - var isSelected = this.isSelected(rowIndex); - if(e.button != 0 && isSelected){ - view.focusRow(rowIndex); - }else if(e.ctrlKey && isSelected){ - this.deselectRow(rowIndex); - }else{ - this.selectRow(rowIndex, e.button == 0 && (e.ctrlKey || e.shiftKey)); - view.focusRow(rowIndex); - } - } - }, - - - selectRows : function(rows, keepExisting){ - if(!keepExisting){ - this.clearSelections(); - } - for(var i = 0, len = rows.length; i < len; i++){ - this.selectRow(rows[i], true); - } - }, - - - selectRange : function(startRow, endRow, keepExisting){ - if(this.locked) return; - if(!keepExisting){ - this.clearSelections(); - } - if(startRow <= endRow){ - for(var i = startRow; i <= endRow; i++){ - this.selectRow(i, true); - } - }else{ - for(var i = startRow; i >= endRow; i--){ - this.selectRow(i, true); - } - } - }, - - - deselectRange : function(startRow, endRow, preventViewNotify){ - if(this.locked) return; - for(var i = startRow; i <= endRow; i++){ - this.deselectRow(i, preventViewNotify); - } - }, - - - selectRow : function(index, keepExisting, preventViewNotify){ - if(this.locked || (index < 0 || index >= this.grid.dataSource.getCount())) return; - if(this.fireEvent("beforerowselect", this, index, keepExisting) !== false){ - if(!keepExisting || this.singleSelect){ - this.clearSelections(); - } - var r = this.grid.dataSource.getAt(index); - this.selections.add(r); - this.last = this.lastActive = index; - if(!preventViewNotify){ - this.grid.getView().onRowSelect(index); - } - this.fireEvent("rowselect", this, index, r); - this.fireEvent("selectionchange", this); - } - }, - - - deselectRow : function(index, preventViewNotify){ - if(this.locked) return; - if(this.last == index){ - this.last = false; - } - if(this.lastActive == index){ - this.lastActive = false; - } - var r = this.grid.dataSource.getAt(index); - this.selections.remove(r); - if(!preventViewNotify){ - this.grid.getView().onRowDeselect(index); - } - this.fireEvent("rowdeselect", this, index); - this.fireEvent("selectionchange", this); - }, - - // private - restoreLast : function(){ - if(this._last){ - this.last = this._last; - } - }, - - // private - acceptsNav : function(row, col, cm){ - return !cm.isHidden(col) && cm.isCellEditable(col, row); - }, - - // private - onEditorKey : function(field, e){ - var k = e.getKey(), newCell, g = this.grid, ed = g.activeEditor; - if(k == e.TAB){ - e.stopEvent(); - ed.completeEdit(); - if(e.shiftKey){ - newCell = g.walkCells(ed.row, ed.col-1, -1, this.acceptsNav, this); - }else{ - newCell = g.walkCells(ed.row, ed.col+1, 1, this.acceptsNav, this); - } - }else if(k == e.ENTER && !e.ctrlKey){ - e.stopEvent(); - ed.completeEdit(); - if(e.shiftKey){ - newCell = g.walkCells(ed.row-1, ed.col, -1, this.acceptsNav, this); - }else{ - newCell = g.walkCells(ed.row+1, ed.col, 1, this.acceptsNav, this); - } - }else if(k == e.ESC){ - ed.cancelEdit(); - } - if(newCell){ - g.startEditing(newCell[0], newCell[1]); - } - } -}); - -Ext.grid.CellSelectionModel = function(config){ - Ext.apply(this, config); - - this.selection = null; - - this.addEvents({ - - "beforecellselect" : true, - - "cellselect" : true, - - "selectionchange" : true - }); -}; - -Ext.extend(Ext.grid.CellSelectionModel, Ext.grid.AbstractSelectionModel, { - - - initEvents : function(){ - this.grid.on("mousedown", this.handleMouseDown, this); - this.grid.getGridEl().on(Ext.isIE ? "keydown" : "keypress", this.handleKeyDown, this); - var view = this.grid.view; - view.on("refresh", this.onViewChange, this); - view.on("rowupdated", this.onRowUpdated, this); - view.on("beforerowremoved", this.clearSelections, this); - view.on("beforerowsinserted", this.clearSelections, this); - if(this.grid.isEditor){ - this.grid.on("beforeedit", this.beforeEdit, this); - } - }, - - beforeEdit : function(e){ - this.select(e.row, e.column, false, true, e.record); - }, - - onRowUpdated : function(v, index, r){ - if(this.selection && this.selection.record == r){ - v.onCellSelect(index, this.selection.cell[1]); - } - }, - - onViewChange : function(){ - this.clearSelections(true); - }, - - getSelectedCell : function(){ - return this.selection ? this.selection.cell : null; - }, - - - clearSelections : function(preventNotify){ - var s = this.selection; - if(s){ - if(preventNotify !== true){ - this.grid.view.onCellDeselect(s.cell[0], s.cell[1]); - } - this.selection = null; - this.fireEvent("selectionchange", this, null); - } - }, - - - hasSelection : function(){ - return this.selection ? true : false; - }, - - - handleMouseDown : function(e, t){ - var v = this.grid.getView(); - if(this.isLocked()){ - return; - }; - var row = v.findRowIndex(t); - var cell = v.findCellIndex(t); - if(row !== false && cell !== false){ - this.select(row, cell); - } - }, - - - select : function(rowIndex, colIndex, preventViewNotify, preventFocus, r){ - if(this.fireEvent("beforecellselect", this, rowIndex, colIndex) !== false){ - this.clearSelections(); - r = r || this.grid.dataSource.getAt(rowIndex); - this.selection = { - record : r, - cell : [rowIndex, colIndex] - }; - if(!preventViewNotify){ - var v = this.grid.getView(); - v.onCellSelect(rowIndex, colIndex); - if(preventFocus !== true){ - v.focusCell(rowIndex, colIndex); - } - } - this.fireEvent("cellselect", this, rowIndex, colIndex); - this.fireEvent("selectionchange", this, this.selection); - } - }, - - isSelectable : function(rowIndex, colIndex, cm){ - return !cm.isHidden(colIndex); - }, - - - handleKeyDown : function(e){ - if(!e.isNavKeyPress()){ - return; - } - var g = this.grid, s = this.selection; - if(!s){ - e.stopEvent(); - var cell = g.walkCells(0, 0, 1, this.isSelectable, this); - if(cell){ - this.select(cell[0], cell[1]); - } - return; - } - var sm = this; - var walk = function(row, col, step){ - return g.walkCells(row, col, step, sm.isSelectable, sm); - }; - var k = e.getKey(), r = s.cell[0], c = s.cell[1]; - var newCell; - - switch(k){ - case e.TAB: - if(e.shiftKey){ - newCell = walk(r, c-1, -1); - }else{ - newCell = walk(r, c+1, 1); - } - break; - case e.DOWN: - newCell = walk(r+1, c, 1); - break; - case e.UP: - newCell = walk(r-1, c, -1); - break; - case e.RIGHT: - newCell = walk(r, c+1, 1); - break; - case e.LEFT: - newCell = walk(r, c-1, -1); - break; - case e.ENTER: - if(g.isEditor && !g.editing){ - g.startEditing(r, c); - e.stopEvent(); - return; - } - break; - }; - if(newCell){ - this.select(newCell[0], newCell[1]); - e.stopEvent(); - } - }, - - acceptsNav : function(row, col, cm){ - return !cm.isHidden(col) && cm.isCellEditable(col, row); - }, - - onEditorKey : function(field, e){ - var k = e.getKey(), newCell, g = this.grid, ed = g.activeEditor; - if(k == e.TAB){ - if(e.shiftKey){ - newCell = g.walkCells(ed.row, ed.col-1, -1, this.acceptsNav, this); - }else{ - newCell = g.walkCells(ed.row, ed.col+1, 1, this.acceptsNav, this); - } - e.stopEvent(); - }else if(k == e.ENTER && !e.ctrlKey){ - ed.completeEdit(); - e.stopEvent(); - }else if(k == e.ESC){ - ed.cancelEdit(); - } - if(newCell){ - g.startEditing(newCell[0], newCell[1]); - } - } -}); - -Ext.grid.EditorGrid = function(container, config){ - Ext.grid.EditorGrid.superclass.constructor.call(this, container, config); - this.getGridEl().addClass("xedit-grid"); - - if(!this.selModel){ - this.selModel = new Ext.grid.CellSelectionModel(); - } - - this.activeEditor = null; - - this.addEvents({ - - "beforeedit" : true, - - "afteredit" : true, - - "validateedit" : true - }); - this.on("bodyscroll", this.stopEditing, this); - this.on(this.clicksToEdit == 1 ? "cellclick" : "celldblclick", this.onCellDblClick, this); -}; - -Ext.extend(Ext.grid.EditorGrid, Ext.grid.Grid, { - isEditor : true, - clicksToEdit: 2, - trackMouseOver: false, // causes very odd FF errors - - onCellDblClick : function(g, row, col){ - this.startEditing(row, col); - }, - - onEditComplete : function(ed, value, startValue){ - this.editing = false; - this.activeEditor = null; - ed.un("specialkey", this.selModel.onEditorKey, this.selModel); - if(String(value) != String(startValue)){ - var r = ed.record; - var field = this.colModel.getDataIndex(ed.col); - var e = { - grid: this, - record: r, - field: field, - originalValue: startValue, - value: value, - row: ed.row, - column: ed.col, - cancel:false - }; - if(this.fireEvent("validateedit", e) !== false && !e.cancel){ - r.set(field, e.value); - delete e.cancel; - this.fireEvent("afteredit", e); - } - } - this.view.focusCell(ed.row, ed.col); - }, - - - startEditing : function(row, col){ - this.stopEditing(); - if(this.colModel.isCellEditable(col, row)){ - this.view.ensureVisible(row, col, true); - var r = this.dataSource.getAt(row); - var field = this.colModel.getDataIndex(col); - var e = { - grid: this, - record: r, - field: field, - value: r.data[field], - row: row, - column: col, - cancel:false - }; - if(this.fireEvent("beforeedit", e) !== false && !e.cancel){ - this.editing = true; - var ed = this.colModel.getCellEditor(col, row); - if(!ed.rendered){ - ed.render(ed.parentEl || document.body); - } - (function(){ // complex but required for focus issues in safari, ie and opera - ed.row = row; - ed.col = col; - ed.record = r; - ed.on("complete", this.onEditComplete, this, {single: true}); - ed.on("specialkey", this.selModel.onEditorKey, this.selModel); - this.activeEditor = ed; - var v = r.data[field]; - ed.startEdit(this.view.getCell(row, col), v); - }).defer(50, this); - } - } - }, - - - stopEditing : function(){ - if(this.activeEditor){ - this.activeEditor.completeEdit(); - } - this.activeEditor = null; - } -}); -// private -// This is a support class used internally by the Grid components -Ext.grid.GridEditor = function(field, config){ - Ext.grid.GridEditor.superclass.constructor.call(this, field, config); - field.monitorTab = false; -}; - -Ext.extend(Ext.grid.GridEditor, Ext.Editor, { - alignment: "tl-tl", - autoSize: "width", - hideEl : false, - cls: "x-small-editor x-grid-editor", - shim:false, - shadow:"frame" -}); -Ext.grid.PropertyRecord = Ext.data.Record.create([ - {name:'name',type:'string'}, 'value' -]); - -Ext.grid.PropertyStore = function(grid, source){ - this.grid = grid; - this.store = new Ext.data.Store({ - recordType : Ext.grid.PropertyRecord - }); - this.store.on('update', this.onUpdate, this); - if(source){ - this.setSource(source); - } - Ext.grid.PropertyStore.superclass.constructor.call(this); -}; -Ext.extend(Ext.grid.PropertyStore, Ext.util.Observable, { - setSource : function(o){ - this.source = o; - this.store.removeAll(); - var data = []; - for(var k in o){ - if(this.isEditableValue(o[k])){ - data.push(new Ext.grid.PropertyRecord({name: k, value: o[k]}, k)); - } - } - this.store.loadRecords({records: data}, {}, true); - }, - - onUpdate : function(ds, record, type){ - if(type == Ext.data.Record.EDIT){ - var v = record.data['value']; - var oldValue = record.modified['value']; - if(this.grid.fireEvent('beforepropertychange', this.source, record.id, v, oldValue) !== false){ - this.source[record.id] = v; - record.commit(); - this.grid.fireEvent('propertychange', this.source, record.id, v, oldValue); - }else{ - record.reject(); - } - } - }, - - getProperty : function(row){ - return this.store.getAt(row); - }, - - isEditableValue: function(val){ - if(val && val instanceof Date){ - return true; - }else if(typeof val == 'object' || typeof val == 'function'){ - return false; - } - return true; - }, - - setValue : function(prop, value){ - this.source[prop] = value; - this.store.getById(prop).set('value', value); - }, - - getSource : function(){ - return this.source; - } -}); - -Ext.grid.PropertyColumnModel = function(grid, store){ - this.grid = grid; - var g = Ext.grid; - g.PropertyColumnModel.superclass.constructor.call(this, [ - {header: this.nameText, sortable: true, dataIndex:'name', id: 'name'}, - {header: this.valueText, resizable:false, dataIndex: 'value', id: 'value'} - ]); - this.store = store; - this.bselect = Ext.DomHelper.append(document.body, { - tag: 'select', style:'display:none', cls: 'x-grid-editor', children: [ - {tag: 'option', value: 'true', html: 'true'}, - {tag: 'option', value: 'false', html: 'false'} - ] - }); - Ext.id(this.bselect); - var f = Ext.form; - this.editors = { - 'date' : new g.GridEditor(new f.DateField({selectOnFocus:true})), - 'string' : new g.GridEditor(new f.TextField({selectOnFocus:true})), - 'number' : new g.GridEditor(new f.NumberField({selectOnFocus:true, style:'text-align:left;'})), - 'boolean' : new g.GridEditor(new f.Field({el:this.bselect,selectOnFocus:true})) - }; - this.renderCellDelegate = this.renderCell.createDelegate(this); - this.renderPropDelegate = this.renderProp.createDelegate(this); -}; - -Ext.extend(Ext.grid.PropertyColumnModel, Ext.grid.ColumnModel, { - nameText : 'Name', - valueText : 'Value', - dateFormat : 'm/j/Y', - renderDate : function(dateVal){ - return dateVal.dateFormat(this.dateFormat); - }, - - renderBool : function(bVal){ - return bVal ? 'true' : 'false'; - }, - - isCellEditable : function(colIndex, rowIndex){ - return colIndex == 1; - }, - - getRenderer : function(col){ - return col == 1 ? - this.renderCellDelegate : this.renderPropDelegate; - }, - - renderProp : function(v){ - return this.getPropertyName(v); - }, - - renderCell : function(val){ - var rv = val; - if(val instanceof Date){ - rv = this.renderDate(val); - }else if(typeof val == 'boolean'){ - rv = this.renderBool(val); - } - return Ext.util.Format.htmlEncode(rv); - }, - - getPropertyName : function(name){ - var pn = this.grid.propertyNames; - return pn && pn[name] ? pn[name] : name; - }, - - getCellEditor : function(colIndex, rowIndex){ - var p = this.store.getProperty(rowIndex); - var n = p.data['name'], val = p.data['value']; - if(this.grid.customEditors[n]){ - return this.grid.customEditors[n]; - } - if(val instanceof Date){ - return this.editors['date']; - }else if(typeof val == 'number'){ - return this.editors['number']; - }else if(typeof val == 'boolean'){ - return this.editors['boolean']; - }else{ - return this.editors['string']; - } - } -}); - -Ext.grid.PropertyGrid = function(container, config){ - config = config || {}; - var store = new Ext.grid.PropertyStore(this); - this.store = store; - var cm = new Ext.grid.PropertyColumnModel(this, store); - store.store.sort('name', 'ASC'); - Ext.grid.PropertyGrid.superclass.constructor.call(this, container, Ext.apply({ - ds: store.store, - cm: cm, - enableColLock:false, - enableColumnMove:false, - stripeRows:false, - trackMouseOver: false, - clicksToEdit:1 - }, config)); - this.getGridEl().addClass('x-props-grid'); - this.lastEditRow = null; - this.on('columnresize', this.onColumnResize, this); - this.addEvents({ - beforepropertychange: true, - propertychange: true - }); - this.customEditors = this.customEditors || {}; -}; -Ext.extend(Ext.grid.PropertyGrid, Ext.grid.EditorGrid, { - render : function(){ - Ext.grid.PropertyGrid.superclass.render.call(this); - this.autoSize.defer(100, this); - }, - - autoSize : function(){ - Ext.grid.PropertyGrid.superclass.autoSize.call(this); - if(this.view){ - this.view.fitColumns(); - } - }, - - onColumnResize : function(){ - this.colModel.setColumnWidth(1, this.container.getWidth(true)-this.colModel.getColumnWidth(0)); - this.autoSize(); - }, - - setSource : function(source){ - this.store.setSource(source); - //this.autoSize(); - }, - - getSource : function(){ - return this.store.getSource(); - } -}); - -Ext.LoadMask = function(el, config){ - this.el = Ext.get(el); - Ext.apply(this, config); - if(this.store){ - this.store.on('beforeload', this.onBeforeLoad, this); - this.store.on('load', this.onLoad, this); - this.store.on('loadexception', this.onLoad, this); - this.removeMask = false; - }else{ - var um = this.el.getUpdateManager(); - um.showLoadIndicator = false; // disable the default indicator - um.on('beforeupdate', this.onBeforeLoad, this); - um.on('update', this.onLoad, this); - um.on('failure', this.onLoad, this); - this.removeMask = true; - } -}; - -Ext.LoadMask.prototype = { - - - msg : 'Loading...', - - msgCls : 'x-mask-loading', - - - disabled: false, - - - disable : function(){ - this.disabled = true; - }, - - - enable : function(){ - this.disabled = false; - }, - - // private - onLoad : function(){ - this.el.unmask(this.removeMask); - }, - - // private - onBeforeLoad : function(){ - if(!this.disabled){ - this.el.mask(this.msg, this.msgCls); - } - }, - - // private - destroy : function(){ - if(this.store){ - this.store.un('beforeload', this.onBeforeLoad, this); - this.store.un('load', this.onLoad, this); - this.store.un('loadexception', this.onLoad, this); - }else{ - var um = this.el.getUpdateManager(); - um.un('beforeupdate', this.onBeforeLoad, this); - um.un('update', this.onLoad, this); - um.un('failure', this.onLoad, this); - } - } -}; -Ext.debug = { - init : function(){ - var CP = Ext.ContentPanel; - var bd = Ext.get(document.body); - - // create the dialog - var dlg = new Ext.LayoutDialog('x-debug-browser', { - autoCreate:true, - width:800, - height:450, - title: 'Ext Debug Console & Inspector', - proxyDrag:true, - shadow:true, - center:{alwaysShowTabs:true}, - constraintoviewport:false - }); - - // prevent dialog events from bubbling - dlg.el.swallowEvent('click'); - - // build the layout - var mainLayout = dlg.getLayout(); - mainLayout.beginUpdate(); - - // create the nested layouts - var clayout = mainLayout.add('center', - new Ext.debug.InnerLayout('x-debug-console', 400, { - title: 'Debug Console' - } - )); - - var ilayout = mainLayout.add('center', - new Ext.debug.InnerLayout('x-debug-inspector', 250, { - title: 'DOM Inspector' - } - )); - - var scriptPanel = clayout.add('east', new CP({ - autoCreate:{ - tag: 'div', children: [ - {tag: 'div'}, - {tag:'textarea'} - ] - }, - fitContainer:true, - fitToFrame:true, - title:'Script Console', - autoScroll: Ext.isGecko, // hideous block for firefox missing cursor AND bad sizing textareas - setSize : function(w, h){ - Ext.ContentPanel.prototype.setSize.call(this, w, h); - if(Ext.isGecko && Ext.isStrict){ - var s = this.adjustForComponents(w, h); - this.resizeEl.setSize(s.width-2, s.height-2); - } - } - })); - var sel = scriptPanel.el; - var script = sel.child('textarea'); - scriptPanel.resizeEl = script; - var sctb = scriptPanel.toolbar = new Ext.Toolbar(sel.child('div')); - sctb.add({ - text: 'Run', - handler: function(){ - var s = script.dom.value; - if(trap.checked){ - try{ - var rt = eval(s); - Ext.debug.dump(rt === undefined? '(no return)' : rt); - }catch(e){ - Ext.debug.log(e.message || e.descript); - } - }else{ - var rt = eval(s); - Ext.debug.dump(rt === undefined? '(no return)' : rt); - } - } - }, { - text: 'Clear', - handler: function(){ - script.dom.value = ''; - script.dom.focus(); - } - }); - - var trap = Ext.DomHelper.append(sctb.el, {tag:'input', type:'checkbox', checked: 'checked'}); - trap.checked = true; - sctb.add('-', trap, 'Trap Errors'); - - - var stylesGrid = new Ext.grid.PropertyGrid(bd.createChild(), { - nameText: 'Style', - enableHdMenu: false, - enableColumnResize: false - }); - - var stylePanel = ilayout.add('east', new Ext.GridPanel(stylesGrid, - {title: '(No element selected)'})); - - stylesGrid.render(); - - // hide the header - stylesGrid.getView().mainHd.setDisplayed(false); - - clayout.tbar.add({ - text: 'Clear', - handler: function(){ - Ext.debug.console.jsonData = []; - Ext.debug.console.refresh(); - } - }); - - var treeEl = ilayout.main.getEl(); - // create main inspector toolbar - var tb = ilayout.tbar; - - var inspectIgnore, inspecting; - - function inspectListener(e, t){ - if(!inspectIgnore.contains(e.getPoint())){ - findNode(t); - } - } - - function stopInspecting(e, t){ - if(!inspectIgnore.contains(e.getPoint())){ - inspect.toggle(false); - if(findNode(t) !== false){ - e.stopEvent(); - } - } - } - - function stopInspectingEsc(e, t){ - if(e.getKey() == e.ESC){ - inspect.toggle(false); - } - } - - var inspect = tb.addButton({ - text: 'Inspect', - enableToggle: true, - pressed:false, - toggleHandler: function(n, pressed){ - var d = Ext.get(document); - if(pressed){ - d.on('mouseover', inspectListener, window, {buffer:50}); - d.on('mousedown', stopInspecting); - d.on('keydown', stopInspectingEsc); - inspectIgnore = dlg.el.getRegion(); - inspecting = true; - }else{ - d.un('mouseover', inspectListener); - d.un('mousedown', stopInspecting); - d.on('keydown', stopInspectingEsc); - inspecting = false; - var n = tree.getSelectionModel().getSelectedNode(); - if(n && n.htmlNode){ - onNodeSelect(tree, n, false); - } - } - } - }); - - tb.addSeparator(); - - var frameEl = tb.addButton({ - text: 'Highlight Selection', - enableToggle: true, - pressed:false, - toggleHandler: function(n, pressed){ - var n = tree.getSelectionModel().getSelectedNode(); - if(n && n.htmlNode){ - n[pressed ? 'frame' : 'unframe'](); - } - } - }); - - tb.addSeparator(); - - var reload = tb.addButton({ - text: 'Refresh Children', - disabled:true, - handler: function(){ - var n = tree.getSelectionModel().getSelectedNode(); - if(n && n.reload){ - n.reload(); - } - } - }); - - tb.add( '-', { - text: 'Collapse All', - handler: function(){ - tree.root.collapse(true); - } - }); - - // perform the main layout - mainLayout.endUpdate(); - - mainLayout.getRegion('center').showPanel(0); - - stylesGrid.on('propertychange', function(s, name, value){ - var node = stylesGrid.treeNode; - if(styles){ - node.htmlNode.style[name] = value; - }else{ - node.htmlNode[name] = value; - } - node.refresh(true); - }); - - // Create the style toolbar - var stb = new Ext.Toolbar(stylesGrid.view.getHeaderPanel(true)); - - var swap = stb.addButton({ - text: 'DOM Attributes', - menu: { - items: [ - new Ext.menu.CheckItem({id:'dom', text:'DOM Attributes', checked: true, group:'xdb-styles'}), - new Ext.menu.CheckItem({id:'styles', text:'CSS Properties', group:'xdb-styles'}) - ] - } - }); - - swap.menu.on('click', function(){ - styles = swap.menu.items.get('styles').checked; - showAll[styles? 'show' : 'hide'](); - swap.setText(styles ? 'CSS Properties' : 'DOM Attributes'); - var n = tree.getSelectionModel().getSelectedNode(); - if(n){ - onNodeSelect(tree, n); - } - }); - - var addStyle = stb.addButton({ - text: 'Add', - disabled: true, - handler: function(){ - Ext.MessageBox.prompt('Add Property', 'Property Name:', function(btn, v){ - // store.store is disgusting TODO: clean up the API - var store = stylesGrid.store.store; - if(btn == 'ok' && v && !store.getById(v)){ - var r = new Ext.grid.PropertyRecord({name:v, value: ''}, v); - store.add(r); - stylesGrid.startEditing(store.getCount()-1, 1); - } - }); - } - }); - - var showAll = stb.addButton({ - text: 'Computed Styles', - hidden: true, - pressed: false, - enableToggle: true, - toggleHandler: function(){ - var n = tree.getSelectionModel().getSelectedNode(); - if(n){ - onNodeSelect(tree, n); - } - } - }); - - // tree related stuff - var styles = false, hnode; - var nonSpace = /^\s*$/; - var html = Ext.util.Format.htmlEncode; - var ellipsis = Ext.util.Format.ellipsis; - var styleRe = /\s?([a-z\-]*)\:([^;]*)(?:[;\s\n\r]*)/gi; - - function findNode(n){ - if(!n || n.nodeType != 1 || n == document.body || n == document){ - return false; - } - var pn = [n], p = n; - while((p = p.parentNode) && p.nodeType == 1 && p.tagName.toUpperCase() != 'HTML'){ - pn.unshift(p); - } - var cn = hnode; - for(var i = 0, len = pn.length; i < len; i++){ - cn.expand(); - cn = cn.findChild('htmlNode', pn[i]); - if(!cn){ // in this dialog? - return false; - } - } - cn.select(); - var a = cn.ui.anchor; - treeEl.dom.scrollTop = Math.max(0 ,a.offsetTop-10); - //treeEl.dom.scrollLeft = Math.max(0 ,a.offsetLeft-10); no likey - cn.highlight(); - return true; - } - - function nodeTitle(n){ - var s = n.tagName; - if(n.id){ - s += '#'+n.id; - }else if(n.className){ - s += '.'+n.className; - } - return s; - } - - function onNodeSelect(t, n, last){ - if(last && last.unframe){ - last.unframe(); - } - var props = {}; - if(n && n.htmlNode){ - if(frameEl.pressed){ - n.frame(); - } - if(inspecting){ - return; - } - addStyle.enable(); - reload.setDisabled(n.leaf); - var dom = n.htmlNode; - stylePanel.setTitle(nodeTitle(dom)); - if(styles && !showAll.pressed){ - var s = dom.style ? dom.style.cssText : ''; - if(s){ - var m; - while ((m = styleRe.exec(s)) != null){ - props[m[1].toLowerCase()] = m[2]; - } - } - }else if(styles){ - var cl = Ext.debug.cssList; - var s = dom.style, fly = Ext.fly(dom); - if(s){ - for(var i = 0, len = cl.length; i<len; i++){ - var st = cl[i]; - var v = s[st] || fly.getStyle(st); - if(v != undefined && v !== null && v !== ''){ - props[st] = v; - } - } - } - }else{ - for(var a in dom){ - var v = dom[a]; - if((isNaN(a+10)) && v != undefined && v !== null && v !== '' && !(Ext.isGecko && a[0] == a[0].toUpperCase())){ - props[a] = v; - } - } - } - }else{ - if(inspecting){ - return; - } - addStyle.disable(); - reload.disabled(); - } - stylesGrid.setSource(props); - stylesGrid.treeNode = n; - stylesGrid.view.fitColumns(); - } - - // lets build a list of nodes to filter from the tree - // this is gonna be nasty - var filterIds = '^(?:'; - var eds = stylesGrid.colModel.editors; - for(var edType in eds){ - filterIds += eds[edType].id +'|'; - } - Ext.each([dlg.shim? dlg.shim.id : 'noshim', dlg.proxyDrag.id], function(id){ - filterIds += id +'|'; - }); - filterIds += dlg.el.id; - filterIds += ')$'; - var filterRe = new RegExp(filterIds); - - var loader = new Ext.tree.TreeLoader(); - loader.load = function(n, cb){ - var isBody = n.htmlNode == bd.dom; - var cn = n.htmlNode.childNodes; - for(var i = 0, c; c = cn[i]; i++){ - if(isBody && filterRe.test(c.id)){ - continue; - } - if(c.nodeType == 1){ - n.appendChild(new Ext.debug.HtmlNode(c)); - }else if(c.nodeType == 3 && !nonSpace.test(c.nodeValue)){ - n.appendChild(new Ext.tree.TreeNode({ - text:'<em>' + ellipsis(html(String(c.nodeValue)), 35) + '</em>', - cls: 'x-tree-noicon' - })); - } - } - cb(); - }; - - var tree = new Ext.tree.TreePanel(treeEl, { - enableDD:false , - loader: loader, - lines:false, - rootVisible:false, - animate:false, - hlColor:'ffff9c' - }); - tree.getSelectionModel().on('selectionchange', onNodeSelect, null, {buffer:250}); - - var root = tree.setRootNode(new Ext.tree.TreeNode('Ext')); - - hnode = root.appendChild(new Ext.debug.HtmlNode( - document.getElementsByTagName('html')[0] - )); - - tree.render(); - - Ext.debug.console = new Ext.JsonView(clayout.main.getEl(), - '<pre><xmp>> {msg}</xmp></pre>'); - Ext.debug.console.jsonData = []; - - Ext.debug.dialog = dlg; - }, - - show : function(){ - var d = Ext.debug; - if(!d.dialog){ - d.init(); - } - if(!d.dialog.isVisible()){ - d.dialog.show(); - } - }, - - hide : function(){ - if(Ext.debug.dialog){ - Ext.debug.dialog.hide(); - } - }, - - - log : function(arg1, arg2, etc){ - Ext.debug.show(); - var m = ""; - for(var i = 0, len = arguments.length; i < len; i++){ - m += (i == 0 ? "" : ", ") + arguments[i]; - } - var cn = Ext.debug.console; - cn.jsonData.unshift({msg: m}); - cn.refresh(); - }, - - - logf : function(format, arg1, arg2, etc){ - Ext.debug.log(String.format.apply(String, arguments)); - }, - - - dump : function(o){ - if(typeof o == 'string' || typeof o == 'number' || typeof o == 'undefined' || o instanceof Date){ - Ext.debug.log(o); - }else if(!o){ - Ext.debug.log("null"); - }else if(typeof o != "object"){ - Ext.debug.log('Unknown return type'); - }else if(o instanceof Array){ - Ext.debug.log('['+o.join(',')+']'); - }else{ - var b = ["{\n"]; - for(var key in o){ - var to = typeof o[key]; - if(to != "function" && to != "object"){ - b.push(String.format(" {0}: {1},\n", key, o[key])); - } - } - var s = b.join(""); - if(s.length > 3){ - s = s.substr(0, s.length-2); - } - Ext.debug.log(s + "\n}"); - } - }, - - _timers : {}, - - time : function(name){ - name = name || "def"; - Ext._timers[name] = new Date().getTime(); - }, - - - timeEnd : function(name, printResults){ - var t = new Date().getTime(); - name = name || "def"; - var v = String.format("{0} ms", t-Ext._timers[name]); - Ext._timers[name] = new Date().getTime(); - if(printResults !== false){ - Ext.debug.log('Timer ' + (name == "def" ? v : name + ": " + v)); - } - return v; - } -}; - -// highly unusual class declaration -Ext.debug.HtmlNode = function(){ - var html = Ext.util.Format.htmlEncode; - var ellipsis = Ext.util.Format.ellipsis; - var nonSpace = /^\s*$/; - - var attrs = [ - {n: 'id', v: 'id'}, - {n: 'className', v: 'class'}, - {n: 'name', v: 'name'}, - {n: 'type', v: 'type'}, - {n: 'src', v: 'src'}, - {n: 'href', v: 'href'} - ]; - - function hasChild(n){ - for(var i = 0, c; c = n.childNodes[i]; i++){ - if(c.nodeType == 1){ - return true; - } - } - return false; - } - - function renderNode(n, leaf){ - var tag = n.tagName.toLowerCase(); - var s = '<' + tag; - for(var i = 0, len = attrs.length; i < len; i++){ - var a = attrs[i]; - var v = n[a.n]; - if(v && !nonSpace.test(v)){ - s += ' ' + a.v + '="<i>' + html(v) +'</i>"'; - } - } - var style = n.style ? n.style.cssText : ''; - if(style){ - s += ' style="<i>' + html(style.toLowerCase()) +'</i>"'; - } - if(leaf && n.childNodes.length > 0){ - s+='><em>' + ellipsis(html(String(n.innerHTML)), 35) + '</em></'+tag+'>'; - }else if(leaf){ - s += ' />'; - }else{ - s += '>'; - } - return s; - } - - var HtmlNode = function(n){ - var leaf = !hasChild(n); - this.htmlNode = n; - this.tagName = n.tagName.toLowerCase(); - var attr = { - text : renderNode(n, leaf), - leaf : leaf, - cls: 'x-tree-noicon' - }; - HtmlNode.superclass.constructor.call(this, attr); - this.attributes.htmlNode = n; // for searching - if(!leaf){ - this.on('expand', this.onExpand, this); - this.on('collapse', this.onCollapse, this); - } - }; - - - Ext.extend(HtmlNode, Ext.tree.AsyncTreeNode, { - cls: 'x-tree-noicon', - preventHScroll: true, - refresh : function(highlight){ - var leaf = !hasChild(this.htmlNode); - this.setText(renderNode(this.htmlNode, leaf)); - if(highlight){ - Ext.fly(this.ui.textNode).highlight(); - } - }, - - onExpand : function(){ - if(!this.closeNode && this.parentNode){ - this.closeNode = this.parentNode.insertBefore(new Ext.tree.TreeNode({ - text:'</' + this.tagName + '>', - cls: 'x-tree-noicon' - }), this.nextSibling); - }else if(this.closeNode){ - this.closeNode.ui.show(); - } - }, - - onCollapse : function(){ - if(this.closeNode){ - this.closeNode.ui.hide(); - } - }, - - render : function(bulkRender){ - HtmlNode.superclass.render.call(this, bulkRender); - }, - - highlightNode : function(){ - //Ext.fly(this.htmlNode).highlight(); - }, - - highlight : function(){ - //Ext.fly(this.ui.textNode).highlight(); - }, - - frame : function(){ - this.htmlNode.style.border = '1px solid #0000ff'; - //this.highlightNode(); - }, - - unframe : function(){ - //Ext.fly(this.htmlNode).removeClass('x-debug-frame'); - this.htmlNode.style.border = ''; - } - }); - - return HtmlNode; -}(); - -// subclass for the standard layout panels -Ext.debug.InnerLayout = function(id, w, cfg){ - // console layout - var el = Ext.DomHelper.append(document.body, {id:id}); - var layout = new Ext.BorderLayout(el, { - north: { - initialSize:28 - }, - center: { - titlebar: false - }, - east: { - split:true, - initialSize:w, - titlebar:true - } - }); - Ext.debug.InnerLayout.superclass.constructor.call(this, layout, cfg); - - layout.beginUpdate(); - - var tbPanel = layout.add('north', new Ext.ContentPanel({ - autoCreate:true, fitToFrame:true})); - - this.main = layout.add('center', new Ext.ContentPanel({ - autoCreate:true, fitToFrame:true, autoScroll:true})); - - this.tbar = new Ext.Toolbar(tbPanel.el); - - var mtbEl = tbPanel.resizeEl = tbPanel.el.child('div.x-toolbar'); - mtbEl.setStyle('border-bottom', '0 none'); - - layout.endUpdate(true); -}; - -Ext.extend(Ext.debug.InnerLayout, Ext.NestedLayoutPanel, { - add : function(){ - return this.layout.add.apply(this.layout, arguments); - } -}); - -Ext.debug.cssList = ['background-color','border','border-color','border-spacing', -'border-style','border-top','border-right','border-bottom','border-left','border-top-color', -'border-right-color','border-bottom-color','border-left-color','border-top-width','border-right-width', -'border-bottom-width','border-left-width','border-width','bottom','color','font-size','font-size-adjust', -'font-stretch','font-style','height','left','letter-spacing','line-height','margin','margin-top', -'margin-right','margin-bottom','margin-left','marker-offset','max-height','max-width','min-height', -'min-width','orphans','outline','outline-color','outline-style','outline-width','overflow','padding', -'padding-top','padding-right','padding-bottom','padding-left','quotes','right','size','text-indent', -'top','width','word-spacing','z-index','opacity','outline-offset']; - -if(typeof console == 'undefined'){ - console = Ext.debug; -} - - -// attach shortcut key -Ext.EventManager.on(window, 'load', function(){ - Ext.get(document).on('keydown', function(e){ - if(e.ctrlKey && e.shiftKey && e.getKey() == e.HOME){ - Ext.debug.show(); - } - }); -}); - -// backwards compat -Ext.print = Ext.log = Ext.debug.log; -Ext.printf = Ext.logf = Ext.debug.logf; -Ext.dump = Ext.debug.dump; -Ext.timer = Ext.debug.time; -Ext.timerEnd = Ext.debug.timeEnd; - diff --git a/lib/web/extjs/ext-all.js b/lib/web/extjs/ext-all.js deleted file mode 100644 index 272989f1674350936cc1abaa7fb3ec3f86622d58..0000000000000000000000000000000000000000 --- a/lib/web/extjs/ext-all.js +++ /dev/null @@ -1,2026 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.DomHelper=function(){var tempTableEl=null;var emptyTags=/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i;var createHtml=function(o){if(typeof o=='string'){return o;} -var b="";if(!o.tag){o.tag="div";} -b+="<"+o.tag;for(var attr in o){if(attr=="tag"||attr=="children"||attr=="cn"||attr=="html"||typeof o[attr]=="function")continue;if(attr=="style"){var s=o["style"];if(typeof s=="function"){s=s.call();} -if(typeof s=="string"){b+=' style="'+s+'"';}else if(typeof s=="object"){b+=' style="';for(var key in s){if(typeof s[key]!="function"){b+=key+":"+s[key]+";";}} -b+='"';}}else{if(attr=="cls"){b+=' class="'+o["cls"]+'"';}else if(attr=="htmlFor"){b+=' for="'+o["htmlFor"]+'"';}else{b+=" "+attr+'="'+o[attr]+'"';}}} -if(emptyTags.test(o.tag)){b+="/>";}else{b+=">";var cn=o.children||o.cn;if(cn){if(cn instanceof Array){for(var i=0,len=cn.length;i<len;i++){b+=createHtml(cn[i],b);}}else{b+=createHtml(cn,b);}} -if(o.html){b+=o.html;} -b+="</"+o.tag+">";} -return b;};var createDom=function(o,parentNode){var el=document.createElement(o.tag);var useSet=el.setAttribute?true:false;for(var attr in o){if(attr=="tag"||attr=="children"||attr=="cn"||attr=="html"||attr=="style"||typeof o[attr]=="function")continue;if(attr=="cls"){el.className=o["cls"];}else{if(useSet)el.setAttribute(attr,o[attr]);else el[attr]=o[attr];}} -Ext.DomHelper.applyStyles(el,o.style);var cn=o.children||o.cn;if(cn){if(cn instanceof Array){for(var i=0,len=cn.length;i<len;i++){createDom(cn[i],el);}}else{createDom(cn,el);}} -if(o.html){el.innerHTML=o.html;} -if(parentNode){parentNode.appendChild(el);} -return el;};var ieTable=function(depth,s,h,e){tempTableEl.innerHTML=[s,h,e].join('');var i=-1,el=tempTableEl;while(++i<depth){el=el.firstChild;} -return el;};var ts='<table>',te='</table>',tbs=ts+'<tbody>',tbe='</tbody>'+te,trs=tbs+'<tr>',tre='</tr>'+tbe;var insertIntoTable=function(tag,where,el,html){if(!tempTableEl){tempTableEl=document.createElement('div');} -var node;var before=null;if(tag=='td'){if(where=='afterbegin'||where=='beforeend'){return;} -if(where=='beforebegin'){before=el;el=el.parentNode;}else{before=el.nextSibling;el=el.parentNode;} -node=ieTable(4,trs,html,tre);} -else if(tag=='tr'){if(where=='beforebegin'){before=el;el=el.parentNode;node=ieTable(3,tbs,html,tbe);}else if(where=='afterend'){before=el.nextSibling;el=el.parentNode;node=ieTable(3,tbs,html,tbe);}else{if(where=='afterbegin'){before=el.firstChild;} -node=ieTable(4,trs,html,tre);}}else if(tag=='tbody'){if(where=='beforebegin'){before=el;el=el.parentNode;node=ieTable(2,ts,html,te);}else if(where=='afterend'){before=el.nextSibling;el=el.parentNode;node=ieTable(2,ts,html,te);}else{if(where=='afterbegin'){before=el.firstChild;} -node=ieTable(3,tbs,html,tbe);}}else{if(where=='beforebegin'||where=='afterend'){return;} -if(where=='afterbegin'){before=el.firstChild;} -node=ieTable(2,ts,html,te);} -el.insertBefore(node,before);return node;};return{useDom:false,markup:function(o){return createHtml(o);},applyStyles:function(el,styles){if(styles){el=Ext.fly(el);if(typeof styles=="string"){var re=/\s?([a-z\-]*)\:\s?([^;]*);?/gi;var matches;while((matches=re.exec(styles))!=null){el.setStyle(matches[1],matches[2]);}}else if(typeof styles=="object"){for(var style in styles){el.setStyle(style,styles[style]);}}else if(typeof styles=="function"){Ext.DomHelper.applyStyles(el,styles.call());}}},insertHtml:function(where,el,html){where=where.toLowerCase();if(el.insertAdjacentHTML){var tag=el.tagName.toLowerCase();if(tag=="table"||tag=="tbody"||tag=="tr"||tag=='td'){var rs;if(rs=insertIntoTable(tag,where,el,html)){return rs;}} -switch(where){case"beforebegin":el.insertAdjacentHTML(where,html);return el.previousSibling;case"afterbegin":el.insertAdjacentHTML(where,html);return el.firstChild;case"beforeend":el.insertAdjacentHTML(where,html);return el.lastChild;case"afterend":el.insertAdjacentHTML(where,html);return el.nextSibling;} -throw'Illegal insertion point -> "'+where+'"';} -var range=el.ownerDocument.createRange();var frag;switch(where){case"beforebegin":range.setStartBefore(el);frag=range.createContextualFragment(html);el.parentNode.insertBefore(frag,el);return el.previousSibling;case"afterbegin":if(el.firstChild){range.setStartBefore(el.firstChild);frag=range.createContextualFragment(html);el.insertBefore(frag,el.firstChild);return el.firstChild;}else{el.innerHTML=html;return el.firstChild;} -case"beforeend":if(el.lastChild){range.setStartAfter(el.lastChild);frag=range.createContextualFragment(html);el.appendChild(frag);return el.lastChild;}else{el.innerHTML=html;return el.lastChild;} -case"afterend":range.setStartAfter(el);frag=range.createContextualFragment(html);el.parentNode.insertBefore(frag,el.nextSibling);return el.nextSibling;} -throw'Illegal insertion point -> "'+where+'"';},insertBefore:function(el,o,returnElement){return this.doInsert(el,o,returnElement,"beforeBegin");},insertAfter:function(el,o,returnElement){return this.doInsert(el,o,returnElement,"afterEnd","nextSibling");},insertFirst:function(el,o,returnElement){return this.doInsert(el,o,returnElement,"afterBegin");},doInsert:function(el,o,returnElement,pos,sibling){el=Ext.getDom(el);var newNode;if(this.useDom){newNode=createDom(o,null);el.parentNode.insertBefore(newNode,sibling?el[sibling]:el);}else{var html=createHtml(o);newNode=this.insertHtml(pos,el,html);} -return returnElement?Ext.get(newNode,true):newNode;},append:function(el,o,returnElement){el=Ext.getDom(el);var newNode;if(this.useDom){newNode=createDom(o,null);el.appendChild(newNode);}else{var html=createHtml(o);newNode=this.insertHtml("beforeEnd",el,html);} -return returnElement?Ext.get(newNode,true):newNode;},overwrite:function(el,o,returnElement){el=Ext.getDom(el);el.innerHTML=createHtml(o);return returnElement?Ext.get(el.firstChild,true):el.firstChild;},createTemplate:function(o){var html=createHtml(o);return new Ext.Template(html);}};}(); - -Ext.Template=function(html){if(html instanceof Array){html=html.join("");}else if(arguments.length>1){html=Array.prototype.join.call(arguments,"");} -this.html=html;};Ext.Template.prototype={applyTemplate:function(values){if(this.compiled){return this.compiled(values);} -var useF=this.disableFormats!==true;var fm=Ext.util.Format,tpl=this;var fn=function(m,name,format,args){if(format&&useF){if(format.substr(0,5)=="this."){return tpl.call(format.substr(5),values[name],values);}else{if(args){var re=/^\s*['"](.*)["']\s*$/;args=args.split(',');for(var i=0,len=args.length;i<len;i++){args[i]=args[i].replace(re,"$1");} -args=[values[name]].concat(args);}else{args=[values[name]];} -return fm[format].apply(fm,args);}}else{return values[name]!==undefined?values[name]:"";}};return this.html.replace(this.re,fn);},set:function(html,compile){this.html=html;this.compiled=null;if(compile){this.compile();} -return this;},disableFormats:false,re:/\{([\w-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,compile:function(){var fm=Ext.util.Format;var useF=this.disableFormats!==true;var sep=Ext.isGecko?"+":",";var fn=function(m,name,format,args){if(format&&useF){args=args?','+args:"";if(format.substr(0,5)!="this."){format="fm."+format+'(';}else{format='this.call("'+format.substr(5)+'", ';args=", values";}}else{args='';format="(values['"+name+"'] == undefined ? '' : ";} -return"'"+sep+format+"values['"+name+"']"+args+")"+sep+"'";};var body;if(Ext.isGecko){body="this.compiled = function(values){ return '"+ -this.html.replace(/(\r\n|\n)/g,'\\n').replace(/'/g,"\\'").replace(this.re,fn)+"';};";}else{body=["this.compiled = function(values){ return ['"];body.push(this.html.replace(/(\r\n|\n)/g,'\\n').replace("'","\\'").replace(this.re,fn));body.push("'].join('');};");body=body.join('');} -eval(body);return this;},call:function(fnName,value,allValues){return this[fnName](value,allValues);},insertFirst:function(el,values,returnElement){return this.doInsert('afterBegin',el,values,returnElement);},insertBefore:function(el,values,returnElement){return this.doInsert('beforeBegin',el,values,returnElement);},insertAfter:function(el,values,returnElement){return this.doInsert('afterEnd',el,values,returnElement);},append:function(el,values,returnElement){return this.doInsert('beforeEnd',el,values,returnElement);},doInsert:function(where,el,values,returnEl){el=Ext.getDom(el);var newNode=Ext.DomHelper.insertHtml(where,el,this.applyTemplate(values));return returnEl?Ext.get(newNode,true):newNode;},overwrite:function(el,values,returnElement){el=Ext.getDom(el);el.innerHTML=this.applyTemplate(values);return returnElement?Ext.get(el.firstChild,true):el.firstChild;}};Ext.Template.prototype.apply=Ext.Template.prototype.applyTemplate;Ext.DomHelper.Template=Ext.Template;Ext.Template.from=function(el){el=Ext.getDom(el);return new Ext.Template(el.value||el.innerHTML);};Ext.MasterTemplate=function(){Ext.MasterTemplate.superclass.constructor.apply(this,arguments);this.originalHtml=this.html;var st={};var m,re=this.subTemplateRe;re.lastIndex=0;var subIndex=0;while(m=re.exec(this.html)){var name=m[1],content=m[2];st[subIndex]={name:name,index:subIndex,buffer:[],tpl:new Ext.Template(content)};if(name){st[name]=st[subIndex];} -st[subIndex].tpl.compile();st[subIndex].tpl.call=this.call.createDelegate(this);subIndex++;} -this.subCount=subIndex;this.subs=st;};Ext.extend(Ext.MasterTemplate,Ext.Template,{subTemplateRe:/<tpl(?:\sname="([\w-]+)")?>((?:.|\n)*?)<\/tpl>/gi,add:function(name,values){if(arguments.length==1){values=arguments[0];name=0;} -var s=this.subs[name];s.buffer[s.buffer.length]=s.tpl.apply(values);return this;},fill:function(name,values,reset){var a=arguments;if(a.length==1||(a.length==2&&typeof a[1]=="boolean")){values=a[0];name=0;reset=a[1];} -if(reset){this.reset();} -for(var i=0,len=values.length;i<len;i++){this.add(name,values[i]);} -return this;},reset:function(){var s=this.subs;for(var i=0;i<this.subCount;i++){s[i].buffer=[];} -return this;},applyTemplate:function(values){var s=this.subs;var replaceIndex=-1;this.html=this.originalHtml.replace(this.subTemplateRe,function(m,name){return s[++replaceIndex].buffer.join("");});return Ext.MasterTemplate.superclass.applyTemplate.call(this,values);},apply:function(){return this.applyTemplate.apply(this,arguments);},compile:function(){return this;}});Ext.MasterTemplate.prototype.addAll=Ext.MasterTemplate.prototype.fill;Ext.MasterTemplate.from=function(el){el=Ext.getDom(el);return new Ext.MasterTemplate(el.value||el.innerHTML);}; - -Ext.DomQuery=function(){var cache={},simpleCache={},valueCache={};var nonSpace=/\S/;var trimRe=/^\s+|\s+$/g;var tplRe=/\{(\d+)\}/g;var modeRe=/^(\s?[\/>]\s?|\s|$)/;var tagTokenRe=/^(#)?([\w-\*]+)/;function child(p,index){var i=0;var n=p.firstChild;while(n){if(n.nodeType==1){if(++i==index){return n;}} -n=n.nextSibling;} -return null;};function next(n){while((n=n.nextSibling)&&n.nodeType!=1);return n;};function prev(n){while((n=n.previousSibling)&&n.nodeType!=1);return n;};function clean(d){var n=d.firstChild,ni=-1;while(n){var nx=n.nextSibling;if(n.nodeType==3&&!nonSpace.test(n.nodeValue)){d.removeChild(n);}else{n.nodeIndex=++ni;} -n=nx;} -return this;};function byClassName(c,a,v,re,cn){if(!v){return c;} -var r=[];for(var i=0,ci;ci=c[i];i++){cn=ci.className;if(cn&&(' '+cn+' ').indexOf(v)!=-1){r[r.length]=ci;}} -return r;};function attrValue(n,attr){if(!n.tagName&&typeof n.length!="undefined"){n=n[0];} -if(!n){return null;} -if(attr=="for"){return n.htmlFor;} -if(attr=="class"||attr=="className"){return n.className;} -return n.getAttribute(attr)||n[attr];};function getNodes(ns,mode,tagName){var result=[],cs;if(!ns){return result;} -mode=mode?mode.replace(trimRe,""):"";tagName=tagName||"*";if(typeof ns.getElementsByTagName!="undefined"){ns=[ns];} -if(mode!="/"&&mode!=">"){for(var i=0,ni;ni=ns[i];i++){cs=ni.getElementsByTagName(tagName);for(var j=0,ci;ci=cs[j];j++){result[result.length]=ci;}}}else{for(var i=0,ni;ni=ns[i];i++){var cn=ni.getElementsByTagName(tagName);for(var j=0,cj;cj=cn[j];j++){if(cj.parentNode==ni){result[result.length]=cj;}}}} -return result;};function concat(a,b){if(b.slice){return a.concat(b);} -for(var i=0,l=b.length;i<l;i++){a[a.length]=b[i];} -return a;} -function byTag(cs,tagName){if(cs.tagName||cs==document){cs=[cs];} -if(!tagName){return cs;} -var r=[];tagName=tagName.toLowerCase();for(var i=0,ci;ci=cs[i];i++){if(ci.nodeType==1&&ci.tagName.toLowerCase()==tagName){r[r.length]=ci;}} -return r;};function byId(cs,attr,id){if(cs.tagName||cs==document){cs=[cs];} -if(!id){return cs;} -var r=[];for(var i=0,ci;ci=cs[i];i++){if(ci&&ci.id==id){r[r.length]=ci;return r;}} -return r;};function byAttribute(cs,attr,value,op,custom){var r=[],st=custom=="{";var f=Ext.DomQuery.operators[op];for(var i=0;ci=cs[i];i++){var a;if(st){a=Ext.DomQuery.getStyle(ci,attr);} -else if(attr=="class"||attr=="className"){a=ci.className;}else if(attr=="for"){a=ci.htmlFor;}else if(attr=="href"){a=ci.getAttribute("href",2);}else{a=ci.getAttribute(attr);} -if((f&&f(a,value))||(!f&&a)){r[r.length]=ci;}} -return r;};function byPseudo(cs,name,value){return Ext.DomQuery.pseudos[name](cs,value);};var isIE=window.ActiveXObject?true:false;var key=30803;function nodupIEXml(cs){var d=++key;cs[0].setAttribute("_nodup",d);var r=[cs[0]];for(var i=1,len=cs.length;i<len;i++){var c=cs[i];if(!c.getAttribute("_nodup")!=d){c.setAttribute("_nodup",d);r[r.length]=c;}} -for(var i=0,len=cs.length;i<len;i++){cs[i].removeAttribute("_nodup");} -return r;} -function nodup(cs){if(!cs){return[];} -var len=cs.length,c,i,r=cs,cj;if(!len||typeof cs.nodeType!="undefined"||len==1){return cs;} -if(isIE&&typeof cs[0].selectSingleNode!="undefined"){return nodupIEXml(cs);} -var d=++key;cs[0]._nodup=d;for(i=1;c=cs[i];i++){if(c._nodup!=d){c._nodup=d;}else{r=[];for(var j=0;j<i;j++){r[r.length]=cs[j];} -for(j=i+1;cj=cs[j];j++){if(cj._nodup!=d){cj._nodup=d;r[r.length]=cj;}} -return r;}} -return r;} -function quickDiffIEXml(c1,c2){var d=++key;for(var i=0,len=c1.length;i<len;i++){c1[i].setAttribute("_qdiff",d);} -var r=[];for(var i=0,len=c2.length;i<len;i++){if(c2[i].getAttribute("_qdiff")!=d){r[r.length]=c2[i];}} -for(var i=0,len=c1.length;i<len;i++){c1[i].removeAttribute("_qdiff");} -return r;} -function quickDiff(c1,c2){var len1=c1.length;if(!len1){return c2;} -if(isIE&&c1[0].selectSingleNode){return quickDiffIEXml(c1,c2);} -var d=++key;for(var i=0;i<len1;i++){c1[i]._qdiff=d;} -var r=[];for(var i=0,len=c2.length;i<len;i++){if(c2[i]._qdiff!=d){r[r.length]=c2[i];}} -return r;} -function quickId(ns,mode,root,id){if(ns==root){var d=root.ownerDocument||root;return d.getElementById(id);} -ns=getNodes(ns,mode,"*");return byId(ns,null,id);} -return{getStyle:function(el,name){return Ext.fly(el).getStyle(name);},compile:function(path,type){type=type||"select";var fn=["var f = function(root){\n var mode; var n = root || document;\n"];var q=path,mode,lq;var tk=Ext.DomQuery.matchers;var tklen=tk.length;var mm;var lmode=q.match(modeRe);if(lmode&&lmode[1]){fn[fn.length]='mode="'+lmode[1]+'";';q=q.replace(lmode[1],"");} -while(path.substr(0,1)=="/"){path=path.substr(1);} -while(q&&lq!=q){lq=q;var tm=q.match(tagTokenRe);if(type=="select"){if(tm){if(tm[1]=="#"){fn[fn.length]='n = quickId(n, mode, root, "'+tm[2]+'");';}else{fn[fn.length]='n = getNodes(n, mode, "'+tm[2]+'");';} -q=q.replace(tm[0],"");}else if(q.substr(0,1)!='@'){fn[fn.length]='n = getNodes(n, mode, "*");';}}else{if(tm){if(tm[1]=="#"){fn[fn.length]='n = byId(n, null, "'+tm[2]+'");';}else{fn[fn.length]='n = byTag(n, "'+tm[2]+'");';} -q=q.replace(tm[0],"");}} -while(!(mm=q.match(modeRe))){var matched=false;for(var j=0;j<tklen;j++){var t=tk[j];var m=q.match(t.re);if(m){fn[fn.length]=t.select.replace(tplRe,function(x,i){return m[i];});q=q.replace(m[0],"");matched=true;break;}} -if(!matched){throw'Error parsing selector, parsing failed at "'+q+'"';}} -if(mm[1]){fn[fn.length]='mode="'+mm[1]+'";';q=q.replace(mm[1],"");}} -fn[fn.length]="return nodup(n);\n}";eval(fn.join(""));return f;},select:function(path,root,type){if(!root||root==document){root=document;} -if(typeof root=="string"){root=document.getElementById(root);} -var paths=path.split(",");var results=[];for(var i=0,len=paths.length;i<len;i++){var p=paths[i].replace(trimRe,"");if(!cache[p]){cache[p]=Ext.DomQuery.compile(p);if(!cache[p]){throw p+" is not a valid selector";}} -var result=cache[p](root);if(result&&result!=document){results=results.concat(result);}} -return results;},selectNode:function(path,root){return Ext.DomQuery.select(path,root)[0];},selectValue:function(path,root,defaultValue){path=path.replace(trimRe,"");if(!valueCache[path]){valueCache[path]=Ext.DomQuery.compile(path,"select");} -var n=valueCache[path](root);n=n[0]?n[0]:n;var v=(n&&n.firstChild?n.firstChild.nodeValue:null);return(v===null?defaultValue:v);},selectNumber:function(path,root,defaultValue){var v=Ext.DomQuery.selectValue(path,root,defaultValue||0);return parseFloat(v);},is:function(el,ss){if(typeof el=="string"){el=document.getElementById(el);} -var isArray=(el instanceof Array);var result=Ext.DomQuery.filter(isArray?el:[el],ss);return isArray?(result.length==el.length):(result.length>0);},filter:function(els,ss,nonMatches){ss=ss.replace(trimRe,"");if(!simpleCache[ss]){simpleCache[ss]=Ext.DomQuery.compile(ss,"simple");} -var result=simpleCache[ss](els);return nonMatches?quickDiff(result,els):result;},matchers:[{re:/^\.([\w-]+)/,select:'n = byClassName(n, null, " {1} ");'},{re:/^\:([\w-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/,select:'n = byPseudo(n, "{1}", "{2}");'},{re:/^(?:([\[\{])(?:@)?([\w-]+)\s?(?:(=|.=)\s?['"]?(.*?)["']?)?[\]\}])/,select:'n = byAttribute(n, "{2}", "{4}", "{3}", "{1}");'},{re:/^#([\w-]+)/,select:'n = byId(n, null, "{1}");'},{re:/^@([\w-]+)/,select:'return {firstChild:{nodeValue:attrValue(n, "{1}")}};'}],operators:{"=":function(a,v){return a==v;},"!=":function(a,v){return a!=v;},"^=":function(a,v){return a&&a.substr(0,v.length)==v;},"$=":function(a,v){return a&&a.substr(a.length-v.length)==v;},"*=":function(a,v){return a&&a.indexOf(v)!==-1;},"%=":function(a,v){return(a%v)==0;}},pseudos:{"first-child":function(c){var r=[],n;for(var i=0,ci;ci=n=c[i];i++){while((n=n.previousSibling)&&n.nodeType!=1);if(!n){r[r.length]=ci;}} -return r;},"last-child":function(c){var r=[];for(var i=0,ci;ci=n=c[i];i++){while((n=n.nextSibling)&&n.nodeType!=1);if(!n){r[r.length]=ci;}} -return r;},"nth-child":function(c,a){var r=[];if(a!="odd"&&a!="even"){for(var i=0,ci;ci=c[i];i++){var m=child(ci.parentNode,a);if(m==ci){r[r.length]=m;}} -return r;} -var p;for(var i=0,l=c.length;i<l;i++){var cp=c[i].parentNode;if(cp!=p){clean(cp);p=cp;}} -for(var i=0,ci;ci=c[i];i++){var m=false;if(a=="odd"){m=((ci.nodeIndex+1)%2==1);}else if(a=="even"){m=((ci.nodeIndex+1)%2==0);} -if(m){r[r.length]=ci;}} -return r;},"only-child":function(c){var r=[];for(var i=0,ci;ci=c[i];i++){if(!prev(ci)&&!next(ci)){r[r.length]=ci;}} -return r;},"empty":function(c){var r=[];for(var i=0,ci;ci=c[i];i++){var cns=ci.childNodes,j=0,cn,empty=true;while(cn=cns[j]){++j;if(cn.nodeType==1||cn.nodeType==3){empty=false;break;}} -if(empty){r[r.length]=ci;}} -return r;},"contains":function(c,v){var r=[];for(var i=0,ci;ci=c[i];i++){if(ci.innerHTML.indexOf(v)!==-1){r[r.length]=ci;}} -return r;},"nodeValue":function(c,v){var r=[];for(var i=0,ci;ci=c[i];i++){if(ci.firstChild&&ci.firstChild.nodeValue==v){r[r.length]=ci;}} -return r;},"checked":function(c){var r=[];for(var i=0,ci;ci=c[i];i++){if(ci.checked==true){r[r.length]=ci;}} -return r;},"not":function(c,ss){return Ext.DomQuery.filter(c,ss,true);},"odd":function(c){return this["nth-child"](c,"odd");},"even":function(c){return this["nth-child"](c,"even");},"nth":function(c,a){return c[a-1]||[];},"first":function(c){return c[0]||[];},"last":function(c){return c[c.length-1]||[];},"has":function(c,ss){var s=Ext.DomQuery.select;var r=[];for(var i=0,ci;ci=c[i];i++){if(s(ss,ci).length>0){r[r.length]=ci;}} -return r;},"next":function(c,ss){var is=Ext.DomQuery.is;var r=[];for(var i=0,ci;ci=c[i];i++){var n=next(ci);if(n&&is(n,ss)){r[r.length]=ci;}} -return r;},"prev":function(c,ss){var is=Ext.DomQuery.is;var r=[];for(var i=0,ci;ci=c[i];i++){var n=prev(ci);if(n&&is(n,ss)){r[r.length]=ci;}} -return r;}}};}();Ext.query=Ext.DomQuery.select; - -Ext.util.Observable=function(){if(this.listeners){this.on(this.listeners);delete this.listeners;}};Ext.util.Observable.prototype={fireEvent:function(){var ce=this.events[arguments[0].toLowerCase()];if(typeof ce=="object"){return ce.fire.apply(ce,Array.prototype.slice.call(arguments,1));}else{return true;}},filterOptRe:/^(?:scope|delay|buffer|single)$/,addListener:function(eventName,fn,scope,o){if(typeof eventName=="object"){o=eventName;for(var e in o){if(this.filterOptRe.test(e)){continue;} -if(typeof o[e]=="function"){this.addListener(e,o[e],o.scope,o);}else{this.addListener(e,o[e].fn,o[e].scope,o[e]);}} -return;} -o=(!o||typeof o=="boolean")?{}:o;eventName=eventName.toLowerCase();var ce=this.events[eventName]||true;if(typeof ce=="boolean"){ce=new Ext.util.Event(this,eventName);this.events[eventName]=ce;} -ce.addListener(fn,scope,o);},removeListener:function(eventName,fn,scope){var ce=this.events[eventName.toLowerCase()];if(typeof ce=="object"){ce.removeListener(fn,scope);}},purgeListeners:function(){for(var evt in this.events){if(typeof this.events[evt]=="object"){this.events[evt].clearListeners();}}},relayEvents:function(o,events){var createHandler=function(ename){return function(){return this.fireEvent.apply(this,Ext.combine(ename,Array.prototype.slice.call(arguments,0)));};};for(var i=0,len=events.length;i<len;i++){var ename=events[i];if(!this.events[ename]){this.events[ename]=true;};o.on(ename,createHandler(ename),this);}},addEvents:function(o){if(!this.events){this.events={};} -Ext.applyIf(this.events,o);},hasListener:function(eventName){var e=this.events[eventName];return typeof e=="object"&&e.listeners.length>0;}};Ext.util.Observable.prototype.on=Ext.util.Observable.prototype.addListener;Ext.util.Observable.prototype.un=Ext.util.Observable.prototype.removeListener;Ext.util.Observable.capture=function(o,fn,scope){o.fireEvent=o.fireEvent.createInterceptor(fn,scope);};Ext.util.Observable.releaseCapture=function(o){o.fireEvent=Ext.util.Observable.prototype.fireEvent;};(function(){var createBuffered=function(h,o,scope){var task=new Ext.util.DelayedTask();return function(){task.delay(o.buffer,h,scope,Array.prototype.slice.call(arguments,0));};};var createSingle=function(h,e,fn,scope){return function(){e.removeListener(fn,scope);return h.apply(scope,arguments);};};var createDelayed=function(h,o,scope){return function(){var args=Array.prototype.slice.call(arguments,0);setTimeout(function(){h.apply(scope,args);},o.delay||10);};};Ext.util.Event=function(obj,name){this.name=name;this.obj=obj;this.listeners=[];};Ext.util.Event.prototype={addListener:function(fn,scope,options){var o=options||{};scope=scope||this.obj;if(!this.isListening(fn,scope)){var l={fn:fn,scope:scope,options:o};var h=fn;if(o.delay){h=createDelayed(h,o,scope);} -if(o.single){h=createSingle(h,this,fn,scope);} -if(o.buffer){h=createBuffered(h,o,scope);} -l.fireFn=h;if(!this.firing){this.listeners.push(l);}else{this.listeners=this.listeners.slice(0);this.listeners.push(l);}}},findListener:function(fn,scope){scope=scope||this.obj;var ls=this.listeners;for(var i=0,len=ls.length;i<len;i++){var l=ls[i];if(l.fn==fn&&l.scope==scope){return i;}} -return-1;},isListening:function(fn,scope){return this.findListener(fn,scope)!=-1;},removeListener:function(fn,scope){var index;if((index=this.findListener(fn,scope))!=-1){if(!this.firing){this.listeners.splice(index,1);}else{this.listeners=this.listeners.slice(0);this.listeners.splice(index,1);} -return true;} -return false;},clearListeners:function(){this.listeners=[];},fire:function(){var ls=this.listeners,scope,len=ls.length;if(len>0){this.firing=true;var args=Array.prototype.slice.call(arguments,0);for(var i=0;i<len;i++){var l=ls[i];if(l.fireFn.apply(l.scope,arguments)===false){this.firing=false;return false;}} -this.firing=false;} -return true;}};})(); - -Ext.EventManager=function(){var docReadyEvent,docReadyProcId,docReadyState=false;var resizeEvent,resizeTask,textEvent,textSize;var E=Ext.lib.Event;var D=Ext.lib.Dom;var fireDocReady=function(){if(!docReadyState){docReadyState=true;Ext.isReady=true;if(docReadyProcId){clearInterval(docReadyProcId);} -if(Ext.isGecko||Ext.isOpera){document.removeEventListener("DOMContentLoaded",fireDocReady,false);} -if(docReadyEvent){docReadyEvent.fire();docReadyEvent.clearListeners();}}};var initDocReady=function(){docReadyEvent=new Ext.util.Event();if(Ext.isGecko||Ext.isOpera){document.addEventListener("DOMContentLoaded",fireDocReady,false);}else if(Ext.isIE){document.write("<s"+'cript id="ie-deferred-loader" defer="defer" src="/'+'/:"></s'+"cript>");var defer=document.getElementById("ie-deferred-loader");defer.onreadystatechange=function(){if(this.readyState=="complete"){fireDocReady();defer.onreadystatechange=null;defer.parentNode.removeChild(defer);}};}else if(Ext.isSafari){docReadyProcId=setInterval(function(){var rs=document.readyState;if(rs=="complete"){fireDocReady();}},10);} -E.on(window,"load",fireDocReady);};var createBuffered=function(h,o){var task=new Ext.util.DelayedTask(h);return function(e){e=new Ext.EventObjectImpl(e);task.delay(o.buffer,h,null,[e]);};};var createSingle=function(h,el,ename,fn){return function(e){Ext.EventManager.removeListener(el,ename,fn);h(e);};};var createDelayed=function(h,o){return function(e){e=new Ext.EventObjectImpl(e);setTimeout(function(){h(e);},o.delay||10);};};var listen=function(element,ename,opt,fn,scope){var o=(!opt||typeof opt=="boolean")?{}:opt;fn=fn||o.fn;scope=scope||o.scope;var el=Ext.getDom(element);if(!el){throw"Error listening for \""+ename+'\". Element "'+element+'" doesn\'t exist.';} -var h=function(e){e=Ext.EventObject.setEvent(e);var t;if(o.delegate){t=e.getTarget(o.delegate,el);if(!t){return;}}else{t=e.target;} -if(o.stopEvent===true){e.stopEvent();} -if(o.preventDefault===true){e.preventDefault();} -if(o.stopPropagation===true){e.stopPropagation();} -if(o.normalized===false){e=e.browserEvent;} -fn.call(scope||el,e,t,o);};if(o.delay){h=createDelayed(h,o);} -if(o.single){h=createSingle(h,el,ename,fn);} -if(o.buffer){h=createBuffered(h,o);} -fn._handlers=fn._handlers||[];fn._handlers.push([Ext.id(el),ename,h]);E.on(el,ename,h);if(ename=="mousewheel"&&el.addEventListener){el.addEventListener("DOMMouseScroll",h,false);E.on(window,'unload',function(){el.removeEventListener("DOMMouseScroll",h,false);});} -if(ename=="mousedown"&&el==document){Ext.EventManager.stoppedMouseDownEvent.addListener(h);} -return h;};var stopListening=function(el,ename,fn){var id=Ext.id(el),hds=fn._handlers,hd=fn;if(hds){for(var i=0,len=hds.length;i<len;i++){var h=hds[i];if(h[0]==id&&h[1]==ename){hd=h[2];hds.splice(i,1);break;}}} -E.un(el,ename,hd);el=Ext.getDom(el);if(ename=="mousewheel"&&el.addEventListener){el.removeEventListener("DOMMouseScroll",hd,false);} -if(ename=="mousedown"&&el==document){Ext.EventManager.stoppedMouseDownEvent.removeListener(hd);}};var propRe=/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized)$/;var pub={wrap:function(fn,scope,override){return function(e){Ext.EventObject.setEvent(e);fn.call(override?scope||window:window,Ext.EventObject,scope);};},addListener:function(element,eventName,fn,scope,options){if(typeof eventName=="object"){var o=eventName;for(var e in o){if(propRe.test(e)){continue;} -if(typeof o[e]=="function"){listen(element,e,o,o[e],o.scope);}else{listen(element,e,o[e]);}} -return;} -return listen(element,eventName,options,fn,scope);},removeListener:function(element,eventName,fn){return stopListening(element,eventName,fn);},onDocumentReady:function(fn,scope,options){if(docReadyState){fn.call(scope||window,scope);return;} -if(!docReadyEvent){initDocReady();} -docReadyEvent.addListener(fn,scope,options);},onWindowResize:function(fn,scope,options){if(!resizeEvent){resizeEvent=new Ext.util.Event();resizeTask=new Ext.util.DelayedTask(function(){resizeEvent.fire(D.getViewWidth(),D.getViewHeight());});E.on(window,"resize",function(){if(Ext.isIE){resizeTask.delay(50);}else{resizeEvent.fire(D.getViewWidth(),D.getViewHeight());}});} -resizeEvent.addListener(fn,scope,options);},onTextResize:function(fn,scope,options){if(!textEvent){textEvent=new Ext.util.Event();var textEl=new Ext.Element(document.createElement('div'));textEl.dom.className='x-text-resize';textEl.dom.innerHTML='X';textEl.appendTo(document.body);textSize=textEl.dom.offsetHeight;setInterval(function(){if(textEl.dom.offsetHeight!=textSize){textEvent.fire(textSize,textSize=textEl.dom.offsetHeight);}},this.textResizeInterval);} -textEvent.addListener(fn,scope,options);},removeResizeListener:function(fn,scope){if(resizeEvent){resizeEvent.removeListener(fn,scope);}},fireResize:function(){if(resizeEvent){resizeEvent.fire(D.getViewWidth(),D.getViewHeight());}},ieDeferSrc:false,textResizeInterval:50};pub.on=pub.addListener;pub.un=pub.removeListener;pub.stoppedMouseDownEvent=new Ext.util.Event();return pub;}();Ext.onReady=Ext.EventManager.onDocumentReady;Ext.onReady(function(){var bd=Ext.get(document.body);if(!bd){return;} -var cls=Ext.isIE?"ext-ie":Ext.isGecko?"ext-gecko":Ext.isOpera?"ext-opera":Ext.isSafari?"ext-safari":"";if(Ext.isBorderBox){cls+=' ext-border-box';} -if(Ext.isStrict){cls+=' ext-strict';} -bd.addClass(cls);});Ext.EventObject=function(){var E=Ext.lib.Event;var safariKeys={63234:37,63235:39,63232:38,63233:40,63276:33,63277:34,63272:46,63273:36,63275:35};var btnMap=Ext.isIE?{1:0,4:1,2:2}:(Ext.isSafari?{1:0,2:1,3:2}:{0:0,1:1,2:2});Ext.EventObjectImpl=function(e){if(e){this.setEvent(e.browserEvent||e);}};Ext.EventObjectImpl.prototype={browserEvent:null,button:-1,shiftKey:false,ctrlKey:false,altKey:false,BACKSPACE:8,TAB:9,RETURN:13,ENTER:13,SHIFT:16,CONTROL:17,ESC:27,SPACE:32,PAGEUP:33,PAGEDOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46,F5:116,setEvent:function(e){if(e==this||(e&&e.browserEvent)){return e;} -this.browserEvent=e;if(e){this.button=e.button?btnMap[e.button]:(e.which?e.which-1:-1);if(e.type=='click'&&this.button==-1){this.button=0;} -this.shiftKey=e.shiftKey;this.ctrlKey=e.ctrlKey||e.metaKey;this.altKey=e.altKey;this.keyCode=e.keyCode;this.charCode=e.charCode;this.target=E.getTarget(e);this.xy=E.getXY(e);}else{this.button=-1;this.shiftKey=false;this.ctrlKey=false;this.altKey=false;this.keyCode=0;this.charCode=0;this.target=null;this.xy=[0,0];} -return this;},stopEvent:function(){if(this.browserEvent){if(this.browserEvent.type=='mousedown'){Ext.EventManager.stoppedMouseDownEvent.fire(this);} -E.stopEvent(this.browserEvent);}},preventDefault:function(){if(this.browserEvent){E.preventDefault(this.browserEvent);}},isNavKeyPress:function(){var k=this.keyCode;k=Ext.isSafari?(safariKeys[k]||k):k;return(k>=33&&k<=40)||k==this.RETURN||k==this.TAB||k==this.ESC;},isSpecialKey:function(){var k=this.keyCode;return k==9||k==13||k==40||k==27||(k==16)||(k==17)||(k>=18&&k<=20)||(k>=33&&k<=35)||(k>=36&&k<=39)||(k>=44&&k<=45);},stopPropagation:function(){if(this.browserEvent){if(this.browserEvent.type=='mousedown'){Ext.EventManager.stoppedMouseDownEvent.fire(this);} -E.stopPropagation(this.browserEvent);}},getCharCode:function(){return this.charCode||this.keyCode;},getKey:function(){var k=this.keyCode||this.charCode;return Ext.isSafari?(safariKeys[k]||k):k;},getPageX:function(){return this.xy[0];},getPageY:function(){return this.xy[1];},getTime:function(){if(this.browserEvent){return E.getTime(this.browserEvent);} -return null;},getXY:function(){return this.xy;},getTarget:function(selector,maxDepth,returnEl){return selector?Ext.fly(this.target).findParent(selector,maxDepth,returnEl):this.target;},getRelatedTarget:function(){if(this.browserEvent){return E.getRelatedTarget(this.browserEvent);} -return null;},getWheelDelta:function(){var e=this.browserEvent;var delta=0;if(e.wheelDelta){delta=e.wheelDelta/120;if(window.opera)delta=-delta;}else if(e.detail){delta=-e.detail/3;} -return delta;},hasModifier:function(){return((this.ctrlKey||this.altKey)||this.shiftKey)?true:false;},within:function(el,related){var t=this[related?"getRelatedTarget":"getTarget"]();return t&&Ext.fly(el).contains(t);},getPoint:function(){return new Ext.lib.Point(this.xy[0],this.xy[1]);}};return new Ext.EventObjectImpl();}(); - -(function(){var D=Ext.lib.Dom;var E=Ext.lib.Event;var A=Ext.lib.Anim;var propCache={};var camelRe=/(-[a-z])/gi;var camelFn=function(m,a){return a.charAt(1).toUpperCase();};var view=document.defaultView;Ext.Element=function(element,forceNew){var dom=typeof element=="string"?document.getElementById(element):element;if(!dom){return null;} -if(!forceNew&&Ext.Element.cache[dom.id]){return Ext.Element.cache[dom.id];} -this.dom=dom;this.id=dom.id||Ext.id(dom);};var El=Ext.Element;El.prototype={originalDisplay:"",visibilityMode:1,defaultUnit:"px",setVisibilityMode:function(visMode){this.visibilityMode=visMode;return this;},enableDisplayMode:function(display){this.setVisibilityMode(El.DISPLAY);if(typeof display!="undefined")this.originalDisplay=display;return this;},findParent:function(simpleSelector,maxDepth,returnEl){var p=this.dom,b=document.body,depth=0,dq=Ext.DomQuery,stopEl;maxDepth=maxDepth||50;if(typeof maxDepth!="number"){stopEl=Ext.getDom(maxDepth);maxDepth=10;} -while(p&&p.nodeType==1&&depth<maxDepth&&p!=b&&p!=stopEl){if(dq.is(p,simpleSelector)){return returnEl?Ext.get(p):p;} -depth++;p=p.parentNode;} -return null;},findParentNode:function(simpleSelector,maxDepth,returnEl){var p=Ext.fly(this.dom.parentNode,'_internal');return p?p.findParent(simpleSelector,maxDepth,returnEl):null;},up:function(simpleSelector,maxDepth){return this.findParentNode(simpleSelector,maxDepth,true);},is:function(simpleSelector){return Ext.DomQuery.is(this.dom,simpleSelector);},animate:function(args,duration,onComplete,easing,animType){this.anim(args,{duration:duration,callback:onComplete,easing:easing},animType);return this;},anim:function(args,opt,animType,defaultDur,defaultEase,cb){animType=animType||'run';opt=opt||{};var anim=Ext.lib.Anim[animType](this.dom,args,(opt.duration||defaultDur)||.35,(opt.easing||defaultEase)||'easeOut',function(){Ext.callback(cb,this);Ext.callback(opt.callback,opt.scope||this,[this,opt]);},this);opt.anim=anim;return anim;},preanim:function(a,i){return!a[i]?false:(typeof a[i]=="object"?a[i]:{duration:a[i+1],callback:a[i+2],easing:a[i+3]});},clean:function(forceReclean){if(this.isCleaned&&forceReclean!==true){return this;} -var ns=/\S/;var d=this.dom,n=d.firstChild,ni=-1;while(n){var nx=n.nextSibling;if(n.nodeType==3&&!ns.test(n.nodeValue)){d.removeChild(n);}else{n.nodeIndex=++ni;} -n=nx;} -this.isCleaned=true;return this;},calcOffsetsTo:function(el){el=Ext.get(el);var d=el.dom;var restorePos=false;if(el.getStyle('position')=='static'){el.position('relative');restorePos=true;} -var x=0,y=0;var op=this.dom;while(op&&op!=d&&op.tagName!='HTML'){x+=op.offsetLeft;y+=op.offsetTop;op=op.offsetParent;} -if(restorePos){el.position('static');} -return[x,y];},scrollIntoView:function(container,hscroll){var c=Ext.getDom(container)||document.body;var el=this.dom;var o=this.calcOffsetsTo(c),l=o[0],t=o[1],b=t+el.offsetHeight,r=l+el.offsetWidth;var ch=c.clientHeight;var ct=parseInt(c.scrollTop,10);var cl=parseInt(c.scrollLeft,10);var cb=ct+ch;var cr=cl+c.clientWidth;if(t<ct){c.scrollTop=t;}else if(b>cb){c.scrollTop=b-ch;} -if(hscroll!==false){if(l<cl){c.scrollLeft=l;}else if(r>cr){c.scrollLeft=r-c.clientWidth;}} -return this;},scrollChildIntoView:function(child,hscroll){Ext.fly(child,'_scrollChildIntoView').scrollIntoView(this,hscroll);},autoHeight:function(animate,duration,onComplete,easing){var oldHeight=this.getHeight();this.clip();this.setHeight(1);setTimeout(function(){var height=parseInt(this.dom.scrollHeight,10);if(!animate){this.setHeight(height);this.unclip();if(typeof onComplete=="function"){onComplete();}}else{this.setHeight(oldHeight);this.setHeight(height,animate,duration,function(){this.unclip();if(typeof onComplete=="function")onComplete();}.createDelegate(this),easing);}}.createDelegate(this),0);return this;},contains:function(el){if(!el){return false;} -return D.isAncestor(this.dom,el.dom?el.dom:el);},isVisible:function(deep){var vis=!(this.getStyle("visibility")=="hidden"||this.getStyle("display")=="none");if(deep!==true||!vis){return vis;} -var p=this.dom.parentNode;while(p&&p.tagName.toLowerCase()!="body"){if(!Ext.fly(p,'_isVisible').isVisible()){return false;} -p=p.parentNode;} -return true;},select:function(selector,unique){return El.select(selector,unique,this.dom);},query:function(selector,unique){return Ext.DomQuery.select(selector,this.dom);},child:function(selector,returnDom){var n=Ext.DomQuery.selectNode(selector,this.dom);return returnDom?n:Ext.get(n);},down:function(selector,returnDom){var n=Ext.DomQuery.selectNode(" > "+selector,this.dom);return returnDom?n:Ext.get(n);},initDD:function(group,config,overrides){var dd=new Ext.dd.DD(Ext.id(this.dom),group,config);return Ext.apply(dd,overrides);},initDDProxy:function(group,config,overrides){var dd=new Ext.dd.DDProxy(Ext.id(this.dom),group,config);return Ext.apply(dd,overrides);},initDDTarget:function(group,config,overrides){var dd=new Ext.dd.DDTarget(Ext.id(this.dom),group,config);return Ext.apply(dd,overrides);},setVisible:function(visible,animate){if(!animate||!A){if(this.visibilityMode==El.DISPLAY){this.setDisplayed(visible);}else{this.fixDisplay();this.dom.style.visibility=visible?"visible":"hidden";}}else{var dom=this.dom;var visMode=this.visibilityMode;if(visible){this.setOpacity(.01);this.setVisible(true);} -this.anim({opacity:{to:(visible?1:0)}},this.preanim(arguments,1),null,.35,'easeIn',function(){if(!visible){if(visMode==El.DISPLAY){dom.style.display="none";}else{dom.style.visibility="hidden";} -Ext.get(dom).setOpacity(1);}});} -return this;},isDisplayed:function(){return this.getStyle("display")!="none";},toggle:function(animate){this.setVisible(!this.isVisible(),this.preanim(arguments,0));return this;},setDisplayed:function(value){if(typeof value=="boolean"){value=value?this.originalDisplay:"none";} -this.setStyle("display",value);return this;},focus:function(){try{this.dom.focus();}catch(e){} -return this;},blur:function(){try{this.dom.blur();}catch(e){} -return this;},addClass:function(className){if(className instanceof Array){for(var i=0,len=className.length;i<len;i++){this.addClass(className[i]);}}else{if(className&&!this.hasClass(className)){this.dom.className=this.dom.className+" "+className;}} -return this;},radioClass:function(className){var siblings=this.dom.parentNode.childNodes;for(var i=0;i<siblings.length;i++){var s=siblings[i];if(s.nodeType==1){Ext.get(s).removeClass(className);}} -this.addClass(className);return this;},removeClass:function(className){if(!className||!this.dom.className){return this;} -if(className instanceof Array){for(var i=0,len=className.length;i<len;i++){this.removeClass(className[i]);}}else{if(this.hasClass(className)){var re=this.classReCache[className];if(!re){re=new RegExp('(?:^|\\s+)'+className+'(?:\\s+|$)',"g");this.classReCache[className]=re;} -this.dom.className=this.dom.className.replace(re," ");}} -return this;},classReCache:{},toggleClass:function(className){if(this.hasClass(className)){this.removeClass(className);}else{this.addClass(className);} -return this;},hasClass:function(className){return className&&(' '+this.dom.className+' ').indexOf(' '+className+' ')!=-1;},replaceClass:function(oldClassName,newClassName){this.removeClass(oldClassName);this.addClass(newClassName);return this;},getStyles:function(){var a=arguments,len=a.length,r={};for(var i=0;i<len;i++){r[a[i]]=this.getStyle(a[i]);} -return r;},getStyle:function(){return view&&view.getComputedStyle?function(prop){var el=this.dom,v,cs,camel;if(prop=='float'){prop="cssFloat";} -if(v=el.style[prop]){return v;} -if(cs=view.getComputedStyle(el,"")){if(!(camel=propCache[prop])){camel=propCache[prop]=prop.replace(camelRe,camelFn);} -return cs[camel];} -return null;}:function(prop){var el=this.dom,v,cs,camel;if(prop=='opacity'){if(typeof el.filter=='string'){var fv=parseFloat(el.filter.match(/alpha\(opacity=(.*)\)/i)[1]);if(!isNaN(fv)){return fv?fv/100:0;}} -return 1;}else if(prop=='float'){prop="styleFloat";} -if(!(camel=propCache[prop])){camel=propCache[prop]=prop.replace(camelRe,camelFn);} -if(v=el.style[camel]){return v;} -if(cs=el.currentStyle){return cs[camel];} -return null;};}(),setStyle:function(prop,value){if(typeof prop=="string"){var camel;if(!(camel=propCache[prop])){camel=propCache[prop]=prop.replace(camelRe,camelFn);} -if(camel=='opacity'){this.setOpacity(value);}else{this.dom.style[camel]=value;}}else{for(var style in prop){if(typeof prop[style]!="function"){this.setStyle(style,prop[style]);}}} -return this;},applyStyles:function(style){Ext.DomHelper.applyStyles(this.dom,style);return this;},getX:function(){return D.getX(this.dom);},getY:function(){return D.getY(this.dom);},getXY:function(){return D.getXY(this.dom);},setX:function(x,animate){if(!animate||!A){D.setX(this.dom,x);}else{this.setXY([x,this.getY()],this.preanim(arguments,1));} -return this;},setY:function(y,animate){if(!animate||!A){D.setY(this.dom,y);}else{this.setXY([this.getX(),y],this.preanim(arguments,1));} -return this;},setLeft:function(left){this.setStyle("left",this.addUnits(left));return this;},setTop:function(top){this.setStyle("top",this.addUnits(top));return this;},setRight:function(right){this.setStyle("right",this.addUnits(right));return this;},setBottom:function(bottom){this.setStyle("bottom",this.addUnits(bottom));return this;},setXY:function(pos,animate){if(!animate||!A){D.setXY(this.dom,pos);}else{this.anim({points:{to:pos}},this.preanim(arguments,1),'motion');} -return this;},setLocation:function(x,y,animate){this.setXY([x,y],this.preanim(arguments,2));return this;},moveTo:function(x,y,animate){this.setXY([x,y],this.preanim(arguments,2));return this;},getRegion:function(){return D.getRegion(this.dom);},getHeight:function(contentHeight){var h=this.dom.offsetHeight||0;return contentHeight!==true?h:h-this.getBorderWidth("tb")-this.getPadding("tb");},getWidth:function(contentWidth){var w=this.dom.offsetWidth||0;return contentWidth!==true?w:w-this.getBorderWidth("lr")-this.getPadding("lr");},getComputedHeight:function(){var h=Math.max(this.dom.offsetHeight,this.dom.clientHeight);if(!h){h=parseInt(this.getStyle('height'),10)||0;if(!this.isBorderBox()){h+=this.getFrameWidth('tb');}} -return h;},getComputedWidth:function(){var w=Math.max(this.dom.offsetWidth,this.dom.clientWidth);if(!w){w=parseInt(this.getStyle('width'),10)||0;if(!this.isBorderBox()){w+=this.getFrameWidth('lr');}} -return w;},getSize:function(contentSize){return{width:this.getWidth(contentSize),height:this.getHeight(contentSize)};},getViewSize:function(){var d=this.dom,doc=document,aw=0,ah=0;if(d==doc||d==doc.body){return{width:D.getViewWidth(),height:D.getViewHeight()};}else{return{width:d.clientWidth,height:d.clientHeight};}},getValue:function(asNumber){return asNumber?parseInt(this.dom.value,10):this.dom.value;},adjustWidth:function(width){if(typeof width=="number"){if(this.autoBoxAdjust&&!this.isBorderBox()){width-=(this.getBorderWidth("lr")+this.getPadding("lr"));} -if(width<0){width=0;}} -return width;},adjustHeight:function(height){if(typeof height=="number"){if(this.autoBoxAdjust&&!this.isBorderBox()){height-=(this.getBorderWidth("tb")+this.getPadding("tb"));} -if(height<0){height=0;}} -return height;},setWidth:function(width,animate){width=this.adjustWidth(width);if(!animate||!A){this.dom.style.width=this.addUnits(width);}else{this.anim({width:{to:width}},this.preanim(arguments,1));} -return this;},setHeight:function(height,animate){height=this.adjustHeight(height);if(!animate||!A){this.dom.style.height=this.addUnits(height);}else{this.anim({height:{to:height}},this.preanim(arguments,1));} -return this;},setSize:function(width,height,animate){if(typeof width=="object"){height=width.height;width=width.width;} -width=this.adjustWidth(width);height=this.adjustHeight(height);if(!animate||!A){this.dom.style.width=this.addUnits(width);this.dom.style.height=this.addUnits(height);}else{this.anim({width:{to:width},height:{to:height}},this.preanim(arguments,2));} -return this;},setBounds:function(x,y,width,height,animate){if(!animate||!A){this.setSize(width,height);this.setLocation(x,y);}else{width=this.adjustWidth(width);height=this.adjustHeight(height);this.anim({points:{to:[x,y]},width:{to:width},height:{to:height}},this.preanim(arguments,4),'motion');} -return this;},setRegion:function(region,animate){this.setBounds(region.left,region.top,region.right-region.left,region.bottom-region.top,this.preanim(arguments,1));return this;},addListener:function(eventName,fn,scope,options){Ext.EventManager.on(this.dom,eventName,fn,scope||this,options);},removeListener:function(eventName,fn){Ext.EventManager.removeListener(this.dom,eventName,fn);return this;},removeAllListeners:function(){E.purgeElement(this.dom);return this;},relayEvent:function(eventName,observable){this.on(eventName,function(e){observable.fireEvent(eventName,e);});},setOpacity:function(opacity,animate){if(!animate||!A){var s=this.dom.style;if(Ext.isIE){s.zoom=1;s.filter=(s.filter||'').replace(/alpha\([^\)]*\)/gi,"")+ -(opacity==1?"":"alpha(opacity="+opacity*100+")");}else{s.opacity=opacity;}}else{this.anim({opacity:{to:opacity}},this.preanim(arguments,1),null,.35,'easeIn');} -return this;},getLeft:function(local){if(!local){return this.getX();}else{return parseInt(this.getStyle("left"),10)||0;}},getRight:function(local){if(!local){return this.getX()+this.getWidth();}else{return(this.getLeft(true)+this.getWidth())||0;}},getTop:function(local){if(!local){return this.getY();}else{return parseInt(this.getStyle("top"),10)||0;}},getBottom:function(local){if(!local){return this.getY()+this.getHeight();}else{return(this.getTop(true)+this.getHeight())||0;}},position:function(pos,zIndex,x,y){if(!pos){if(this.getStyle('position')=='static'){this.setStyle('position','relative');}}else{this.setStyle("position",pos);} -if(zIndex){this.setStyle("z-index",zIndex);} -if(x!==undefined&&y!==undefined){this.setXY([x,y]);}else if(x!==undefined){this.setX(x);}else if(y!==undefined){this.setY(y);}},clearPositioning:function(value){value=value||'';this.setStyle({"left":value,"right":value,"top":value,"bottom":value,"z-index":"","position":"static"});return this;},getPositioning:function(){var l=this.getStyle("left");var t=this.getStyle("top");return{"position":this.getStyle("position"),"left":l,"right":l?"":this.getStyle("right"),"top":t,"bottom":t?"":this.getStyle("bottom"),"z-index":this.getStyle("z-index")};},getBorderWidth:function(side){return this.addStyles(side,El.borders);},getPadding:function(side){return this.addStyles(side,El.paddings);},setPositioning:function(pc){this.applyStyles(pc);if(pc.right=="auto"){this.dom.style.right="";} -if(pc.bottom=="auto"){this.dom.style.bottom="";} -return this;},fixDisplay:function(){if(this.getStyle("display")=="none"){this.setStyle("visibility","hidden");this.setStyle("display",this.originalDisplay);if(this.getStyle("display")=="none"){this.setStyle("display","block");}}},setLeftTop:function(left,top){this.dom.style.left=this.addUnits(left);this.dom.style.top=this.addUnits(top);return this;},move:function(direction,distance,animate){var xy=this.getXY();direction=direction.toLowerCase();switch(direction){case"l":case"left":this.moveTo(xy[0]-distance,xy[1],this.preanim(arguments,2));break;case"r":case"right":this.moveTo(xy[0]+distance,xy[1],this.preanim(arguments,2));break;case"t":case"top":case"up":this.moveTo(xy[0],xy[1]-distance,this.preanim(arguments,2));break;case"b":case"bottom":case"down":this.moveTo(xy[0],xy[1]+distance,this.preanim(arguments,2));break;} -return this;},clip:function(){if(!this.isClipped){this.isClipped=true;this.originalClip={"o":this.getStyle("overflow"),"x":this.getStyle("overflow-x"),"y":this.getStyle("overflow-y")};this.setStyle("overflow","hidden");this.setStyle("overflow-x","hidden");this.setStyle("overflow-y","hidden");} -return this;},unclip:function(){if(this.isClipped){this.isClipped=false;var o=this.originalClip;if(o.o){this.setStyle("overflow",o.o);} -if(o.x){this.setStyle("overflow-x",o.x);} -if(o.y){this.setStyle("overflow-y",o.y);}} -return this;},getAnchorXY:function(anchor,local,s){var w,h,vp=false;if(!s){var d=this.dom;if(d==document.body||d==document){vp=true;w=D.getViewWidth();h=D.getViewHeight();}else{w=this.getWidth();h=this.getHeight();}}else{w=s.width;h=s.height;} -var x=0,y=0,r=Math.round;switch((anchor||"tl").toLowerCase()){case"c":x=r(w*.5);y=r(h*.5);break;case"t":x=r(w*.5);y=0;break;case"l":x=0;y=r(h*.5);break;case"r":x=w;y=r(h*.5);break;case"b":x=r(w*.5);y=h;break;case"tl":x=0;y=0;break;case"bl":x=0;y=h;break;case"br":x=w;y=h;break;case"tr":x=w;y=0;break;} -if(local===true){return[x,y];} -if(vp){var sc=this.getScroll();return[x+sc.left,y+sc.top];} -var o=this.getXY();return[x+o[0],y+o[1]];},getAlignToXY:function(el,p,o){el=Ext.get(el);var d=this.dom;if(!el.dom){throw"Element.alignTo with an element that doesn't exist";} -var c=false;var p1="",p2="";o=o||[0,0];if(!p){p="tl-bl";}else if(p=="?"){p="tl-bl?";}else if(p.indexOf("-")==-1){p="tl-"+p;} -p=p.toLowerCase();var m=p.match(/^([a-z]+)-([a-z]+)(\?)?$/);if(!m){throw"Element.alignTo with an invalid alignment "+p;} -p1=m[1];p2=m[2];c=!!m[3];var a1=this.getAnchorXY(p1,true);var a2=el.getAnchorXY(p2,false);var x=a2[0]-a1[0]+o[0];var y=a2[1]-a1[1]+o[1];if(c){var w=this.getWidth(),h=this.getHeight(),r=el.getRegion();var dw=D.getViewWidth()-5,dh=D.getViewHeight()-5;var p1y=p1.charAt(0),p1x=p1.charAt(p1.length-1);var p2y=p2.charAt(0),p2x=p2.charAt(p2.length-1);var swapY=((p1y=="t"&&p2y=="b")||(p1y=="b"&&p2y=="t"));var swapX=((p1x=="r"&&p2x=="l")||(p1x=="l"&&p2x=="r"));var doc=document;var scrollX=(doc.documentElement.scrollLeft||doc.body.scrollLeft||0)+5;var scrollY=(doc.documentElement.scrollTop||doc.body.scrollTop||0)+5;if((x+w)>dw+scrollX){x=swapX?r.left-w:dw+scrollX-w;} -if(x<scrollX){x=swapX?r.right:scrollX;} -if((y+h)>dh+scrollY){y=swapY?r.top-h:dh+scrollY-h;} -if(y<scrollY){y=swapY?r.bottom:scrollY;}} -return[x,y];},getConstrainToXY:function(){var os={top:0,left:0,bottom:0,right:0};return function(el,local,offsets){el=Ext.get(el);offsets=offsets?Ext.applyIf(offsets,os):os;var vw,vh,vx=0,vy=0;if(el.dom==document.body||el.dom==document){vw=Ext.lib.Dom.getViewWidth();vh=Ext.lib.Dom.getViewHeight();}else{vw=el.dom.clientWidth;vh=el.dom.clientHeight;if(!local){var vxy=el.getXY();vx=vxy[0];vy=vxy[1];}} -var s=el.getScroll();vx+=offsets.left+s.left;vy+=offsets.top+s.top;vw-=offsets.right;vh-=offsets.bottom;var vr=vx+vw;var vb=vy+vh;var xy=!local?this.getXY():[this.getLeft(true),this.getTop(true)];var x=xy[0],y=xy[1];var w=this.dom.offsetWidth,h=this.dom.offsetHeight;var moved=false;if((x+w)>vr){x=vr-w;moved=true;} -if((y+h)>vb){y=vb-h;moved=true;} -if(x<vx){x=vx;moved=true;} -if(y<vy){y=vy;moved=true;} -return moved?[x,y]:false;};}(),alignTo:function(element,position,offsets,animate){var xy=this.getAlignToXY(element,position,offsets);this.setXY(xy,this.preanim(arguments,3));return this;},anchorTo:function(el,alignment,offsets,animate,monitorScroll,callback){var action=function(){this.alignTo(el,alignment,offsets,animate);Ext.callback(callback,this);};Ext.EventManager.onWindowResize(action,this);var tm=typeof monitorScroll;if(tm!='undefined'){Ext.EventManager.on(window,'scroll',action,this,{buffer:tm=='number'?monitorScroll:50});} -action.call(this);return this;},clearOpacity:function(){if(window.ActiveXObject){if(typeof this.dom.style.filter=='string'&&(/alpha/i).test(this.dom.style.filter)){this.dom.style.filter="";}}else{this.dom.style.opacity="";this.dom.style["-moz-opacity"]="";this.dom.style["-khtml-opacity"]="";} -return this;},hide:function(animate){this.setVisible(false,this.preanim(arguments,0));return this;},show:function(animate){this.setVisible(true,this.preanim(arguments,0));return this;},addUnits:function(size){return Ext.Element.addUnits(size,this.defaultUnit);},beginMeasure:function(){var el=this.dom;if(el.offsetWidth||el.offsetHeight){return this;} -var changed=[];var p=this.dom,b=document.body;while((!el.offsetWidth&&!el.offsetHeight)&&p&&p.tagName&&p!=b){var pe=Ext.get(p);if(pe.getStyle('display')=='none'){changed.push({el:p,visibility:pe.getStyle("visibility")});p.style.visibility="hidden";p.style.display="block";} -p=p.parentNode;} -this._measureChanged=changed;return this;},endMeasure:function(){var changed=this._measureChanged;if(changed){for(var i=0,len=changed.length;i<len;i++){var r=changed[i];r.el.style.visibility=r.visibility;r.el.style.display="none";} -this._measureChanged=null;} -return this;},update:function(html,loadScripts,callback){if(typeof html=="undefined"){html="";} -if(loadScripts!==true){this.dom.innerHTML=html;if(typeof callback=="function"){callback();} -return this;} -var id=Ext.id();var dom=this.dom;html+='<span id="'+id+'"></span>';E.onAvailable(id,function(){var hd=document.getElementsByTagName("head")[0];var re=/(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig;var srcRe=/\ssrc=([\'\"])(.*?)\1/i;var typeRe=/\stype=([\'\"])(.*?)\1/i;var match;while(match=re.exec(html)){var attrs=match[1];var srcMatch=attrs?attrs.match(srcRe):false;if(srcMatch&&srcMatch[2]){var s=document.createElement("script");s.src=srcMatch[2];var typeMatch=attrs.match(typeRe);if(typeMatch&&typeMatch[2]){s.type=typeMatch[2];} -hd.appendChild(s);}else if(match[2]&&match[2].length>0){eval(match[2]);}} -var el=document.getElementById(id);if(el){el.parentNode.removeChild(el);} -if(typeof callback=="function"){callback();}});dom.innerHTML=html.replace(/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,"");return this;},load:function(){var um=this.getUpdateManager();um.update.apply(um,arguments);return this;},getUpdateManager:function(){if(!this.updateManager){this.updateManager=new Ext.UpdateManager(this);} -return this.updateManager;},unselectable:function(){this.dom.unselectable="on";this.swallowEvent("selectstart",true);this.applyStyles("-moz-user-select:none;-khtml-user-select:none;");this.addClass("x-unselectable");return this;},getCenterXY:function(){return this.getAlignToXY(document,'c-c');},center:function(centerIn){this.alignTo(centerIn||document,'c-c');return this;},isBorderBox:function(){return noBoxAdjust[this.dom.tagName.toLowerCase()]||Ext.isBorderBox;},getBox:function(contentBox,local){var xy;if(!local){xy=this.getXY();}else{var left=parseInt(this.getStyle("left"),10)||0;var top=parseInt(this.getStyle("top"),10)||0;xy=[left,top];} -var el=this.dom,w=el.offsetWidth,h=el.offsetHeight,bx;if(!contentBox){bx={x:xy[0],y:xy[1],0:xy[0],1:xy[1],width:w,height:h};}else{var l=this.getBorderWidth("l")+this.getPadding("l");var r=this.getBorderWidth("r")+this.getPadding("r");var t=this.getBorderWidth("t")+this.getPadding("t");var b=this.getBorderWidth("b")+this.getPadding("b");bx={x:xy[0]+l,y:xy[1]+t,0:xy[0]+l,1:xy[1]+t,width:w-(l+r),height:h-(t+b)};} -bx.right=bx.x+bx.width;bx.bottom=bx.y+bx.height;return bx;},getFrameWidth:function(sides,onlyContentBox){return onlyContentBox&&Ext.isBorderBox?0:(this.getPadding(sides)+this.getBorderWidth(sides));},setBox:function(box,adjust,animate){var w=box.width,h=box.height;if((adjust&&!this.autoBoxAdjust)&&!this.isBorderBox()){w-=(this.getBorderWidth("lr")+this.getPadding("lr"));h-=(this.getBorderWidth("tb")+this.getPadding("tb"));} -this.setBounds(box.x,box.y,w,h,this.preanim(arguments,2));return this;},repaint:function(){var dom=this.dom;this.addClass("x-repaint");setTimeout(function(){Ext.get(dom).removeClass("x-repaint");},1);return this;},getMargins:function(side){if(!side){return{top:parseInt(this.getStyle("margin-top"),10)||0,left:parseInt(this.getStyle("margin-left"),10)||0,bottom:parseInt(this.getStyle("margin-bottom"),10)||0,right:parseInt(this.getStyle("margin-right"),10)||0};}else{return this.addStyles(side,El.margins);}},addStyles:function(sides,styles){var val=0;for(var i=0,len=sides.length;i<len;i++){var w=parseInt(this.getStyle(styles[sides.charAt(i)]),10);if(!isNaN(w))val+=w;} -return val;},createProxy:function(config,renderTo,matchBox){if(renderTo){renderTo=Ext.getDom(renderTo);}else{renderTo=document.body;} -config=typeof config=="object"?config:{tag:"div",cls:config};var proxy=Ext.DomHelper.append(renderTo,config,true);if(matchBox){proxy.setBox(this.getBox());} -return proxy;},mask:function(msg,msgCls){if(this.getStyle("position")=="static"){this.setStyle("position","relative");} -if(!this._mask){this._mask=Ext.DomHelper.append(this.dom,{tag:"div",cls:"ext-el-mask"},true);} -this.addClass("x-masked");this._mask.setDisplayed(true);if(typeof msg=='string'){if(!this._maskMsg){this._maskMsg=Ext.DomHelper.append(this.dom,{tag:"div",cls:"ext-el-mask-msg",cn:{tag:'div'}},true);} -var mm=this._maskMsg;mm.dom.className=msgCls?"ext-el-mask-msg "+msgCls:"ext-el-mask-msg";mm.dom.firstChild.innerHTML=msg;mm.setDisplayed(true);mm.center(this);} -return this._mask;},unmask:function(removeEl){if(this._mask){if(removeEl===true){this._mask.remove();delete this._mask;if(this._maskMsg){this._maskMsg.remove();delete this._maskMsg;}}else{this._mask.setDisplayed(false);if(this._maskMsg){this._maskMsg.setDisplayed(false);}}} -this.removeClass("x-masked");},isMasked:function(){return this._mask&&this._mask.isVisible();},createShim:function(){var el=document.createElement('iframe');el.frameBorder='no';el.className='ext-shim';if(Ext.isIE&&Ext.isSecure){el.src=Ext.SSL_SECURE_URL;} -var shim=Ext.get(this.dom.parentNode.insertBefore(el,this.dom));shim.autoBoxAdjust=false;return shim;},remove:function(){if(this.dom.parentNode){this.dom.parentNode.removeChild(this.dom);} -delete El.cache[this.dom.id];},addClassOnOver:function(className,preventFlicker){this.on("mouseover",function(){Ext.fly(this,'_internal').addClass(className);},this.dom);var removeFn=function(e){if(preventFlicker!==true||!e.within(this,true)){Ext.fly(this,'_internal').removeClass(className);}};this.on("mouseout",removeFn,this.dom);return this;},addClassOnFocus:function(className){this.on("focus",function(){Ext.fly(this,'_internal').addClass(className);},this.dom);this.on("blur",function(){Ext.fly(this,'_internal').removeClass(className);},this.dom);return this;},addClassOnClick:function(className){var dom=this.dom;this.on("mousedown",function(){Ext.fly(dom,'_internal').addClass(className);var d=Ext.get(document);var fn=function(){Ext.fly(dom,'_internal').removeClass(className);d.removeListener("mouseup",fn);};d.on("mouseup",fn);});return this;},swallowEvent:function(eventName,preventDefault){var fn=function(e){e.stopPropagation();if(preventDefault){e.preventDefault();}};if(eventName instanceof Array){for(var i=0,len=eventName.length;i<len;i++){this.on(eventName[i],fn);} -return this;} -this.on(eventName,fn);return this;},fitToParent:function(monitorResize,targetParent){var p=Ext.get(targetParent||this.dom.parentNode);this.setSize(p.getComputedWidth()-p.getFrameWidth('lr'),p.getComputedHeight()-p.getFrameWidth('tb'));if(monitorResize===true){Ext.EventManager.onWindowResize(this.fitToParent.createDelegate(this,[]));} -return this;},getNextSibling:function(){var n=this.dom.nextSibling;while(n&&n.nodeType!=1){n=n.nextSibling;} -return n;},getPrevSibling:function(){var n=this.dom.previousSibling;while(n&&n.nodeType!=1){n=n.previousSibling;} -return n;},appendChild:function(el){el=Ext.get(el);el.appendTo(this);return this;},createChild:function(config,insertBefore,returnDom){config=config||{tag:'div'};if(insertBefore){return Ext.DomHelper.insertBefore(insertBefore,config,returnDom!==true);} -return Ext.DomHelper[!this.dom.firstChild?'overwrite':'append'](this.dom,config,returnDom!==true);},appendTo:function(el){el=Ext.getDom(el);el.appendChild(this.dom);return this;},insertBefore:function(el){el=Ext.getDom(el);el.parentNode.insertBefore(this.dom,el);return this;},insertAfter:function(el){el=Ext.getDom(el);el.parentNode.insertBefore(this.dom,el.nextSibling);return this;},insertFirst:function(el,returnDom){el=el||{};if(typeof el=='object'&&!el.nodeType){return this.createChild(el,this.dom.firstChild,returnDom);}else{el=Ext.getDom(el);this.dom.insertBefore(el,this.dom.firstChild);return!returnDom?Ext.get(el):el;}},insertSibling:function(el,where,returnDom){where=where?where.toLowerCase():'before';el=el||{};var rt,refNode=where=='before'?this.dom:this.dom.nextSibling;if(typeof el=='object'&&!el.nodeType){if(where=='after'&&!this.dom.nextSibling){rt=Ext.DomHelper.append(this.dom.parentNode,el,!returnDom);}else{rt=Ext.DomHelper[where=='after'?'insertAfter':'insertBefore'](this.dom,el,!returnDom);}}else{rt=this.dom.parentNode.insertBefore(Ext.getDom(el),where=='before'?this.dom:this.dom.nextSibling);if(!returnDom){rt=Ext.get(rt);}} -return rt;},wrap:function(config,returnDom){if(!config){config={tag:"div"};} -var newEl=Ext.DomHelper.insertBefore(this.dom,config,!returnDom);newEl.dom?newEl.dom.appendChild(this.dom):newEl.appendChild(this.dom);return newEl;},replace:function(el){el=Ext.get(el);this.insertBefore(el);el.remove();return this;},insertHtml:function(where,html,returnEl){var el=Ext.DomHelper.insertHtml(where,this.dom,html);return returnEl?Ext.get(el):el;},set:function(o,useSet){var el=this.dom;useSet=typeof useSet=='undefined'?(el.setAttribute?true:false):useSet;for(var attr in o){if(attr=="style"||typeof o[attr]=="function")continue;if(attr=="cls"){el.className=o["cls"];}else{if(useSet)el.setAttribute(attr,o[attr]);else el[attr]=o[attr];}} -Ext.DomHelper.applyStyles(el,o.style);return this;},addKeyListener:function(key,fn,scope){var config;if(typeof key!="object"||key instanceof Array){config={key:key,fn:fn,scope:scope};}else{config={key:key.key,shift:key.shift,ctrl:key.ctrl,alt:key.alt,fn:fn,scope:scope};} -return new Ext.KeyMap(this,config);},addKeyMap:function(config){return new Ext.KeyMap(this,config);},isScrollable:function(){var dom=this.dom;return dom.scrollHeight>dom.clientHeight||dom.scrollWidth>dom.clientWidth;},scrollTo:function(side,value,animate){var prop=side.toLowerCase()=="left"?"scrollLeft":"scrollTop";if(!animate||!A){this.dom[prop]=value;}else{var to=prop=="scrollLeft"?[value,this.dom.scrollTop]:[this.dom.scrollLeft,value];this.anim({scroll:{"to":to}},this.preanim(arguments,2),'scroll');} -return this;},scroll:function(direction,distance,animate){if(!this.isScrollable()){return;} -var el=this.dom;var l=el.scrollLeft,t=el.scrollTop;var w=el.scrollWidth,h=el.scrollHeight;var cw=el.clientWidth,ch=el.clientHeight;direction=direction.toLowerCase();var scrolled=false;var a=this.preanim(arguments,2);switch(direction){case"l":case"left":if(w-l>cw){var v=Math.min(l+distance,w-cw);this.scrollTo("left",v,a);scrolled=true;} -break;case"r":case"right":if(l>0){var v=Math.max(l-distance,0);this.scrollTo("left",v,a);scrolled=true;} -break;case"t":case"top":case"up":if(t>0){var v=Math.max(t-distance,0);this.scrollTo("top",v,a);scrolled=true;} -break;case"b":case"bottom":case"down":if(h-t>ch){var v=Math.min(t+distance,h-ch);this.scrollTo("top",v,a);scrolled=true;} -break;} -return scrolled;},translatePoints:function(x,y){if(typeof x=='object'||x instanceof Array){y=x[1];x=x[0];} -var p=this.getStyle('position');var o=this.getXY();var l=parseInt(this.getStyle('left'),10);var t=parseInt(this.getStyle('top'),10);if(isNaN(l)){l=(p=="relative")?0:this.dom.offsetLeft;} -if(isNaN(t)){t=(p=="relative")?0:this.dom.offsetTop;} -return{left:(x-o[0]+l),top:(y-o[1]+t)};},getScroll:function(){var d=this.dom,doc=document;if(d==doc||d==doc.body){var l=window.pageXOffset||doc.documentElement.scrollLeft||doc.body.scrollLeft||0;var t=window.pageYOffset||doc.documentElement.scrollTop||doc.body.scrollTop||0;return{left:l,top:t};}else{return{left:d.scrollLeft,top:d.scrollTop};}},getColor:function(attr,defaultValue,prefix){var v=this.getStyle(attr);if(!v||v=="transparent"||v=="inherit"){return defaultValue;} -var color=typeof prefix=="undefined"?"#":prefix;if(v.substr(0,4)=="rgb("){var rvs=v.slice(4,v.length-1).split(",");for(var i=0;i<3;i++){var h=parseInt(rvs[i]).toString(16);if(h<16){h="0"+h;} -color+=h;}}else{if(v.substr(0,1)=="#"){if(v.length==4){for(var i=1;i<4;i++){var c=v.charAt(i);color+=c+c;}}else if(v.length==7){color+=v.substr(1);}}} -return(color.length>5?color.toLowerCase():defaultValue);},boxWrap:function(cls){cls=cls||'x-box';var el=Ext.get(this.insertHtml('beforeBegin',String.format('<div class="{0}">'+El.boxMarkup+'</div>',cls)));el.child('.'+cls+'-mc').dom.appendChild(this.dom);return el;},getAttributeNS:Ext.isIE?function(ns,name){var d=this.dom;var type=typeof d[ns+":"+name];if(type!='undefined'&&type!='unknown'){return d[ns+":"+name];} -return d[name];}:function(ns,name){var d=this.dom;return d.getAttributeNS(ns,name)||d.getAttribute(ns+":"+name)||d.getAttribute(name)||d[name];}};var ep=El.prototype;ep.on=ep.addListener;ep.mon=ep.addListener;ep.un=ep.removeListener;ep.autoBoxAdjust=true;ep.autoDisplayMode=true;El.unitPattern=/\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i;El.addUnits=function(v,defaultUnit){if(v===""||v=="auto"){return v;} -if(v===undefined){return'';} -if(typeof v=="number"||!El.unitPattern.test(v)){return v+(defaultUnit||'px');} -return v;};El.boxMarkup='<div class="{0}-tl"><div class="{0}-tr"><div class="{0}-tc"></div></div></div><div class="{0}-ml"><div class="{0}-mr"><div class="{0}-mc"></div></div></div><div class="{0}-bl"><div class="{0}-br"><div class="{0}-bc"></div></div></div>';El.VISIBILITY=1;El.DISPLAY=2;El.borders={l:"border-left-width",r:"border-right-width",t:"border-top-width",b:"border-bottom-width"};El.paddings={l:"padding-left",r:"padding-right",t:"padding-top",b:"padding-bottom"};El.margins={l:"margin-left",r:"margin-right",t:"margin-top",b:"margin-bottom"};El.cache={};var docEl;El.get=function(el){var ex,elm,id;if(!el){return null;} -if(typeof el=="string"){if(!(elm=document.getElementById(el))){return null;} -if(ex=El.cache[el]){ex.dom=elm;}else{ex=El.cache[el]=new El(elm);} -return ex;}else if(el.tagName){if(!(id=el.id)){id=Ext.id(el);} -if(ex=El.cache[id]){ex.dom=el;}else{ex=El.cache[id]=new El(el);} -return ex;}else if(el instanceof El){if(el!=docEl){el.dom=document.getElementById(el.id)||el.dom;El.cache[el.id]=el;} -return el;}else if(el.isComposite){return el;}else if(el instanceof Array){return El.select(el);}else if(el==document){if(!docEl){var f=function(){};f.prototype=El.prototype;docEl=new f();docEl.dom=document;} -return docEl;} -return null;};El.uncache=function(el){for(var i=0,a=arguments,len=a.length;i<len;i++){if(a[i]){delete El.cache[a[i].id||a[i]];}}};El.garbageCollect=function(){if(!Ext.enableGarbageCollector){clearInterval(El.collectorThread);return;} -for(var eid in El.cache){var el=El.cache[eid],d=el.dom;if(!d||!d.parentNode||(!d.offsetParent&&!document.getElementById(eid))){delete El.cache[eid];if(Ext.enableListenerCollection){Ext.lib.Dom.purgeElement(d);}}}} -El.collectorThreadId=setInterval(El.garbageCollect,30000);El.Flyweight=function(dom){this.dom=dom;};El.Flyweight.prototype=El.prototype;El._flyweights={};El.fly=function(el,named){named=named||'_global';el=Ext.getDom(el);if(!el){return null;} -if(!El._flyweights[named]){El._flyweights[named]=new El.Flyweight();} -El._flyweights[named].dom=el;return El._flyweights[named];};Ext.get=El.get;Ext.fly=El.fly;var noBoxAdjust=Ext.isStrict?{select:1}:{input:1,select:1,textarea:1};if(Ext.isIE||Ext.isGecko){noBoxAdjust['button']=1;} -Ext.EventManager.on(window,'unload',function(){delete El.cache;delete El._flyweights;});})(); - -Ext.enableFx=true;Ext.Fx={slideIn:function(anchor,o){var el=this.getFxEl();o=o||{};el.queueFx(o,function(){anchor=anchor||"t";this.fixDisplay();var r=this.getFxRestore();var b=this.getBox();this.setSize(b);var wrap=this.fxWrap(r.pos,o,"hidden");var st=this.dom.style;st.visibility="visible";st.position="absolute";var after=function(){el.fxUnwrap(wrap,r.pos,o);st.width=r.width;st.height=r.height;el.afterFx(o);};var a,pt={to:[b.x,b.y]},bw={to:b.width},bh={to:b.height};switch(anchor.toLowerCase()){case"t":wrap.setSize(b.width,0);st.left=st.bottom="0";a={height:bh};break;case"l":wrap.setSize(0,b.height);st.right=st.top="0";a={width:bw};break;case"r":wrap.setSize(0,b.height);wrap.setX(b.right);st.left=st.top="0";a={width:bw,points:pt};break;case"b":wrap.setSize(b.width,0);wrap.setY(b.bottom);st.left=st.top="0";a={height:bh,points:pt};break;case"tl":wrap.setSize(0,0);st.right=st.bottom="0";a={width:bw,height:bh};break;case"bl":wrap.setSize(0,0);wrap.setY(b.y+b.height);st.right=st.top="0";a={width:bw,height:bh,points:pt};break;case"br":wrap.setSize(0,0);wrap.setXY([b.right,b.bottom]);st.left=st.top="0";a={width:bw,height:bh,points:pt};break;case"tr":wrap.setSize(0,0);wrap.setX(b.x+b.width);st.left=st.bottom="0";a={width:bw,height:bh,points:pt};break;} -this.dom.style.visibility="visible";wrap.show();arguments.callee.anim=wrap.fxanim(a,o,'motion',.5,'easeOut',after);});return this;},slideOut:function(anchor,o){var el=this.getFxEl();o=o||{};el.queueFx(o,function(){anchor=anchor||"t";var r=this.getFxRestore();var b=this.getBox();this.setSize(b);var wrap=this.fxWrap(r.pos,o,"visible");var st=this.dom.style;st.visibility="visible";st.position="absolute";wrap.setSize(b);var after=function(){if(o.useDisplay){el.setDisplayed(false);}else{el.hide();} -el.fxUnwrap(wrap,r.pos,o);st.width=r.width;st.height=r.height;el.afterFx(o);};var a,zero={to:0};switch(anchor.toLowerCase()){case"t":st.left=st.bottom="0";a={height:zero};break;case"l":st.right=st.top="0";a={width:zero};break;case"r":st.left=st.top="0";a={width:zero,points:{to:[b.right,b.y]}};break;case"b":st.left=st.top="0";a={height:zero,points:{to:[b.x,b.bottom]}};break;case"tl":st.right=st.bottom="0";a={width:zero,height:zero};break;case"bl":st.right=st.top="0";a={width:zero,height:zero,points:{to:[b.x,b.bottom]}};break;case"br":st.left=st.top="0";a={width:zero,height:zero,points:{to:[b.x+b.width,b.bottom]}};break;case"tr":st.left=st.bottom="0";a={width:zero,height:zero,points:{to:[b.right,b.y]}};break;} -arguments.callee.anim=wrap.fxanim(a,o,'motion',.5,"easeOut",after);});return this;},puff:function(o){var el=this.getFxEl();o=o||{};el.queueFx(o,function(){this.clearOpacity();this.show();var r=this.getFxRestore();var st=this.dom.style;var after=function(){if(o.useDisplay){el.setDisplayed(false);}else{el.hide();} -el.clearOpacity();el.setPositioning(r.pos);st.width=r.width;st.height=r.height;st.fontSize='';el.afterFx(o);};var width=this.getWidth();var height=this.getHeight();arguments.callee.anim=this.fxanim({width:{to:this.adjustWidth(width*2)},height:{to:this.adjustHeight(height*2)},points:{by:[-(width*.5),-(height*.5)]},opacity:{to:0},fontSize:{to:200,unit:"%"}},o,'motion',.5,"easeOut",after);});return this;},switchOff:function(o){var el=this.getFxEl();o=o||{};el.queueFx(o,function(){this.clearOpacity();this.clip();var r=this.getFxRestore();var st=this.dom.style;var after=function(){if(o.useDisplay){el.setDisplayed(false);}else{el.hide();} -el.clearOpacity();el.setPositioning(r.pos);st.width=r.width;st.height=r.height;el.afterFx(o);};this.fxanim({opacity:{to:0.3}},null,null,.1,null,function(){this.clearOpacity();(function(){this.fxanim({height:{to:1},points:{by:[0,this.getHeight()*.5]}},o,'motion',0.3,'easeIn',after);}).defer(100,this);});});return this;},highlight:function(color,o){var el=this.getFxEl();o=o||{};el.queueFx(o,function(){color=color||"ffff9c";attr=o.attr||"backgroundColor";this.clearOpacity();this.show();var origColor=this.getColor(attr);var restoreColor=this.dom.style[attr];endColor=(o.endColor||origColor)||"ffffff";var after=function(){el.dom.style[attr]=restoreColor;el.afterFx(o);};var a={};a[attr]={from:color,to:endColor};arguments.callee.anim=this.fxanim(a,o,'color',1,'easeIn',after);});return this;},frame:function(color,count,o){var el=this.getFxEl();o=o||{};el.queueFx(o,function(){color=color||"#C3DAF9";if(color.length==6){color="#"+color;} -count=count||1;duration=o.duration||1;this.show();var b=this.getBox();var animFn=function(){var proxy=this.createProxy({tag:"div",style:{visbility:"hidden",position:"absolute","z-index":"35000",border:"0px solid "+color}});var scale=Ext.isBorderBox?2:1;proxy.animate({top:{from:b.y,to:b.y-20},left:{from:b.x,to:b.x-20},borderWidth:{from:0,to:10},opacity:{from:1,to:0},height:{from:b.height,to:(b.height+(20*scale))},width:{from:b.width,to:(b.width+(20*scale))}},duration,function(){proxy.remove();});if(--count>0){animFn.defer((duration/2)*1000,this);}else{el.afterFx(o);}};animFn.call(this);});return this;},pause:function(seconds){var el=this.getFxEl();var o={};el.queueFx(o,function(){setTimeout(function(){el.afterFx(o);},seconds*1000);});return this;},fadeIn:function(o){var el=this.getFxEl();o=o||{};el.queueFx(o,function(){this.setOpacity(0);this.fixDisplay();this.dom.style.visibility='visible';var to=o.endOpacity||1;arguments.callee.anim=this.fxanim({opacity:{to:to}},o,null,.5,"easeOut",function(){if(to==1){this.clearOpacity();} -el.afterFx(o);});});return this;},fadeOut:function(o){var el=this.getFxEl();o=o||{};el.queueFx(o,function(){arguments.callee.anim=this.fxanim({opacity:{to:o.endOpacity||0}},o,null,.5,"easeOut",function(){if(this.visibilityMode==Ext.Element.DISPLAY||o.useDisplay){this.dom.style.display="none";}else{this.dom.style.visibility="hidden";} -this.clearOpacity();el.afterFx(o);});});return this;},scale:function(w,h,o){this.shift(Ext.apply({},o,{width:w,height:h}));return this;},shift:function(o){var el=this.getFxEl();o=o||{};el.queueFx(o,function(){var a={},w=o.width,h=o.height,x=o.x,y=o.y,op=o.opacity;if(w!==undefined){a.width={to:this.adjustWidth(w)};} -if(h!==undefined){a.height={to:this.adjustHeight(h)};} -if(x!==undefined||y!==undefined){a.points={to:[x!==undefined?x:this.getX(),y!==undefined?y:this.getY()]};} -if(op!==undefined){a.opacity={to:op};} -if(o.xy!==undefined){a.points={to:o.xy};} -arguments.callee.anim=this.fxanim(a,o,'motion',.35,"easeOut",function(){el.afterFx(o);});});return this;},ghost:function(anchor,o){var el=this.getFxEl();o=o||{};el.queueFx(o,function(){anchor=anchor||"b";var r=this.getFxRestore();var w=this.getWidth(),h=this.getHeight();var st=this.dom.style;var after=function(){if(o.useDisplay){el.setDisplayed(false);}else{el.hide();} -el.clearOpacity();el.setPositioning(r.pos);st.width=r.width;st.height=r.height;el.afterFx(o);};var a={opacity:{to:0},points:{}},pt=a.points;switch(anchor.toLowerCase()){case"t":pt.by=[0,-h];break;case"l":pt.by=[-w,0];break;case"r":pt.by=[w,0];break;case"b":pt.by=[0,h];break;case"tl":pt.by=[-w,-h];break;case"bl":pt.by=[-w,h];break;case"br":pt.by=[w,h];break;case"tr":pt.by=[w,-h];break;} -arguments.callee.anim=this.fxanim(a,o,'motion',.5,"easeOut",after);});return this;},syncFx:function(){this.fxDefaults=Ext.apply(this.fxDefaults||{},{block:false,concurrent:true,stopFx:false});return this;},sequenceFx:function(){this.fxDefaults=Ext.apply(this.fxDefaults||{},{block:false,concurrent:false,stopFx:false});return this;},nextFx:function(){var ef=this.fxQueue[0];if(ef){ef.call(this);}},hasActiveFx:function(){return this.fxQueue&&this.fxQueue[0];},stopFx:function(){if(this.hasActiveFx()){var cur=this.fxQueue[0];if(cur&&cur.anim&&cur.anim.isAnimated()){this.fxQueue=[cur];cur.anim.stop(true);}} -return this;},beforeFx:function(o){if(this.hasActiveFx()&&!o.concurrent){if(o.stopFx){this.stopFx();return true;} -return false;} -return true;},hasFxBlock:function(){var q=this.fxQueue;return q&&q[0]&&q[0].block;},queueFx:function(o,fn){if(!this.fxQueue){this.fxQueue=[];} -if(!this.hasFxBlock()){Ext.applyIf(o,this.fxDefaults);if(!o.concurrent){var run=this.beforeFx(o);fn.block=o.block;this.fxQueue.push(fn);if(run){this.nextFx();}}else{fn.call(this);}} -return this;},fxWrap:function(pos,o,vis){var wrap;if(!o.wrap||!(wrap=Ext.get(o.wrap))){var wrapXY;if(o.fixPosition){wrapXY=this.getXY();} -var div=document.createElement("div");div.style.visibility=vis;wrap=Ext.get(this.dom.parentNode.insertBefore(div,this.dom));wrap.setPositioning(pos);if(wrap.getStyle("position")=="static"){wrap.position("relative");} -this.clearPositioning('auto');wrap.clip();wrap.dom.appendChild(this.dom);if(wrapXY){wrap.setXY(wrapXY);}} -return wrap;},fxUnwrap:function(wrap,pos,o){this.clearPositioning();this.setPositioning(pos);if(!o.wrap){wrap.dom.parentNode.insertBefore(this.dom,wrap.dom);wrap.remove();}},getFxRestore:function(){var st=this.dom.style;return{pos:this.getPositioning(),width:st.width,height:st.height};},afterFx:function(o){if(o.afterStyle){this.applyStyles(o.afterStyle);} -if(o.afterCls){this.addClass(o.afterCls);} -if(o.remove===true){this.remove();} -Ext.callback(o.callback,o.scope,[this]);if(!o.concurrent){this.fxQueue.shift();this.nextFx();}},getFxEl:function(){return Ext.get(this.dom);},fxanim:function(args,opt,animType,defaultDur,defaultEase,cb){animType=animType||'run';opt=opt||{};var anim=Ext.lib.Anim[animType](this.dom,args,(opt.duration||defaultDur)||.35,(opt.easing||defaultEase)||'easeOut',function(){Ext.callback(cb,this);},this);opt.anim=anim;return anim;}};Ext.Fx.resize=Ext.Fx.scale;Ext.apply(Ext.Element.prototype,Ext.Fx); - -Ext.CompositeElement=function(els){this.elements=[];this.addElements(els);};Ext.CompositeElement.prototype={isComposite:true,addElements:function(els){if(!els)return this;if(typeof els=="string"){els=Ext.Element.selectorFunction(els);} -var yels=this.elements;var index=yels.length-1;for(var i=0,len=els.length;i<len;i++){yels[++index]=Ext.get(els[i],true);} -return this;},invoke:function(fn,args){var els=this.elements;for(var i=0,len=els.length;i<len;i++){Ext.Element.prototype[fn].apply(els[i],args);} -return this;},add:function(els){if(typeof els=="string"){this.addElements(Ext.Element.selectorFunction(els));}else if(els.length!==undefined){this.addElements(els);}else{this.addElements([els]);} -return this;},each:function(fn,scope){var els=this.elements;for(var i=0,len=els.length;i<len;i++){if(fn.call(scope||els[i],els[i],this,i)===false){break;}} -return this;},item:function(index){return this.elements[index];}};(function(){Ext.CompositeElement.createCall=function(proto,fnName){if(!proto[fnName]){proto[fnName]=function(){return this.invoke(fnName,arguments);};}};for(var fnName in Ext.Element.prototype){if(typeof Ext.Element.prototype[fnName]=="function"){Ext.CompositeElement.createCall(Ext.CompositeElement.prototype,fnName);}};})();Ext.CompositeElementLite=function(els){Ext.CompositeElementLite.superclass.constructor.call(this,els);var flyEl=function(){};flyEl.prototype=Ext.Element.prototype;this.el=new Ext.Element.Flyweight();};Ext.extend(Ext.CompositeElementLite,Ext.CompositeElement,{addElements:function(els){if(els){if(els instanceof Array){this.elements=this.elements.concat(els);}else{var yels=this.elements;var index=yels.length-1;for(var i=0,len=els.length;i<len;i++){yels[++index]=els[i];}}} -return this;},invoke:function(fn,args){var els=this.elements;var el=this.el;for(var i=0,len=els.length;i<len;i++){el.dom=els[i];Ext.Element.prototype[fn].apply(el,args);} -return this;},item:function(index){this.el.dom=this.elements[index];return this.el;},addListener:function(eventName,handler,scope,opt){var els=this.elements;for(var i=0,len=els.length;i<len;i++){Ext.EventManager.on(els[i],eventName,handler,scope||els[i],opt);} -return this;},each:function(fn,scope){var els=this.elements;var el=this.el;for(var i=0,len=els.length;i<len;i++){el.dom=els[i];if(fn.call(scope||el,el,this,i)===false){break;}} -return this;}});Ext.CompositeElementLite.prototype.on=Ext.CompositeElementLite.prototype.addListener;if(Ext.DomQuery){Ext.Element.selectorFunction=Ext.DomQuery.select;} -Ext.Element.select=function(selector,unique,root){var els;if(typeof selector=="string"){els=Ext.Element.selectorFunction(selector,root);}else if(selector.length!==undefined){els=selector;}else{throw"Invalid selector";} -if(unique===true){return new Ext.CompositeElement(els);}else{return new Ext.CompositeElementLite(els);}};Ext.select=Ext.Element.select; - -Ext.UpdateManager=function(el,forceNew){el=Ext.get(el);if(!forceNew&&el.updateManager){return el.updateManager;} -this.el=el;this.defaultUrl=null;this.addEvents({"beforeupdate":true,"update":true,"failure":true});var d=Ext.UpdateManager.defaults;this.sslBlankUrl=d.sslBlankUrl;this.disableCaching=d.disableCaching;this.indicatorText=d.indicatorText;this.showLoadIndicator=d.showLoadIndicator;this.timeout=d.timeout;this.loadScripts=d.loadScripts;this.transaction=null;this.autoRefreshProcId=null;this.refreshDelegate=this.refresh.createDelegate(this);this.updateDelegate=this.update.createDelegate(this);this.formUpdateDelegate=this.formUpdate.createDelegate(this);this.successDelegate=this.processSuccess.createDelegate(this);this.failureDelegate=this.processFailure.createDelegate(this);this.renderer=new Ext.UpdateManager.BasicRenderer();Ext.UpdateManager.superclass.constructor.call(this);};Ext.extend(Ext.UpdateManager,Ext.util.Observable,{getEl:function(){return this.el;},update:function(url,params,callback,discardUrl){if(this.fireEvent("beforeupdate",this.el,url,params)!==false){var method=this.method;if(typeof url=="object"){var cfg=url;url=cfg.url;params=params||cfg.params;callback=callback||cfg.callback;discardUrl=discardUrl||cfg.discardUrl;if(callback&&cfg.scope){callback=callback.createDelegate(cfg.scope);} -if(typeof cfg.method!="undefined"){method=cfg.method;};if(typeof cfg.nocache!="undefined"){this.disableCaching=cfg.nocache;};if(typeof cfg.text!="undefined"){this.indicatorText='<div class="loading-indicator">'+cfg.text+"</div>";};if(typeof cfg.scripts!="undefined"){this.loadScripts=cfg.scripts;};if(typeof cfg.timeout!="undefined"){this.timeout=cfg.timeout;};} -this.showLoading();if(!discardUrl){this.defaultUrl=url;} -if(typeof url=="function"){url=url.call(this);} -if(typeof params=="function"){params=params();} -if(params&&typeof params!="string"){var buf=[];for(var key in params){if(typeof params[key]!="function"){buf.push(encodeURIComponent(key),"=",encodeURIComponent(params[key]),"&");}} -delete buf[buf.length-1];params=buf.join("");} -var cb={success:this.successDelegate,failure:this.failureDelegate,timeout:(this.timeout*1000),argument:{"url":url,"form":null,"callback":callback,"params":params}};method=method||(params?"POST":"GET");if(method=="GET"){url=this.prepareUrl(url);} -this.transaction=Ext.lib.Ajax.request(method,url,cb,params);}},formUpdate:function(form,url,reset,callback){if(this.fireEvent("beforeupdate",this.el,form,url)!==false){formEl=Ext.getDom(form);if(typeof url=="function"){url=url.call(this);} -if(typeof params=="function"){params=params();} -url=url||formEl.action;var cb={success:this.successDelegate,failure:this.failureDelegate,timeout:(this.timeout*1000),argument:{"url":url,"form":formEl,"callback":callback,"reset":reset}};var isUpload=false;var enctype=formEl.getAttribute("enctype");if(enctype&&enctype.toLowerCase()=="multipart/form-data"){isUpload=true;cb.upload=this.successDelegate;} -this.transaction=Ext.lib.Ajax.formRequest(formEl,url,cb,null,isUpload,this.sslBlankUrl);this.showLoading.defer(1,this);}},refresh:function(callback){if(this.defaultUrl==null){return;} -this.update(this.defaultUrl,null,callback,true);},startAutoRefresh:function(interval,url,params,callback,refreshNow){if(refreshNow){this.update(url||this.defaultUrl,params,callback,true);} -if(this.autoRefreshProcId){clearInterval(this.autoRefreshProcId);} -this.autoRefreshProcId=setInterval(this.update.createDelegate(this,[url||this.defaultUrl,params,callback,true]),interval*1000);},stopAutoRefresh:function(){if(this.autoRefreshProcId){clearInterval(this.autoRefreshProcId);delete this.autoRefreshProcId;}},isAutoRefreshing:function(){return this.autoRefreshProcId?true:false;},showLoading:function(){if(this.showLoadIndicator){this.el.update(this.indicatorText);}},prepareUrl:function(url){if(this.disableCaching){var append="_dc="+(new Date().getTime());if(url.indexOf("?")!==-1){url+="&"+append;}else{url+="?"+append;}} -return url;},processSuccess:function(response){this.transaction=null;if(response.argument.form&&response.argument.reset){try{response.argument.form.reset();}catch(e){}} -if(this.loadScripts){this.renderer.render(this.el,response,this,this.updateComplete.createDelegate(this,[response]));}else{this.renderer.render(this.el,response,this);this.updateComplete(response);}},updateComplete:function(response){this.fireEvent("update",this.el,response);if(typeof response.argument.callback=="function"){response.argument.callback(this.el,true,response);}},processFailure:function(response){this.transaction=null;this.fireEvent("failure",this.el,response);if(typeof response.argument.callback=="function"){response.argument.callback(this.el,false,response);}},setRenderer:function(renderer){this.renderer=renderer;},getRenderer:function(){return this.renderer;},setDefaultUrl:function(defaultUrl){this.defaultUrl=defaultUrl;},abort:function(){if(this.transaction){Ext.lib.Ajax.abort(this.transaction);}},isUpdating:function(){if(this.transaction){return Ext.lib.Ajax.isCallInProgress(this.transaction);} -return false;}});Ext.UpdateManager.defaults={timeout:30,loadScripts:false,sslBlankUrl:(Ext.SSL_SECURE_URL||"javascript:false"),disableCaching:false,showLoadIndicator:true,indicatorText:'<div class="loading-indicator">Loading...</div>'};Ext.UpdateManager.updateElement=function(el,url,params,options){var um=Ext.get(el,true).getUpdateManager();Ext.apply(um,options);um.update(url,params,options?options.callback:null);};Ext.UpdateManager.update=Ext.UpdateManager.updateElement;Ext.UpdateManager.BasicRenderer=function(){};Ext.UpdateManager.BasicRenderer.prototype={render:function(el,response,updateManager,callback){el.update(response.responseText,updateManager.loadScripts,callback);}}; - -Date.parseFunctions={count:0};Date.parseRegexes=[];Date.formatFunctions={count:0};Date.prototype.dateFormat=function(format){if(Date.formatFunctions[format]==null){Date.createNewFormat(format);} -var func=Date.formatFunctions[format];return this[func]();};Date.prototype.format=Date.prototype.dateFormat;Date.createNewFormat=function(format){var funcName="format"+Date.formatFunctions.count++;Date.formatFunctions[format]=funcName;var code="Date.prototype."+funcName+" = function(){return ";var special=false;var ch='';for(var i=0;i<format.length;++i){ch=format.charAt(i);if(!special&&ch=="\\"){special=true;} -else if(special){special=false;code+="'"+String.escape(ch)+"' + ";} -else{code+=Date.getFormatCode(ch);}} -eval(code.substring(0,code.length-3)+";}");};Date.getFormatCode=function(character){switch(character){case"d":return"String.leftPad(this.getDate(), 2, '0') + ";case"D":return"Date.dayNames[this.getDay()].substring(0, 3) + ";case"j":return"this.getDate() + ";case"l":return"Date.dayNames[this.getDay()] + ";case"S":return"this.getSuffix() + ";case"w":return"this.getDay() + ";case"z":return"this.getDayOfYear() + ";case"W":return"this.getWeekOfYear() + ";case"F":return"Date.monthNames[this.getMonth()] + ";case"m":return"String.leftPad(this.getMonth() + 1, 2, '0') + ";case"M":return"Date.monthNames[this.getMonth()].substring(0, 3) + ";case"n":return"(this.getMonth() + 1) + ";case"t":return"this.getDaysInMonth() + ";case"L":return"(this.isLeapYear() ? 1 : 0) + ";case"Y":return"this.getFullYear() + ";case"y":return"('' + this.getFullYear()).substring(2, 4) + ";case"a":return"(this.getHours() < 12 ? 'am' : 'pm') + ";case"A":return"(this.getHours() < 12 ? 'AM' : 'PM') + ";case"g":return"((this.getHours() %12) ? this.getHours() % 12 : 12) + ";case"G":return"this.getHours() + ";case"h":return"String.leftPad((this.getHours() %12) ? this.getHours() % 12 : 12, 2, '0') + ";case"H":return"String.leftPad(this.getHours(), 2, '0') + ";case"i":return"String.leftPad(this.getMinutes(), 2, '0') + ";case"s":return"String.leftPad(this.getSeconds(), 2, '0') + ";case"O":return"this.getGMTOffset() + ";case"T":return"this.getTimezone() + ";case"Z":return"(this.getTimezoneOffset() * -60) + ";default:return"'"+String.escape(character)+"' + ";}};Date.parseDate=function(input,format){if(Date.parseFunctions[format]==null){Date.createParser(format);} -var func=Date.parseFunctions[format];return Date[func](input);};Date.createParser=function(format){var funcName="parse"+Date.parseFunctions.count++;var regexNum=Date.parseRegexes.length;var currentGroup=1;Date.parseFunctions[format]=funcName;var code="Date."+funcName+" = function(input){\n" -+"var y = -1, m = -1, d = -1, h = -1, i = -1, s = -1;\n" -+"var d = new Date();\n" -+"y = d.getFullYear();\n" -+"m = d.getMonth();\n" -+"d = d.getDate();\n" -+"var results = input.match(Date.parseRegexes["+regexNum+"]);\n" -+"if (results && results.length > 0) {";var regex="";var special=false;var ch='';for(var i=0;i<format.length;++i){ch=format.charAt(i);if(!special&&ch=="\\"){special=true;} -else if(special){special=false;regex+=String.escape(ch);} -else{var obj=Date.formatCodeToRegex(ch,currentGroup);currentGroup+=obj.g;regex+=obj.s;if(obj.g&&obj.c){code+=obj.c;}}} -code+="if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n" -+"{return new Date(y, m, d, h, i, s);}\n" -+"else if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n" -+"{return new Date(y, m, d, h, i);}\n" -+"else if (y > 0 && m >= 0 && d > 0 && h >= 0)\n" -+"{return new Date(y, m, d, h);}\n" -+"else if (y > 0 && m >= 0 && d > 0)\n" -+"{return new Date(y, m, d);}\n" -+"else if (y > 0 && m >= 0)\n" -+"{return new Date(y, m);}\n" -+"else if (y > 0)\n" -+"{return new Date(y);}\n" -+"}return null;}";Date.parseRegexes[regexNum]=new RegExp("^"+regex+"$");eval(code);};Date.formatCodeToRegex=function(character,currentGroup){switch(character){case"D":return{g:0,c:null,s:"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)"};case"j":case"d":return{g:1,c:"d = parseInt(results["+currentGroup+"], 10);\n",s:"(\\d{1,2})"};case"l":return{g:0,c:null,s:"(?:"+Date.dayNames.join("|")+")"};case"S":return{g:0,c:null,s:"(?:st|nd|rd|th)"};case"w":return{g:0,c:null,s:"\\d"};case"z":return{g:0,c:null,s:"(?:\\d{1,3})"};case"W":return{g:0,c:null,s:"(?:\\d{2})"};case"F":return{g:1,c:"m = parseInt(Date.monthNumbers[results["+currentGroup+"].substring(0, 3)], 10);\n",s:"("+Date.monthNames.join("|")+")"};case"M":return{g:1,c:"m = parseInt(Date.monthNumbers[results["+currentGroup+"]], 10);\n",s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"};case"n":case"m":return{g:1,c:"m = parseInt(results["+currentGroup+"], 10) - 1;\n",s:"(\\d{1,2})"};case"t":return{g:0,c:null,s:"\\d{1,2}"};case"L":return{g:0,c:null,s:"(?:1|0)"};case"Y":return{g:1,c:"y = parseInt(results["+currentGroup+"], 10);\n",s:"(\\d{4})"};case"y":return{g:1,c:"var ty = parseInt(results["+currentGroup+"], 10);\n" -+"y = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"};case"a":return{g:1,c:"if (results["+currentGroup+"] == 'am') {\n" -+"if (h == 12) { h = 0; }\n" -+"} else { if (h < 12) { h += 12; }}",s:"(am|pm)"};case"A":return{g:1,c:"if (results["+currentGroup+"] == 'AM') {\n" -+"if (h == 12) { h = 0; }\n" -+"} else { if (h < 12) { h += 12; }}",s:"(AM|PM)"};case"g":case"G":case"h":case"H":return{g:1,c:"h = parseInt(results["+currentGroup+"], 10);\n",s:"(\\d{1,2})"};case"i":return{g:1,c:"i = parseInt(results["+currentGroup+"], 10);\n",s:"(\\d{2})"};case"s":return{g:1,c:"s = parseInt(results["+currentGroup+"], 10);\n",s:"(\\d{2})"};case"O":return{g:0,c:null,s:"[+-]\\d{4}"};case"T":return{g:0,c:null,s:"[A-Z]{3}"};case"Z":return{g:0,c:null,s:"[+-]\\d{1,5}"};default:return{g:0,c:null,s:String.escape(character)};}};Date.prototype.getTimezone=function(){return this.toString().replace(/^.*? ([A-Z]{3}) [0-9]{4}.*$/,"$1").replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,"$1$2$3");};Date.prototype.getGMTOffset=function(){return(this.getTimezoneOffset()>0?"-":"+") -+String.leftPad(Math.floor(this.getTimezoneOffset()/60),2,"0") -+String.leftPad(this.getTimezoneOffset()%60,2,"0");};Date.prototype.getDayOfYear=function(){var num=0;Date.daysInMonth[1]=this.isLeapYear()?29:28;for(var i=0;i<this.getMonth();++i){num+=Date.daysInMonth[i];} -return num+this.getDate()-1;};Date.prototype.getWeekOfYear=function(){var now=this.getDayOfYear()+(4-this.getDay());var jan1=new Date(this.getFullYear(),0,1);var then=(7-jan1.getDay()+4);return String.leftPad(((now-then)/7)+1,2,"0");};Date.prototype.isLeapYear=function(){var year=this.getFullYear();return((year&3)==0&&(year%100||(year%400==0&&year)));};Date.prototype.getFirstDayOfMonth=function(){var day=(this.getDay()-(this.getDate()-1))%7;return(day<0)?(day+7):day;};Date.prototype.getLastDayOfMonth=function(){var day=(this.getDay()+(Date.daysInMonth[this.getMonth()]-this.getDate()))%7;return(day<0)?(day+7):day;};Date.prototype.getFirstDateOfMonth=function(){return new Date(this.getFullYear(),this.getMonth(),1);};Date.prototype.getLastDateOfMonth=function(){return new Date(this.getFullYear(),this.getMonth(),this.getDaysInMonth());};Date.prototype.getDaysInMonth=function(){Date.daysInMonth[1]=this.isLeapYear()?29:28;return Date.daysInMonth[this.getMonth()];};Date.prototype.getSuffix=function(){switch(this.getDate()){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th";}};Date.daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31];Date.monthNames=["January","February","March","April","May","June","July","August","September","October","November","December"];Date.dayNames=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];Date.y2kYear=50;Date.monthNumbers={Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11};Date.prototype.clone=function(){return new Date(this.getTime());};Date.prototype.clearTime=function(clone){if(clone){return this.clone().clearTime();} -this.setHours(0);this.setMinutes(0);this.setSeconds(0);this.setMilliseconds(0);return this;};if(Ext.isSafari){Date.brokenSetMonth=Date.prototype.setMonth;Date.prototype.setMonth=function(num){if(num<=-1){var n=Math.ceil(-num);var back_year=Math.ceil(n/12);var month=(n%12)?12-n%12:0;this.setFullYear(this.getFullYear()-back_year);return Date.brokenSetMonth.call(this,month);}else{return Date.brokenSetMonth.apply(this,arguments);}};} -Date.MILLI="ms";Date.SECOND="s";Date.MINUTE="mi";Date.HOUR="h";Date.DAY="d";Date.MONTH="mo";Date.YEAR="y";Date.prototype.add=function(interval,value){var d=this.clone();if(!interval||value===0)return d;switch(interval.toLowerCase()){case Date.MILLI:d.setMilliseconds(this.getMilliseconds()+value);break;case Date.SECOND:d.setSeconds(this.getSeconds()+value);break;case Date.MINUTE:d.setMinutes(this.getMinutes()+value);break;case Date.HOUR:d.setHours(this.getHours()+value);break;case Date.DAY:d.setDate(this.getDate()+value);break;case Date.MONTH:var day=this.getDate();if(day>28){day=Math.min(day,this.getFirstDateOfMonth().add('mo',value).getLastDateOfMonth().getDate());} -d.setDate(day);d.setMonth(this.getMonth()+value);break;case Date.YEAR:d.setFullYear(this.getFullYear()+value);break;} -return d;}; - -Ext.util.DelayedTask=function(fn,scope,args){var id=null,d,t;var call=function(){var now=new Date().getTime();if(now-t>=d){clearInterval(id);id=null;fn.apply(scope,args||[]);}};this.delay=function(delay,newFn,newScope,newArgs){if(id&&delay!=d){this.cancel();} -d=delay;t=new Date().getTime();fn=newFn||fn;scope=newScope||scope;args=newArgs||args;if(!id){id=setInterval(call,d);}};this.cancel=function(){if(id){clearInterval(id);id=null;}};}; - -Ext.util.TaskRunner=function(interval){interval=interval||10;var tasks=[],removeQueue=[];var id=0;var running=false;var stopThread=function(){running=false;clearInterval(id);id=0;};var startThread=function(){if(!running){running=true;id=setInterval(runTasks,interval);}};var removeTask=function(task){removeQueue.push(task);if(task.onStop){task.onStop();}};var runTasks=function(){if(removeQueue.length>0){for(var i=0,len=removeQueue.length;i<len;i++){tasks.remove(removeQueue[i]);} -removeQueue=[];if(tasks.length<1){stopThread();return;}} -var now=new Date().getTime();for(var i=0,len=tasks.length;i<len;++i){var t=tasks[i];var itime=now-t.taskRunTime;if(t.interval<=itime){var rt=t.run.apply(t.scope||t,t.args||[++t.taskRunCount]);t.taskRunTime=now;if(rt===false||t.taskRunCount===t.repeat){removeTask(t);return;}} -if(t.duration&&t.duration<=(now-t.taskStartTime)){removeTask(t);}}};this.start=function(task){tasks.push(task);task.taskStartTime=new Date().getTime();task.taskRunTime=0;task.taskRunCount=0;startThread();return task;};this.stop=function(task){removeTask(task);return task;};this.stopAll=function(){stopThread();for(var i=0,len=tasks.length;i<len;i++){if(tasks[i].onStop){tasks[i].onStop();}} -tasks=[];removeQueue=[];};};Ext.TaskMgr=new Ext.util.TaskRunner(); - -Ext.util.MixedCollection=function(allowFunctions,keyFn){this.items=[];this.map={};this.keys=[];this.length=0;this.addEvents({"clear":true,"add":true,"replace":true,"remove":true,"sort":true});this.allowFunctions=allowFunctions===true;if(keyFn){this.getKey=keyFn;} -Ext.util.MixedCollection.superclass.constructor.call(this);};Ext.extend(Ext.util.MixedCollection,Ext.util.Observable,{allowFunctions:false,add:function(key,o){if(arguments.length==1){o=arguments[0];key=this.getKey(o);} -if(typeof key=="undefined"||key===null){this.length++;this.items.push(o);this.keys.push(null);}else{var old=this.map[key];if(old){return this.replace(key,o);} -this.length++;this.items.push(o);this.map[key]=o;this.keys.push(key);} -this.fireEvent("add",this.length-1,o,key);return o;},getKey:function(o){return o.id;},replace:function(key,o){if(arguments.length==1){o=arguments[0];key=this.getKey(o);} -var old=this.item(key);if(typeof key=="undefined"||key===null||typeof old=="undefined"){return this.add(key,o);} -var index=this.indexOfKey(key);this.items[index]=o;this.map[key]=o;this.fireEvent("replace",key,old,o);return o;},addAll:function(objs){if(arguments.length>1||objs instanceof Array){var args=arguments.length>1?arguments:objs;for(var i=0,len=args.length;i<len;i++){this.add(args[i]);}}else{for(var key in objs){if(this.allowFunctions||typeof objs[key]!="function"){this.add(objs[key],key);}}}},each:function(fn,scope){var items=[].concat(this.items);for(var i=0,len=items.length;i<len;i++){if(fn.call(scope||items[i],items[i],i,len)===false){break;}}},eachKey:function(fn,scope){for(var i=0,len=this.keys.length;i<len;i++){fn.call(scope||window,this.keys[i],this.items[i],i,len);}},find:function(fn,scope){for(var i=0,len=this.items.length;i<len;i++){if(fn.call(scope||window,this.items[i],this.keys[i])){return this.items[i];}} -return null;},insert:function(index,key,o){if(arguments.length==2){o=arguments[1];key=this.getKey(o);} -if(index>=this.length){return this.add(key,o);} -this.length++;this.items.splice(index,0,o);if(typeof key!="undefined"&&key!=null){this.map[key]=o;} -this.keys.splice(index,0,key);this.fireEvent("add",index,o,key);return o;},remove:function(o){return this.removeAt(this.indexOf(o));},removeAt:function(index){if(index<this.length&&index>=0){this.length--;var o=this.items[index];this.items.splice(index,1);var key=this.keys[index];if(typeof key!="undefined"){delete this.map[key];} -this.keys.splice(index,1);this.fireEvent("remove",o,key);}},removeKey:function(key){return this.removeAt(this.indexOfKey(key));},getCount:function(){return this.length;},indexOf:function(o){if(!this.items.indexOf){for(var i=0,len=this.items.length;i<len;i++){if(this.items[i]==o)return i;} -return-1;}else{return this.items.indexOf(o);}},indexOfKey:function(key){if(!this.keys.indexOf){for(var i=0,len=this.keys.length;i<len;i++){if(this.keys[i]==key)return i;} -return-1;}else{return this.keys.indexOf(key);}},item:function(key){var item=typeof this.map[key]!="undefined"?this.map[key]:this.items[key];return typeof item!='function'||this.allowFunctions?item:null;},itemAt:function(index){return this.items[index];},key:function(key){return this.map[key];},contains:function(o){return this.indexOf(o)!=-1;},containsKey:function(key){return typeof this.map[key]!="undefined";},clear:function(){this.length=0;this.items=[];this.keys=[];this.map={};this.fireEvent("clear");},first:function(){return this.items[0];},last:function(){return this.items[this.length-1];},_sort:function(property,dir,fn){var dsc=String(dir).toUpperCase()=="DESC"?-1:1;fn=fn||function(a,b){return a-b;};var c=[],k=this.keys,items=this.items;for(var i=0,len=items.length;i<len;i++){c[c.length]={key:k[i],value:items[i],index:i};} -c.sort(function(a,b){var v=fn(a[property],b[property])*dsc;if(v==0){v=(a.index<b.index?-1:1);} -return v;});for(var i=0,len=c.length;i<len;i++){items[i]=c[i].value;k[i]=c[i].key;} -this.fireEvent("sort",this);},sort:function(dir,fn){this._sort("value",dir,fn);},keySort:function(dir,fn){this._sort("key",dir,fn||function(a,b){return String(a).toUpperCase()-String(b).toUpperCase();});},getRange:function(start,end){var items=this.items;if(items.length<1){return[];} -start=start||0;end=Math.min(typeof end=="undefined"?this.length-1:end,this.length-1);var r=[];if(start<=end){for(var i=start;i<=end;i++){r[r.length]=items[i];}}else{for(var i=start;i>=end;i--){r[r.length]=items[i];}} -return r;},filter:function(property,value){if(!value.exec){value=String(value);if(value.length==0){return this.clone();} -value=new RegExp("^"+Ext.escapeRe(value),"i");} -return this.filterBy(function(o){return o&&value.test(o[property]);});},filterBy:function(fn,scope){var r=new Ext.util.MixedCollection();r.getKey=this.getKey;var k=this.keys,it=this.items;for(var i=0,len=it.length;i<len;i++){if(fn.call(scope||this,it[i],k[i])){r.add(k[i],it[i]);}} -return r;},clone:function(){var r=new Ext.util.MixedCollection();var k=this.keys,it=this.items;for(var i=0,len=it.length;i<len;i++){r.add(k[i],it[i]);} -r.getKey=this.getKey;return r;}});Ext.util.MixedCollection.prototype.get=Ext.util.MixedCollection.prototype.item; - -Ext.util.JSON=new(function(){var useHasOwn={}.hasOwnProperty?true:false;var pad=function(n){return n<10?"0"+n:n;};var m={"\b":'\\b',"\t":'\\t',"\n":'\\n',"\f":'\\f',"\r":'\\r','"':'\\"',"\\":'\\\\'};var encodeString=function(s){if(/["\\\x00-\x1f]/.test(s)){return'"'+s.replace(/([\x00-\x1f\\"])/g,function(a,b){var c=m[b];if(c){return c;} -c=b.charCodeAt();return"\\u00"+ -Math.floor(c/16).toString(16)+ -(c%16).toString(16);})+'"';} -return'"'+s+'"';};var encodeArray=function(o){var a=["["],b,i,l=o.length,v;for(i=0;i<l;i+=1){v=o[i];switch(typeof v){case"undefined":case"function":case"unknown":break;default:if(b){a.push(',');} -a.push(v===null?"null":Ext.util.JSON.encode(v));b=true;}} -a.push("]");return a.join("");};var encodeDate=function(o){return'"'+o.getFullYear()+"-"+ -pad(o.getMonth()+1)+"-"+ -pad(o.getDate())+"T"+ -pad(o.getHours())+":"+ -pad(o.getMinutes())+":"+ -pad(o.getSeconds())+'"';};this.encode=function(o){if(typeof o=="undefined"||o===null){return"null";}else if(o instanceof Array){return encodeArray(o);}else if(o instanceof Date){return encodeDate(o);}else if(typeof o=="string"){return encodeString(o);}else if(typeof o=="number"){return isFinite(o)?String(o):"null";}else if(typeof o=="boolean"){return String(o);}else{var a=["{"],b,i,v;for(i in o){if(!useHasOwn||o.hasOwnProperty(i)){v=o[i];switch(typeof v){case"undefined":case"function":case"unknown":break;default:if(b){a.push(',');} -a.push(this.encode(i),":",v===null?"null":this.encode(v));b=true;}}} -a.push("}");return a.join("");}};this.decode=function(json){return eval("("+json+')');};})();Ext.encode=Ext.util.JSON.encode;Ext.decode=Ext.util.JSON.decode; - -Ext.util.Format=function(){var trimRe=/^\s+|\s+$/g;return{ellipsis:function(value,len){if(value&&value.length>len){return value.substr(0,len-3)+"...";} -return value;},undef:function(value){return typeof value!="undefined"?value:"";},htmlEncode:function(value){return!value?value:String(value).replace(/&/g,"&").replace(/>/g,">").replace(/</g,"<").replace(/"/g,""");},trim:function(value){return String(value).replace(trimRe,"");},substr:function(value,start,length){return String(value).substr(start,length);},lowercase:function(value){return String(value).toLowerCase();},uppercase:function(value){return String(value).toUpperCase();},capitalize:function(value){return!value?value:value.charAt(0).toUpperCase()+value.substr(1).toLowerCase();},call:function(value,fn){if(arguments.length>2){var args=Array.prototype.slice.call(arguments,2);args.unshift(value);return eval(fn).apply(window,args);}else{return eval(fn).call(window,value);}},usMoney:function(v){v=(Math.round((v-0)*100))/100;v=(v==Math.floor(v))?v+".00":((v*10==Math.floor(v*10))?v+"0":v);return"$"+v;},date:function(v,format){if(!v){return"";} -if(!(v instanceof Date)){v=new Date(Date.parse(v));} -return v.dateFormat(format||"m/d/Y");},dateRenderer:function(format){return function(v){return Ext.util.Format.date(v,format);};},stripTagsRE:/<\/?[^>]+>/gi,stripTags:function(v){return!v?v:String(v).replace(this.stripTagsRE,"");}};}(); - -Ext.util.CSS=function(){var rules=null;var doc=document;var camelRe=/(-[a-z])/gi;var camelFn=function(m,a){return a.charAt(1).toUpperCase();};return{createStyleSheet:function(cssText){var ss;if(Ext.isIE){ss=doc.createStyleSheet();ss.cssText=cssText;}else{var head=doc.getElementsByTagName("head")[0];var rules=doc.createElement("style");rules.setAttribute("type","text/css");try{rules.appendChild(doc.createTextNode(cssText));}catch(e){rules.cssText=cssText;} -head.appendChild(rules);ss=rules.styleSheet?rules.styleSheet:(rules.sheet||doc.styleSheets[doc.styleSheets.length-1]);} -this.cacheStyleSheet(ss);return ss;},removeStyleSheet:function(id){var existing=doc.getElementById(id);if(existing){existing.parentNode.removeChild(existing);}},swapStyleSheet:function(id,url){this.removeStyleSheet(id);var ss=doc.createElement("link");ss.setAttribute("rel","stylesheet");ss.setAttribute("type","text/css");ss.setAttribute("id",id);ss.setAttribute("href",url);doc.getElementsByTagName("head")[0].appendChild(ss);},refreshCache:function(){return this.getRules(true);},cacheStyleSheet:function(ss){if(!rules){rules={};} -try{var ssRules=ss.cssRules||ss.rules;for(var j=ssRules.length-1;j>=0;--j){rules[ssRules[j].selectorText]=ssRules[j];}}catch(e){}},getRules:function(refreshCache){if(rules==null||refreshCache){rules={};var ds=doc.styleSheets;for(var i=0,len=ds.length;i<len;i++){try{this.cacheStyleSheet(ds[i]);}catch(e){}}} -return rules;},getRule:function(selector,refreshCache){var rs=this.getRules(refreshCache);if(!(selector instanceof Array)){return rs[selector];} -for(var i=0;i<selector.length;i++){if(rs[selector[i]]){return rs[selector[i]];}} -return null;},updateRule:function(selector,property,value){if(!(selector instanceof Array)){var rule=this.getRule(selector);if(rule){rule.style[property.replace(camelRe,camelFn)]=value;return true;}}else{for(var i=0;i<selector.length;i++){if(this.updateRule(selector[i],property,value)){return true;}}} -return false;}};}(); - -Ext.util.ClickRepeater=function(el,config) -{this.el=Ext.get(el);this.el.unselectable();Ext.apply(this,config);this.addEvents({"mousedown":true,"click":true,"mouseup":true});this.el.on("mousedown",this.handleMouseDown,this);if(this.preventDefault||this.stopDefault){this.el.on("click",function(e){if(this.preventDefault){e.preventDefault();} -if(this.stopDefault){e.stopEvent();}},this);} -if(this.handler){this.on("click",this.handler,this.scope||this);} -Ext.util.ClickRepeater.superclass.constructor.call(this);};Ext.extend(Ext.util.ClickRepeater,Ext.util.Observable,{interval:20,delay:250,preventDefault:true,stopDefault:false,timer:0,docEl:Ext.get(document),handleMouseDown:function(){clearTimeout(this.timer);this.el.blur();if(this.pressClass){this.el.addClass(this.pressClass);} -this.mousedownTime=new Date();this.docEl.on("mouseup",this.handleMouseUp,this);this.el.on("mouseout",this.handleMouseOut,this);this.fireEvent("mousedown",this);this.fireEvent("click",this);this.timer=this.click.defer(this.delay||this.interval,this);},click:function(){this.fireEvent("click",this);this.timer=this.click.defer(this.getInterval(),this);},getInterval:function(){if(!this.accelerate){return this.interval;} -var pressTime=this.mousedownTime.getElapsed();if(pressTime<500){return 400;}else if(pressTime<1700){return 320;}else if(pressTime<2600){return 250;}else if(pressTime<3500){return 180;}else if(pressTime<4400){return 140;}else if(pressTime<5300){return 80;}else if(pressTime<6200){return 50;}else{return 10;}},handleMouseOut:function(){clearTimeout(this.timer);if(this.pressClass){this.el.removeClass(this.pressClass);} -this.el.on("mouseover",this.handleMouseReturn,this);},handleMouseReturn:function(){this.el.un("mouseover",this.handleMouseReturn);if(this.pressClass){this.el.addClass(this.pressClass);} -this.click();},handleMouseUp:function(){clearTimeout(this.timer);this.el.un("mouseover",this.handleMouseReturn);this.el.un("mouseout",this.handleMouseOut);this.docEl.un("mouseup",this.handleMouseUp);this.el.removeClass(this.pressClass);this.fireEvent("mouseup",this);}}); - -Ext.KeyNav=function(el,config){this.el=Ext.get(el);Ext.apply(this,config);if(!this.disabled){this.disabled=true;this.enable();}};Ext.KeyNav.prototype={disabled:false,defaultEventAction:"stopEvent",prepareEvent:function(e){var k=e.getKey();var h=this.keyToHandler[k];if(Ext.isSafari&&h&&k>=37&&k<=40){e.stopEvent();}},relay:function(e){var k=e.getKey();var h=this.keyToHandler[k];if(h&&this[h]){if(this.doRelay(e,this[h],h)!==true){e[this.defaultEventAction]();}}},doRelay:function(e,h,hname){return h.call(this.scope||this,e);},enter:false,left:false,right:false,up:false,down:false,tab:false,esc:false,pageUp:false,pageDown:false,del:false,home:false,end:false,keyToHandler:{37:"left",39:"right",38:"up",40:"down",33:"pageUp",34:"pageDown",46:"del",36:"home",35:"end",13:"enter",27:"esc",9:"tab"},enable:function(){if(this.disabled){if(Ext.isIE){this.el.on("keydown",this.relay,this);}else{this.el.on("keydown",this.prepareEvent,this);this.el.on("keypress",this.relay,this);} -this.disabled=false;}},disable:function(){if(!this.disabled){if(Ext.isIE){this.el.un("keydown",this.relay);}else{this.el.un("keydown",this.prepareEvent);this.el.un("keypress",this.relay);} -this.disabled=true;}}}; - -Ext.KeyMap=function(el,config,eventName){this.el=Ext.get(el);this.eventName=eventName||"keydown";this.bindings=[];if(config instanceof Array){for(var i=0,len=config.length;i<len;i++){this.addBinding(config[i]);}}else{this.addBinding(config);} -this.keyDownDelegate=Ext.EventManager.wrap(this.handleKeyDown,this,true);this.enable();};Ext.KeyMap.prototype={stopEvent:false,addBinding:function(config){var keyCode=config.key,shift=config.shift,ctrl=config.ctrl,alt=config.alt,fn=config.fn,scope=config.scope;if(typeof keyCode=="string"){var ks=[];var keyString=keyCode.toUpperCase();for(var j=0,len=keyString.length;j<len;j++){ks.push(keyString.charCodeAt(j));} -keyCode=ks;} -var keyArray=keyCode instanceof Array;var handler=function(e){if((!shift||e.shiftKey)&&(!ctrl||e.ctrlKey)&&(!alt||e.altKey)){var k=e.getKey();if(keyArray){for(var i=0,len=keyCode.length;i<len;i++){if(keyCode[i]==k){if(this.stopEvent){e.stopEvent();} -fn.call(scope||window,k,e);return;}}}else{if(k==keyCode){if(this.stopEvent){e.stopEvent();} -fn.call(scope||window,k,e);}}}};this.bindings.push(handler);},handleKeyDown:function(e){if(this.enabled){var b=this.bindings;for(var i=0,len=b.length;i<len;i++){b[i].call(this,e);}}},isEnabled:function(){return this.enabled;},enable:function(){if(!this.enabled){this.el.on(this.eventName,this.keyDownDelegate);this.enabled=true;}},disable:function(){if(this.enabled){this.el.removeListener(this.eventName,this.keyDownDelegate);this.enabled=false;}}}; - -Ext.util.TextMetrics=function(){var shared;return{measure:function(el,text,fixedWidth){if(!shared){shared=Ext.util.TextMetrics.Instance(el,fixedWidth);} -shared.bind(el);shared.setFixedWidth(fixedWidth||'auto');return shared.getSize(text);},createInstance:function(el,fixedWidth){return Ext.util.TextMetrics.Instance(el,fixedWidth);}};}();Ext.util.TextMetrics.Instance=function(bindTo,fixedWidth){var ml=new Ext.Element(document.createElement('div'));document.body.appendChild(ml.dom);ml.position('absolute');ml.setLeftTop(-1000,-1000);ml.hide();if(fixedWidth){ml.setWidth(fixedWidth);} -var instance={getSize:function(text){ml.update(text);var s=ml.getSize();ml.update('');return s;},bind:function(el){ml.setStyle(Ext.fly(el).getStyles('font-size','font-style','font-weight','font-family','line-height'));},setFixedWidth:function(width){ml.setWidth(width);},getWidth:function(text){ml.dom.style.width='auto';return this.getSize(text).width;},getHeight:function(text){return this.getSize(text).height;}};instance.bind(bindTo);return instance;};Ext.Element.measureText=Ext.util.TextMetrics.measure; - -Ext.state.Provider=function(){Ext.state.Provider.superclass.constructor.call(this);this.addEvents({"statechange":true});this.state={};Ext.state.Provider.superclass.constructor.call(this);};Ext.extend(Ext.state.Provider,Ext.util.Observable,{get:function(name,defaultValue){return typeof this.state[name]=="undefined"?defaultValue:this.state[name];},clear:function(name){delete this.state[name];this.fireEvent("statechange",this,name,null);},set:function(name,value){this.state[name]=value;this.fireEvent("statechange",this,name,value);},decodeValue:function(cookie){var re=/^(a|n|d|b|s|o)\:(.*)$/;var matches=re.exec(unescape(cookie));if(!matches||!matches[1])return;var type=matches[1];var v=matches[2];switch(type){case"n":return parseFloat(v);case"d":return new Date(Date.parse(v));case"b":return(v=="1");case"a":var all=[];var values=v.split("^");for(var i=0,len=values.length;i<len;i++){all.push(this.decodeValue(values[i]));} -return all;case"o":var all={};var values=v.split("^");for(var i=0,len=values.length;i<len;i++){var kv=values[i].split("=");all[kv[0]]=this.decodeValue(kv[1]);} -return all;default:return v;}},encodeValue:function(v){var enc;if(typeof v=="number"){enc="n:"+v;}else if(typeof v=="boolean"){enc="b:"+(v?"1":"0");}else if(v instanceof Date){enc="d:"+v.toGMTString();}else if(v instanceof Array){var flat="";for(var i=0,len=v.length;i<len;i++){flat+=this.encodeValue(v[i]);if(i!=len-1)flat+="^";} -enc="a:"+flat;}else if(typeof v=="object"){var flat="";for(var key in v){if(typeof v[key]!="function"){flat+=key+"="+this.encodeValue(v[key])+"^";}} -enc="o:"+flat.substring(0,flat.length-1);}else{enc="s:"+v;} -return escape(enc);}});Ext.state.Manager=function(){var provider=new Ext.state.Provider();return{setProvider:function(stateProvider){provider=stateProvider;},get:function(key,defaultValue){return provider.get(key,defaultValue);},set:function(key,value){provider.set(key,value);},clear:function(key){provider.clear(key);},getProvider:function(){return provider;}};}();Ext.state.CookieProvider=function(config){Ext.state.CookieProvider.superclass.constructor.call(this);this.path="/";this.expires=new Date(new Date().getTime()+(1000*60*60*24*7));this.domain=null;this.secure=false;Ext.apply(this,config);this.state=this.readCookies();};Ext.extend(Ext.state.CookieProvider,Ext.state.Provider,{set:function(name,value){if(typeof value=="undefined"||value===null){this.clear(name);return;} -this.setCookie(name,value);Ext.state.CookieProvider.superclass.set.call(this,name,value);},clear:function(name){this.clearCookie(name);Ext.state.CookieProvider.superclass.clear.call(this,name);},readCookies:function(){var cookies={};var c=document.cookie+";";var re=/\s?(.*?)=(.*?);/g;var matches;while((matches=re.exec(c))!=null){var name=matches[1];var value=matches[2];if(name&&name.substring(0,3)=="ys-"){cookies[name.substr(3)]=this.decodeValue(value);}} -return cookies;},setCookie:function(name,value){document.cookie="ys-"+name+"="+this.encodeValue(value)+ -((this.expires==null)?"":("; expires="+this.expires.toGMTString()))+ -((this.path==null)?"":("; path="+this.path))+ -((this.domain==null)?"":("; domain="+this.domain))+ -((this.secure==true)?"; secure":"");},clearCookie:function(name){document.cookie="ys-"+name+"=null; expires=Thu, 01-Jan-70 00:00:01 GMT"+ -((this.path==null)?"":("; path="+this.path))+ -((this.domain==null)?"":("; domain="+this.domain))+ -((this.secure==true)?"; secure":"");}}); - -(function(){var Event=Ext.EventManager;var Dom=Ext.lib.Dom;Ext.dd.DragDrop=function(id,sGroup,config){if(id){this.init(id,sGroup,config);}};Ext.dd.DragDrop.prototype={id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:false,lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isTarget:true,padding:null,_domRef:null,__ygDragDrop:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,maintainOffset:false,xTicks:null,yTicks:null,primaryButtonOnly:true,available:false,hasOuterHandles:false,b4StartDrag:function(x,y){},startDrag:function(x,y){},b4Drag:function(e){},onDrag:function(e){},onDragEnter:function(e,id){},b4DragOver:function(e){},onDragOver:function(e,id){},b4DragOut:function(e){},onDragOut:function(e,id){},b4DragDrop:function(e){},onDragDrop:function(e,id){},onInvalidDrop:function(e){},b4EndDrag:function(e){},endDrag:function(e){},b4MouseDown:function(e){},onMouseDown:function(e){},onMouseUp:function(e){},onAvailable:function(){},defaultPadding:{left:0,right:0,top:0,bottom:0},constrainTo:function(constrainTo,pad,inContent){if(typeof pad=="number"){pad={left:pad,right:pad,top:pad,bottom:pad};} -pad=pad||this.defaultPadding;var b=Ext.get(this.getEl()).getBox();var ce=Ext.get(constrainTo);var s=ce.getScroll();var c,cd=ce.dom;if(cd==document.body){c={x:s.left,y:s.top,width:Ext.lib.Dom.getViewWidth(),height:Ext.lib.Dom.getViewHeight()};}else{xy=ce.getXY();c={x:xy[0]+s.left,y:xy[1]+s.top,width:cd.clientWidth,height:cd.clientHeight};} -var topSpace=b.y-c.y;var leftSpace=b.x-c.x;this.resetConstraints();this.setXConstraint(leftSpace-(pad.left||0),c.width-leftSpace-b.width-(pad.right||0));this.setYConstraint(topSpace-(pad.top||0),c.height-topSpace-b.height-(pad.bottom||0));},getEl:function(){if(!this._domRef){this._domRef=Ext.getDom(this.id);} -return this._domRef;},getDragEl:function(){return Ext.getDom(this.dragElId);},init:function(id,sGroup,config){this.initTarget(id,sGroup,config);Event.on(this.id,"mousedown",this.handleMouseDown,this);},initTarget:function(id,sGroup,config){this.config=config||{};this.DDM=Ext.dd.DDM;this.groups={};if(typeof id!=="string"){id=Ext.id(id);} -this.id=id;this.addToGroup((sGroup)?sGroup:"default");this.handleElId=id;this.setDragElId(id);this.invalidHandleTypes={A:"A"};this.invalidHandleIds={};this.invalidHandleClasses=[];this.applyConfig();this.handleOnAvailable();},applyConfig:function(){this.padding=this.config.padding||[0,0,0,0];this.isTarget=(this.config.isTarget!==false);this.maintainOffset=(this.config.maintainOffset);this.primaryButtonOnly=(this.config.primaryButtonOnly!==false);},handleOnAvailable:function(){this.available=true;this.resetConstraints();this.onAvailable();},setPadding:function(iTop,iRight,iBot,iLeft){if(!iRight&&0!==iRight){this.padding=[iTop,iTop,iTop,iTop];}else if(!iBot&&0!==iBot){this.padding=[iTop,iRight,iTop,iRight];}else{this.padding=[iTop,iRight,iBot,iLeft];}},setInitPosition:function(diffX,diffY){var el=this.getEl();if(!this.DDM.verifyEl(el)){return;} -var dx=diffX||0;var dy=diffY||0;var p=Dom.getXY(el);this.initPageX=p[0]-dx;this.initPageY=p[1]-dy;this.lastPageX=p[0];this.lastPageY=p[1];this.setStartPosition(p);},setStartPosition:function(pos){var p=pos||Dom.getXY(this.getEl());this.deltaSetXY=null;this.startPageX=p[0];this.startPageY=p[1];},addToGroup:function(sGroup){this.groups[sGroup]=true;this.DDM.regDragDrop(this,sGroup);},removeFromGroup:function(sGroup){if(this.groups[sGroup]){delete this.groups[sGroup];} -this.DDM.removeDDFromGroup(this,sGroup);},setDragElId:function(id){this.dragElId=id;},setHandleElId:function(id){if(typeof id!=="string"){id=Ext.id(id);} -this.handleElId=id;this.DDM.regHandle(this.id,id);},setOuterHandleElId:function(id){if(typeof id!=="string"){id=Ext.id(id);} -Event.on(id,"mousedown",this.handleMouseDown,this);this.setHandleElId(id);this.hasOuterHandles=true;},unreg:function(){Event.un(this.id,"mousedown",this.handleMouseDown);this._domRef=null;this.DDM._remove(this);},destroy:function(){this.unreg();},isLocked:function(){return(this.DDM.isLocked()||this.locked);},handleMouseDown:function(e,oDD){if(this.primaryButtonOnly&&e.button!=0){return;} -if(this.isLocked()){return;} -this.DDM.refreshCache(this.groups);var pt=new Ext.lib.Point(Ext.lib.Event.getPageX(e),Ext.lib.Event.getPageY(e));if(!this.hasOuterHandles&&!this.DDM.isOverTarget(pt,this)){}else{if(this.clickValidator(e)){this.setStartPosition();this.b4MouseDown(e);this.onMouseDown(e);this.DDM.handleMouseDown(e,this);this.DDM.stopEvent(e);}else{}}},clickValidator:function(e){var target=Ext.lib.Event.getTarget(e);return(this.isValidHandleChild(target)&&(this.id==this.handleElId||this.DDM.handleWasClicked(target,this.id)));},addInvalidHandleType:function(tagName){var type=tagName.toUpperCase();this.invalidHandleTypes[type]=type;},addInvalidHandleId:function(id){if(typeof id!=="string"){id=Ext.id(id);} -this.invalidHandleIds[id]=id;},addInvalidHandleClass:function(cssClass){this.invalidHandleClasses.push(cssClass);},removeInvalidHandleType:function(tagName){var type=tagName.toUpperCase();delete this.invalidHandleTypes[type];},removeInvalidHandleId:function(id){if(typeof id!=="string"){id=Ext.id(id);} -delete this.invalidHandleIds[id];},removeInvalidHandleClass:function(cssClass){for(var i=0,len=this.invalidHandleClasses.length;i<len;++i){if(this.invalidHandleClasses[i]==cssClass){delete this.invalidHandleClasses[i];}}},isValidHandleChild:function(node){var valid=true;var nodeName;try{nodeName=node.nodeName.toUpperCase();}catch(e){nodeName=node.nodeName;} -valid=valid&&!this.invalidHandleTypes[nodeName];valid=valid&&!this.invalidHandleIds[node.id];for(var i=0,len=this.invalidHandleClasses.length;valid&&i<len;++i){valid=!Dom.hasClass(node,this.invalidHandleClasses[i]);} -return valid;},setXTicks:function(iStartX,iTickSize){this.xTicks=[];this.xTickSize=iTickSize;var tickMap={};for(var i=this.initPageX;i>=this.minX;i=i-iTickSize){if(!tickMap[i]){this.xTicks[this.xTicks.length]=i;tickMap[i]=true;}} -for(i=this.initPageX;i<=this.maxX;i=i+iTickSize){if(!tickMap[i]){this.xTicks[this.xTicks.length]=i;tickMap[i]=true;}} -this.xTicks.sort(this.DDM.numericSort);},setYTicks:function(iStartY,iTickSize){this.yTicks=[];this.yTickSize=iTickSize;var tickMap={};for(var i=this.initPageY;i>=this.minY;i=i-iTickSize){if(!tickMap[i]){this.yTicks[this.yTicks.length]=i;tickMap[i]=true;}} -for(i=this.initPageY;i<=this.maxY;i=i+iTickSize){if(!tickMap[i]){this.yTicks[this.yTicks.length]=i;tickMap[i]=true;}} -this.yTicks.sort(this.DDM.numericSort);},setXConstraint:function(iLeft,iRight,iTickSize){this.leftConstraint=iLeft;this.rightConstraint=iRight;this.minX=this.initPageX-iLeft;this.maxX=this.initPageX+iRight;if(iTickSize){this.setXTicks(this.initPageX,iTickSize);} -this.constrainX=true;},clearConstraints:function(){this.constrainX=false;this.constrainY=false;this.clearTicks();},clearTicks:function(){this.xTicks=null;this.yTicks=null;this.xTickSize=0;this.yTickSize=0;},setYConstraint:function(iUp,iDown,iTickSize){this.topConstraint=iUp;this.bottomConstraint=iDown;this.minY=this.initPageY-iUp;this.maxY=this.initPageY+iDown;if(iTickSize){this.setYTicks(this.initPageY,iTickSize);} -this.constrainY=true;},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var dx=(this.maintainOffset)?this.lastPageX-this.initPageX:0;var dy=(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPosition(dx,dy);}else{this.setInitPosition();} -if(this.constrainX){this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize);} -if(this.constrainY){this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize);}},getTick:function(val,tickArray){if(!tickArray){return val;}else if(tickArray[0]>=val){return tickArray[0];}else{for(var i=0,len=tickArray.length;i<len;++i){var next=i+1;if(tickArray[next]&&tickArray[next]>=val){var diff1=val-tickArray[i];var diff2=tickArray[next]-val;return(diff2>diff1)?tickArray[i]:tickArray[next];}} -return tickArray[tickArray.length-1];}},toString:function(){return("DragDrop "+this.id);}};})();if(!Ext.dd.DragDropMgr){Ext.dd.DragDropMgr=function(){var Event=Ext.EventManager;return{ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,initalized:false,locked:false,init:function(){this.initialized=true;},POINT:0,INTERSECT:1,mode:0,_execOnAll:function(sMethod,args){for(var i in this.ids){for(var j in this.ids[i]){var oDD=this.ids[i][j];if(!this.isTypeOfDD(oDD)){continue;} -oDD[sMethod].apply(oDD,args);}}},_onLoad:function(){this.init();Event.on(document,"mouseup",this.handleMouseUp,this,true);Event.on(document,"mousemove",this.handleMouseMove,this,true);Event.on(window,"unload",this._onUnload,this,true);Event.on(window,"resize",this._onResize,this,true);},_onResize:function(e){this._execOnAll("resetConstraints",[]);},lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isLocked:function(){return this.locked;},locationCache:{},useCache:true,clickPixelThresh:3,clickTimeThresh:350,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,regDragDrop:function(oDD,sGroup){if(!this.initialized){this.init();} -if(!this.ids[sGroup]){this.ids[sGroup]={};} -this.ids[sGroup][oDD.id]=oDD;},removeDDFromGroup:function(oDD,sGroup){if(!this.ids[sGroup]){this.ids[sGroup]={};} -var obj=this.ids[sGroup];if(obj&&obj[oDD.id]){delete obj[oDD.id];}},_remove:function(oDD){for(var g in oDD.groups){if(g&&this.ids[g][oDD.id]){delete this.ids[g][oDD.id];}} -delete this.handleIds[oDD.id];},regHandle:function(sDDId,sHandleId){if(!this.handleIds[sDDId]){this.handleIds[sDDId]={};} -this.handleIds[sDDId][sHandleId]=sHandleId;},isDragDrop:function(id){return(this.getDDById(id))?true:false;},getRelated:function(p_oDD,bTargetsOnly){var oDDs=[];for(var i in p_oDD.groups){for(j in this.ids[i]){var dd=this.ids[i][j];if(!this.isTypeOfDD(dd)){continue;} -if(!bTargetsOnly||dd.isTarget){oDDs[oDDs.length]=dd;}}} -return oDDs;},isLegalTarget:function(oDD,oTargetDD){var targets=this.getRelated(oDD,true);for(var i=0,len=targets.length;i<len;++i){if(targets[i].id==oTargetDD.id){return true;}} -return false;},isTypeOfDD:function(oDD){return(oDD&&oDD.__ygDragDrop);},isHandle:function(sDDId,sHandleId){return(this.handleIds[sDDId]&&this.handleIds[sDDId][sHandleId]);},getDDById:function(id){for(var i in this.ids){if(this.ids[i][id]){return this.ids[i][id];}} -return null;},handleMouseDown:function(e,oDD){if(Ext.QuickTips){Ext.QuickTips.disable();} -this.currentTarget=Ext.lib.Event.getTarget(e);this.dragCurrent=oDD;var el=oDD.getEl();this.startX=Ext.lib.Event.getPageX(e);this.startY=Ext.lib.Event.getPageY(e);this.deltaX=this.startX-el.offsetLeft;this.deltaY=this.startY-el.offsetTop;this.dragThreshMet=false;this.clickTimeout=setTimeout(function(){var DDM=Ext.dd.DDM;DDM.startDrag(DDM.startX,DDM.startY);},this.clickTimeThresh);},startDrag:function(x,y){clearTimeout(this.clickTimeout);if(this.dragCurrent){this.dragCurrent.b4StartDrag(x,y);this.dragCurrent.startDrag(x,y);} -this.dragThreshMet=true;},handleMouseUp:function(e){if(Ext.QuickTips){Ext.QuickTips.enable();} -if(!this.dragCurrent){return;} -clearTimeout(this.clickTimeout);if(this.dragThreshMet){this.fireEvents(e,true);}else{} -this.stopDrag(e);this.stopEvent(e);},stopEvent:function(e){if(this.stopPropagation){e.stopPropagation();} -if(this.preventDefault){e.preventDefault();}},stopDrag:function(e){if(this.dragCurrent){if(this.dragThreshMet){this.dragCurrent.b4EndDrag(e);this.dragCurrent.endDrag(e);} -this.dragCurrent.onMouseUp(e);} -this.dragCurrent=null;this.dragOvers={};},handleMouseMove:function(e){if(!this.dragCurrent){return true;} -if(Ext.isIE&&(e.button!==0&&e.button!==1&&e.button!==2)){this.stopEvent(e);return this.handleMouseUp(e);} -if(!this.dragThreshMet){var diffX=Math.abs(this.startX-Ext.lib.Event.getPageX(e));var diffY=Math.abs(this.startY-Ext.lib.Event.getPageY(e));if(diffX>this.clickPixelThresh||diffY>this.clickPixelThresh){this.startDrag(this.startX,this.startY);}} -if(this.dragThreshMet){this.dragCurrent.b4Drag(e);this.dragCurrent.onDrag(e);if(!this.dragCurrent.moveOnly){this.fireEvents(e,false);}} -this.stopEvent(e);return true;},fireEvents:function(e,isDrop){var dc=this.dragCurrent;if(!dc||dc.isLocked()){return;} -var x=Ext.lib.Event.getPageX(e);var y=Ext.lib.Event.getPageY(e);var pt=new Ext.lib.Point(x,y);var oldOvers=[];var outEvts=[];var overEvts=[];var dropEvts=[];var enterEvts=[];for(var i in this.dragOvers){var ddo=this.dragOvers[i];if(!this.isTypeOfDD(ddo)){continue;} -if(!this.isOverTarget(pt,ddo,this.mode)){outEvts.push(ddo);} -oldOvers[i]=true;delete this.dragOvers[i];} -for(var sGroup in dc.groups){if("string"!=typeof sGroup){continue;} -for(i in this.ids[sGroup]){var oDD=this.ids[sGroup][i];if(!this.isTypeOfDD(oDD)){continue;} -if(oDD.isTarget&&!oDD.isLocked()&&oDD!=dc){if(this.isOverTarget(pt,oDD,this.mode)){if(isDrop){dropEvts.push(oDD);}else{if(!oldOvers[oDD.id]){enterEvts.push(oDD);}else{overEvts.push(oDD);} -this.dragOvers[oDD.id]=oDD;}}}}} -if(this.mode){if(outEvts.length){dc.b4DragOut(e,outEvts);dc.onDragOut(e,outEvts);} -if(enterEvts.length){dc.onDragEnter(e,enterEvts);} -if(overEvts.length){dc.b4DragOver(e,overEvts);dc.onDragOver(e,overEvts);} -if(dropEvts.length){dc.b4DragDrop(e,dropEvts);dc.onDragDrop(e,dropEvts);}}else{var len=0;for(i=0,len=outEvts.length;i<len;++i){dc.b4DragOut(e,outEvts[i].id);dc.onDragOut(e,outEvts[i].id);} -for(i=0,len=enterEvts.length;i<len;++i){dc.onDragEnter(e,enterEvts[i].id);} -for(i=0,len=overEvts.length;i<len;++i){dc.b4DragOver(e,overEvts[i].id);dc.onDragOver(e,overEvts[i].id);} -for(i=0,len=dropEvts.length;i<len;++i){dc.b4DragDrop(e,dropEvts[i].id);dc.onDragDrop(e,dropEvts[i].id);}} -if(isDrop&&!dropEvts.length){dc.onInvalidDrop(e);}},getBestMatch:function(dds){var winner=null;var len=dds.length;if(len==1){winner=dds[0];}else{for(var i=0;i<len;++i){var dd=dds[i];if(dd.cursorIsOver){winner=dd;break;}else{if(!winner||winner.overlap.getArea()<dd.overlap.getArea()){winner=dd;}}}} -return winner;},refreshCache:function(groups){for(var sGroup in groups){if("string"!=typeof sGroup){continue;} -for(var i in this.ids[sGroup]){var oDD=this.ids[sGroup][i];if(this.isTypeOfDD(oDD)){var loc=this.getLocation(oDD);if(loc){this.locationCache[oDD.id]=loc;}else{delete this.locationCache[oDD.id];}}}}},verifyEl:function(el){try{if(el){var parent=el.offsetParent;if(parent){return true;}}}catch(e){} -return false;},getLocation:function(oDD){if(!this.isTypeOfDD(oDD)){return null;} -var el=oDD.getEl(),pos,x1,x2,y1,y2,t,r,b,l;try{pos=Ext.lib.Dom.getXY(el);}catch(e){} -if(!pos){return null;} -x1=pos[0];x2=x1+el.offsetWidth;y1=pos[1];y2=y1+el.offsetHeight;t=y1-oDD.padding[0];r=x2+oDD.padding[1];b=y2+oDD.padding[2];l=x1-oDD.padding[3];return new Ext.lib.Region(t,r,b,l);},isOverTarget:function(pt,oTarget,intersect){var loc=this.locationCache[oTarget.id];if(!loc||!this.useCache){loc=this.getLocation(oTarget);this.locationCache[oTarget.id]=loc;} -if(!loc){return false;} -oTarget.cursorIsOver=loc.contains(pt);var dc=this.dragCurrent;if(!dc||!dc.getTargetCoord||(!intersect&&!dc.constrainX&&!dc.constrainY)){return oTarget.cursorIsOver;} -oTarget.overlap=null;var pos=dc.getTargetCoord(pt.x,pt.y);var el=dc.getDragEl();var curRegion=new Ext.lib.Region(pos.y,pos.x+el.offsetWidth,pos.y+el.offsetHeight,pos.x);var overlap=curRegion.intersect(loc);if(overlap){oTarget.overlap=overlap;return(intersect)?true:oTarget.cursorIsOver;}else{return false;}},_onUnload:function(e,me){Ext.dd.DragDropMgr.unregAll();},unregAll:function(){if(this.dragCurrent){this.stopDrag();this.dragCurrent=null;} -this._execOnAll("unreg",[]);for(i in this.elementCache){delete this.elementCache[i];} -this.elementCache={};this.ids={};},elementCache:{},getElWrapper:function(id){var oWrapper=this.elementCache[id];if(!oWrapper||!oWrapper.el){oWrapper=this.elementCache[id]=new this.ElementWrapper(Ext.getDom(id));} -return oWrapper;},getElement:function(id){return Ext.getDom(id);},getCss:function(id){var el=Ext.getDom(id);return(el)?el.style:null;},ElementWrapper:function(el){this.el=el||null;this.id=this.el&&el.id;this.css=this.el&&el.style;},getPosX:function(el){return Ext.lib.Dom.getX(el);},getPosY:function(el){return Ext.lib.Dom.getY(el);},swapNode:function(n1,n2){if(n1.swapNode){n1.swapNode(n2);}else{var p=n2.parentNode;var s=n2.nextSibling;if(s==n1){p.insertBefore(n1,n2);}else if(n2==n1.nextSibling){p.insertBefore(n2,n1);}else{n1.parentNode.replaceChild(n2,n1);p.insertBefore(n1,s);}}},getScroll:function(){var t,l,dde=document.documentElement,db=document.body;if(dde&&(dde.scrollTop||dde.scrollLeft)){t=dde.scrollTop;l=dde.scrollLeft;}else if(db){t=db.scrollTop;l=db.scrollLeft;}else{} -return{top:t,left:l};},getStyle:function(el,styleProp){return Ext.fly(el).getStyle(styleProp);},getScrollTop:function(){return this.getScroll().top;},getScrollLeft:function(){return this.getScroll().left;},moveToEl:function(moveEl,targetEl){var aCoord=Ext.lib.Dom.getXY(targetEl);Ext.lib.Dom.setXY(moveEl,aCoord);},numericSort:function(a,b){return(a-b);},_timeoutCount:0,_addListeners:function(){var DDM=Ext.dd.DDM;if(Ext.lib.Event&&document){DDM._onLoad();}else{if(DDM._timeoutCount>2000){}else{setTimeout(DDM._addListeners,10);if(document&&document.body){DDM._timeoutCount+=1;}}}},handleWasClicked:function(node,id){if(this.isHandle(id,node.id)){return true;}else{var p=node.parentNode;while(p){if(this.isHandle(id,p.id)){return true;}else{p=p.parentNode;}}} -return false;}};}();Ext.dd.DDM=Ext.dd.DragDropMgr;Ext.dd.DDM._addListeners();} -Ext.dd.DD=function(id,sGroup,config){if(id){this.init(id,sGroup,config);}};Ext.extend(Ext.dd.DD,Ext.dd.DragDrop,{scroll:true,autoOffset:function(iPageX,iPageY){var x=iPageX-this.startPageX;var y=iPageY-this.startPageY;this.setDelta(x,y);},setDelta:function(iDeltaX,iDeltaY){this.deltaX=iDeltaX;this.deltaY=iDeltaY;},setDragElPos:function(iPageX,iPageY){var el=this.getDragEl();this.alignElWithMouse(el,iPageX,iPageY);},alignElWithMouse:function(el,iPageX,iPageY){var oCoord=this.getTargetCoord(iPageX,iPageY);var fly=el.dom?el:Ext.fly(el);if(!this.deltaSetXY){var aCoord=[oCoord.x,oCoord.y];fly.setXY(aCoord);var newLeft=fly.getLeft(true);var newTop=fly.getTop(true);this.deltaSetXY=[newLeft-oCoord.x,newTop-oCoord.y];}else{fly.setLeftTop(oCoord.x+this.deltaSetXY[0],oCoord.y+this.deltaSetXY[1]);} -this.cachePosition(oCoord.x,oCoord.y);this.autoScroll(oCoord.x,oCoord.y,el.offsetHeight,el.offsetWidth);return oCoord;},cachePosition:function(iPageX,iPageY){if(iPageX){this.lastPageX=iPageX;this.lastPageY=iPageY;}else{var aCoord=Ext.lib.Dom.getXY(this.getEl());this.lastPageX=aCoord[0];this.lastPageY=aCoord[1];}},autoScroll:function(x,y,h,w){if(this.scroll){var clientH=Ext.lib.Dom.getViewWidth();var clientW=Ext.lib.Dom.getViewHeight();var st=this.DDM.getScrollTop();var sl=this.DDM.getScrollLeft();var bot=h+y;var right=w+x;var toBot=(clientH+st-y-this.deltaY);var toRight=(clientW+sl-x-this.deltaX);var thresh=40;var scrAmt=(document.all)?80:30;if(bot>clientH&&toBot<thresh){window.scrollTo(sl,st+scrAmt);} -if(y<st&&st>0&&y-st<thresh){window.scrollTo(sl,st-scrAmt);} -if(right>clientW&&toRight<thresh){window.scrollTo(sl+scrAmt,st);} -if(x<sl&&sl>0&&x-sl<thresh){window.scrollTo(sl-scrAmt,st);}}},getTargetCoord:function(iPageX,iPageY){var x=iPageX-this.deltaX;var y=iPageY-this.deltaY;if(this.constrainX){if(x<this.minX){x=this.minX;} -if(x>this.maxX){x=this.maxX;}} -if(this.constrainY){if(y<this.minY){y=this.minY;} -if(y>this.maxY){y=this.maxY;}} -x=this.getTick(x,this.xTicks);y=this.getTick(y,this.yTicks);return{x:x,y:y};},applyConfig:function(){Ext.dd.DD.superclass.applyConfig.call(this);this.scroll=(this.config.scroll!==false);},b4MouseDown:function(e){this.autoOffset(Ext.lib.Event.getPageX(e),Ext.lib.Event.getPageY(e));},b4Drag:function(e){this.setDragElPos(Ext.lib.Event.getPageX(e),Ext.lib.Event.getPageY(e));},toString:function(){return("DD "+this.id);}});Ext.dd.DDProxy=function(id,sGroup,config){if(id){this.init(id,sGroup,config);this.initFrame();}};Ext.dd.DDProxy.dragElId="ygddfdiv";Ext.extend(Ext.dd.DDProxy,Ext.dd.DD,{resizeFrame:true,centerFrame:false,createFrame:function(){var self=this;var body=document.body;if(!body||!body.firstChild){setTimeout(function(){self.createFrame();},50);return;} -var div=this.getDragEl();if(!div){div=document.createElement("div");div.id=this.dragElId;var s=div.style;s.position="absolute";s.visibility="hidden";s.cursor="move";s.border="2px solid #aaa";s.zIndex=999;body.insertBefore(div,body.firstChild);}},initFrame:function(){this.createFrame();},applyConfig:function(){Ext.dd.DDProxy.superclass.applyConfig.call(this);this.resizeFrame=(this.config.resizeFrame!==false);this.centerFrame=(this.config.centerFrame);this.setDragElId(this.config.dragElId||Ext.dd.DDProxy.dragElId);},showFrame:function(iPageX,iPageY){var el=this.getEl();var dragEl=this.getDragEl();var s=dragEl.style;this._resizeProxy();if(this.centerFrame){this.setDelta(Math.round(parseInt(s.width,10)/2),Math.round(parseInt(s.height,10)/2));} -this.setDragElPos(iPageX,iPageY);Ext.fly(dragEl).show();},_resizeProxy:function(){if(this.resizeFrame){var el=this.getEl();Ext.fly(this.getDragEl()).setSize(el.offsetWidth,el.offsetHeight);}},b4MouseDown:function(e){var x=Ext.lib.Event.getPageX(e);var y=Ext.lib.Event.getPageY(e);this.autoOffset(x,y);this.setDragElPos(x,y);},b4StartDrag:function(x,y){this.showFrame(x,y);},b4EndDrag:function(e){Ext.fly(this.getDragEl()).hide();},endDrag:function(e){var lel=this.getEl();var del=this.getDragEl();del.style.visibility="";this.beforeMove();lel.style.visibility="hidden";Ext.dd.DDM.moveToEl(lel,del);del.style.visibility="hidden";lel.style.visibility="";this.afterDrag();},beforeMove:function(){},afterDrag:function(){},toString:function(){return("DDProxy "+this.id);}});Ext.dd.DDTarget=function(id,sGroup,config){if(id){this.initTarget(id,sGroup,config);}};Ext.extend(Ext.dd.DDTarget,Ext.dd.DragDrop,{toString:function(){return("DDTarget "+this.id);}}); - -Ext.dd.ScrollManager=function(){var ddm=Ext.dd.DragDropMgr;var els={};var dragEl=null;var proc={};var onStop=function(e){dragEl=null;clearProc();};var triggerRefresh=function(){if(ddm.dragCurrent){ddm.refreshCache(ddm.dragCurrent.groups);}};var doScroll=function(){if(ddm.dragCurrent){var dds=Ext.dd.ScrollManager;if(!dds.animate){if(proc.el.scroll(proc.dir,dds.increment)){triggerRefresh();}}else{proc.el.scroll(proc.dir,dds.increment,true,dds.animDuration,triggerRefresh);}}};var clearProc=function(){if(proc.id){clearInterval(proc.id);} -proc.id=0;proc.el=null;proc.dir="";};var startProc=function(el,dir){clearProc();proc.el=el;proc.dir=dir;proc.id=setInterval(doScroll,Ext.dd.ScrollManager.frequency);};var onFire=function(e,isDrop){if(isDrop||!ddm.dragCurrent){return;} -var dds=Ext.dd.ScrollManager;if(!dragEl||dragEl!=ddm.dragCurrent){dragEl=ddm.dragCurrent;dds.refreshCache();} -var xy=Ext.lib.Event.getXY(e);var pt=new Ext.lib.Point(xy[0],xy[1]);for(var id in els){var el=els[id],r=el._region;if(r&&r.contains(pt)&&el.isScrollable()){if(r.bottom-pt.y<=dds.thresh){if(proc.el!=el){startProc(el,"down");} -return;}else if(r.right-pt.x<=dds.thresh){if(proc.el!=el){startProc(el,"left");} -return;}else if(pt.y-r.top<=dds.thresh){if(proc.el!=el){startProc(el,"up");} -return;}else if(pt.x-r.left<=dds.thresh){if(proc.el!=el){startProc(el,"right");} -return;}}} -clearProc();};ddm.fireEvents=ddm.fireEvents.createSequence(onFire,ddm);ddm.stopDrag=ddm.stopDrag.createSequence(onStop,ddm);return{register:function(el){if(el instanceof Array){for(var i=0,len=el.length;i<len;i++){this.register(el[i]);}}else{el=Ext.get(el);els[el.id]=el;}},unregister:function(el){if(el instanceof Array){for(var i=0,len=el.length;i<len;i++){this.unregister(el[i]);}}else{el=Ext.get(el);delete els[el.id];}},thresh:25,increment:100,frequency:500,animate:true,animDuration:.4,refreshCache:function(){for(var id in els){if(typeof els[id]=='object'){els[id]._region=els[id].getRegion();}}}};}(); - -Ext.dd.Registry=function(){var elements={};var handles={};var autoIdSeed=0;var getId=function(el,autogen){if(typeof el=="string"){return el;} -var id=el.id;if(!id&&autogen!==false){id="extdd-"+(++autoIdSeed);el.id=id;} -return id;};return{register:function(el,data){data=data||{};if(typeof el=="string"){el=document.getElementById(el);} -data.ddel=el;elements[getId(el)]=data;if(data.isHandle!==false){handles[data.ddel.id]=data;} -if(data.handles){var hs=data.handles;for(var i=0,len=hs.length;i<len;i++){handles[getId(hs[i])]=data;}}},unregister:function(el){var id=getId(el,false);var data=elements[id];if(data){delete elements[id];if(data.handles){var hs=data.handles;for(var i=0,len=hs.length;i<len;i++){delete handles[getId(hs[i],false)];}}}},getHandle:function(id){if(typeof id!="string"){id=id.id;} -return handles[id];},getHandleFromEvent:function(e){var t=Ext.lib.Event.getTarget(e);return t?handles[t.id]:null;},getTarget:function(id){if(typeof id!="string"){id=id.id;} -return elements[id];},getTargetFromEvent:function(e){var t=Ext.lib.Event.getTarget(e);return t?elements[t.id]||handles[t.id]:null;}};}(); - -Ext.dd.StatusProxy=function(config){Ext.apply(this,config);this.id=this.id||Ext.id();this.el=new Ext.Layer({dh:{id:this.id,tag:"div",cls:"x-dd-drag-proxy "+this.dropNotAllowed,children:[{tag:"div",cls:"x-dd-drop-icon"},{tag:"div",cls:"x-dd-drag-ghost"}]},shadow:!config||config.shadow!==false});this.ghost=Ext.get(this.el.dom.childNodes[1]);this.dropStatus=this.dropNotAllowed;};Ext.dd.StatusProxy.prototype={dropAllowed:"x-dd-drop-ok",dropNotAllowed:"x-dd-drop-nodrop",setStatus:function(cssClass){cssClass=cssClass||this.dropNotAllowed;if(this.dropStatus!=cssClass){this.el.replaceClass(this.dropStatus,cssClass);this.dropStatus=cssClass;}},reset:function(clearGhost){this.el.dom.className="x-dd-drag-proxy "+this.dropNotAllowed;this.dropStatus=this.dropNotAllowed;if(clearGhost){this.ghost.update("");}},update:function(html){if(typeof html=="string"){this.ghost.update(html);}else{this.ghost.update("");html.style.margin="0";this.ghost.dom.appendChild(html);}},getEl:function(){return this.el;},getGhost:function(){return this.ghost;},hide:function(clear){this.el.hide();if(clear){this.reset(true);}},stop:function(){if(this.anim&&this.anim.isAnimated&&this.anim.isAnimated()){this.anim.stop();}},show:function(){this.el.show();},sync:function(){this.el.sync();},repair:function(xy,callback,scope){this.callback=callback;this.scope=scope;if(xy&&this.animRepair!==false){this.el.addClass("x-dd-drag-repair");this.el.hideUnders(true);this.anim=this.el.shift({duration:this.repairDuration||.5,easing:'easeOut',xy:xy,stopFx:true,callback:this.afterRepair,scope:this});}else{this.afterRepair();}},afterRepair:function(){this.hide(true);if(typeof this.callback=="function"){this.callback.call(this.scope||this);} -this.callback=null;this.scope=null;}}; - -Ext.dd.DragSource=function(el,config){this.el=Ext.get(el);this.dragData={};Ext.apply(this,config);if(!this.proxy){this.proxy=new Ext.dd.StatusProxy();} -Ext.dd.DragSource.superclass.constructor.call(this,this.el.dom,this.ddGroup||this.group,{dragElId:this.proxy.id,resizeFrame:false,isTarget:false,scroll:this.scroll===true});this.dragging=false;};Ext.extend(Ext.dd.DragSource,Ext.dd.DDProxy,{dropAllowed:"x-dd-drop-ok",dropNotAllowed:"x-dd-drop-nodrop",getDragData:function(e){return this.dragData;},onDragEnter:function(e,id){var target=Ext.dd.DragDropMgr.getDDById(id);this.cachedTarget=target;if(this.beforeDragEnter(target,e,id)!==false){if(target.isNotifyTarget){var status=target.notifyEnter(this,e,this.dragData);this.proxy.setStatus(status);}else{this.proxy.setStatus(this.dropAllowed);} -if(this.afterDragEnter){this.afterDragEnter(target,e,id);}}},beforeDragEnter:function(target,e,id){return true;},alignElWithMouse:function(){Ext.dd.DragSource.superclass.alignElWithMouse.apply(this,arguments);this.proxy.sync();},onDragOver:function(e,id){var target=this.cachedTarget||Ext.dd.DragDropMgr.getDDById(id);if(this.beforeDragOver(target,e,id)!==false){if(target.isNotifyTarget){var status=target.notifyOver(this,e,this.dragData);this.proxy.setStatus(status);} -if(this.afterDragOver){this.afterDragOver(target,e,id);}}},beforeDragOver:function(target,e,id){return true;},onDragOut:function(e,id){var target=this.cachedTarget||Ext.dd.DragDropMgr.getDDById(id);if(this.beforeDragOut(target,e,id)!==false){if(target.isNotifyTarget){target.notifyOut(this,e,this.dragData);} -this.proxy.reset();if(this.afterDragOut){this.afterDragOut(target,e,id);}} -this.cachedTarget=null;},beforeDragOut:function(target,e,id){return true;},onDragDrop:function(e,id){var target=this.cachedTarget||Ext.dd.DragDropMgr.getDDById(id);if(this.beforeDragDrop(target,e,id)!==false){if(target.isNotifyTarget){if(target.notifyDrop(this,e,this.dragData)){this.onValidDrop(target,e,id);}else{this.onInvalidDrop(target,e,id);}}else{this.onValidDrop(target,e,id);} -if(this.afterDragDrop){this.afterDragDrop(target,e,id);}}},beforeDragDrop:function(target,e,id){return true;},onValidDrop:function(target,e,id){this.hideProxy();if(this.afterValidDrop){this.afterValidDrop(target,e,id);}},getRepairXY:function(e,data){return this.el.getXY();},onInvalidDrop:function(target,e,id){this.beforeInvalidDrop(target,e,id);if(this.cachedTarget){if(this.cachedTarget.isNotifyTarget){this.cachedTarget.notifyOut(this,e,this.dragData);} -this.cacheTarget=null;} -this.proxy.repair(this.getRepairXY(e,this.dragData),this.afterRepair,this);if(this.afterInvalidDrop){this.afterInvalidDrop(e,id);}},afterRepair:function(){if(Ext.enableFx){this.el.highlight(this.hlColor||"c3daf9");} -this.dragging=false;},beforeInvalidDrop:function(target,e,id){return true;},handleMouseDown:function(e){if(this.dragging){return;} -var data=this.getDragData(e);if(data&&this.onBeforeDrag(data,e)!==false){this.dragData=data;this.proxy.stop();Ext.dd.DragSource.superclass.handleMouseDown.apply(this,arguments);}},onBeforeDrag:function(data,e){return true;},onStartDrag:Ext.emptyFn,startDrag:function(x,y){this.proxy.reset();this.dragging=true;this.proxy.update("");this.onInitDrag(x,y);this.proxy.show();},onInitDrag:function(x,y){var clone=this.el.dom.cloneNode(true);clone.id=Ext.id();this.proxy.update(clone);this.onStartDrag(x,y);return true;},getProxy:function(){return this.proxy;},hideProxy:function(){this.proxy.hide();this.proxy.reset(true);this.dragging=false;},triggerCacheRefresh:function(){Ext.dd.DDM.refreshCache(this.groups);},b4EndDrag:function(e){},endDrag:function(e){this.onEndDrag(this.dragData,e);},onEndDrag:function(data,e){},autoOffset:function(x,y){this.setDelta(-12,-20);}}); - -Ext.dd.DropTarget=function(el,config){this.el=Ext.get(el);Ext.apply(this,config);if(this.containerScroll){Ext.dd.ScrollManager.register(this.el);} -Ext.dd.DropTarget.superclass.constructor.call(this,this.el.dom,this.ddGroup||this.group,{isTarget:true});};Ext.extend(Ext.dd.DropTarget,Ext.dd.DDTarget,{dropAllowed:"x-dd-drop-ok",dropNotAllowed:"x-dd-drop-nodrop",isTarget:true,isNotifyTarget:true,notifyEnter:function(dd,e,data){if(this.overClass){this.el.addClass(this.overClass);} -return this.dropAllowed;},notifyOver:function(dd,e,data){return this.dropAllowed;},notifyOut:function(dd,e,data){if(this.overClass){this.el.removeClass(this.overClass);}},notifyDrop:function(dd,e,data){return false;}}); - -Ext.dd.DragZone=function(el,config){Ext.dd.DragZone.superclass.constructor.call(this,el,config);if(this.containerScroll){Ext.dd.ScrollManager.register(this.el);}};Ext.extend(Ext.dd.DragZone,Ext.dd.DragSource,{getDragData:function(e){return Ext.dd.Registry.getHandleFromEvent(e);},onInitDrag:function(x,y){this.proxy.update(this.dragData.ddel.cloneNode(true));this.onStartDrag(x,y);return true;},afterRepair:function(){if(Ext.enableFx){Ext.Element.fly(this.dragData.ddel).highlight(this.hlColor||"c3daf9");} -this.dragging=false;},getRepairXY:function(e){return Ext.Element.fly(this.dragData.ddel).getXY();}}); - -Ext.dd.DropZone=function(el,config){Ext.dd.DropZone.superclass.constructor.call(this,el,config);};Ext.extend(Ext.dd.DropZone,Ext.dd.DropTarget,{getTargetFromEvent:function(e){return Ext.dd.Registry.getTargetFromEvent(e);},onNodeEnter:function(n,dd,e,data){},onNodeOver:function(n,dd,e,data){return this.dropAllowed;},onNodeOut:function(n,dd,e,data){},onNodeDrop:function(n,dd,e,data){return false;},onContainerOver:function(dd,e,data){return this.dropNotAllowed;},onContainerDrop:function(dd,e,data){return false;},notifyEnter:function(dd,e,data){return this.dropNotAllowed;},notifyOver:function(dd,e,data){var n=this.getTargetFromEvent(e);if(!n){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,dd,e,data);this.lastOverNode=null;} -return this.onContainerOver(dd,e,data);} -if(this.lastOverNode!=n){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,dd,e,data);} -this.onNodeEnter(n,dd,e,data);this.lastOverNode=n;} -return this.onNodeOver(n,dd,e,data);},notifyOut:function(dd,e,data){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,dd,e,data);this.lastOverNode=null;}},notifyDrop:function(dd,e,data){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,dd,e,data);this.lastOverNode=null;} -var n=this.getTargetFromEvent(e);return n?this.onNodeDrop(n,dd,e,data):this.onContainerDrop(dd,e,data);},triggerCacheRefresh:function(){Ext.dd.DDM.refreshCache(this.groups);}}); - -Ext.data.SortTypes={none:function(s){return s;},stripTagsRE:/<\/?[^>]+>/gi,asText:function(s){return String(s).replace(this.stripTagsRE,"");},asUCText:function(s){return String(s).toUpperCase().replace(this.stripTagsRE,"");},asUCString:function(s){return String(s).toUpperCase();},asDate:function(s){if(!s){return 0;} -if(s instanceof Date){return s.getTime();} -return Date.parse(String(s));},asFloat:function(s){var val=parseFloat(String(s).replace(/,/g,""));if(isNaN(val))val=0;return val;},asInt:function(s){var val=parseInt(String(s).replace(/,/g,""));if(isNaN(val))val=0;return val;}}; - -Ext.data.Record=function(data,id){this.id=(id||id===0)?id:++Ext.data.Record.AUTO_ID;this.data=data;};Ext.data.Record.create=function(o){var f=function(){f.superclass.constructor.apply(this,arguments);};Ext.extend(f,Ext.data.Record);var p=f.prototype;p.fields=new Ext.util.MixedCollection(false,function(field){return field.name;});for(var i=0,len=o.length;i<len;i++){p.fields.add(new Ext.data.Field(o[i]));} -f.getField=function(name){return p.fields.get(name);};return f;};Ext.data.Record.AUTO_ID=1000;Ext.data.Record.EDIT='edit';Ext.data.Record.REJECT='reject';Ext.data.Record.COMMIT='commit';Ext.data.Record.prototype={dirty:false,editing:false,error:null,modified:null,join:function(store){this.store=store;},set:function(name,value){if(this.data[name]==value){return;} -this.dirty=true;if(!this.modified){this.modified={};} -if(typeof this.modified[name]=='undefined'){this.modified[name]=this.data[name];} -this.data[name]=value;if(!this.editing){this.store.afterEdit(this);}},get:function(name){return this.data[name];},beginEdit:function(){this.editing=true;this.modified={};},cancelEdit:function(){this.editing=false;delete this.modified;},endEdit:function(){this.editing=false;if(this.dirty&&this.store){this.store.afterEdit(this);}},reject:function(){var m=this.modified;for(var n in m){if(typeof m[n]!="function"){this.data[n]=m[n];}} -this.dirty=false;delete this.modified;this.editing=false;if(this.store){this.store.afterReject(this);}},commit:function(){this.dirty=false;delete this.modified;this.editing=false;if(this.store){this.store.afterCommit(this);}},hasError:function(){return this.error!=null;},clearError:function(){this.error=null;}}; - -Ext.data.Store=function(config){this.data=new Ext.util.MixedCollection(false);this.data.getKey=function(o){return o.id;};this.baseParams={};this.paramNames={"start":"start","limit":"limit","sort":"sort","dir":"dir"};if(config&&config.data){this.inlineData=config.data;delete config.data;} -Ext.apply(this,config);if(this.reader){if(!this.recordType){this.recordType=this.reader.recordType;} -if(this.reader.onMetaChange){this.reader.onMetaChange=this.onMetaChange.createDelegate(this);}} -if(this.recordType){this.fields=this.recordType.prototype.fields;} -this.modified=[];this.addEvents({datachanged:true,metachange:true,add:true,remove:true,update:true,clear:true,beforeload:true,load:true,loadexception:true});if(this.proxy){this.relayEvents(this.proxy,["loadexception"]);} -this.sortToggle={};Ext.data.Store.superclass.constructor.call(this);if(this.inlineData){this.loadData(this.inlineData);delete this.inlineData;}};Ext.extend(Ext.data.Store,Ext.util.Observable,{remoteSort:false,lastOptions:null,add:function(records){records=[].concat(records);for(var i=0,len=records.length;i<len;i++){records[i].join(this);} -var index=this.data.length;this.data.addAll(records);this.fireEvent("add",this,records,index);},remove:function(record){var index=this.data.indexOf(record);this.data.removeAt(index);this.fireEvent("remove",this,record,index);},removeAll:function(){this.data.clear();this.fireEvent("clear",this);},insert:function(index,records){records=[].concat(records);for(var i=0,len=records.length;i<len;i++){this.data.insert(index,records[i]);records[i].join(this);} -this.fireEvent("add",this,records,index);},indexOf:function(record){return this.data.indexOf(record);},indexOfId:function(id){return this.data.indexOfKey(id);},getById:function(id){return this.data.key(id);},getAt:function(index){return this.data.itemAt(index);},getRange:function(start,end){return this.data.getRange(start,end);},storeOptions:function(o){o=Ext.apply({},o);delete o.callback;delete o.scope;this.lastOptions=o;},load:function(options){options=options||{};if(this.fireEvent("beforeload",this,options)!==false){this.storeOptions(options);var p=Ext.apply(options.params||{},this.baseParams);if(this.sortInfo&&this.remoteSort){var pn=this.paramNames;p[pn["sort"]]=this.sortInfo.field;p[pn["dir"]]=this.sortInfo.direction;} -this.proxy.load(p,this.reader,this.loadRecords,this,options);}},reload:function(options){this.load(Ext.applyIf(options||{},this.lastOptions));},loadRecords:function(o,options,success){if(!o||success===false){if(success!==false){this.fireEvent("load",this,[],options);} -if(options.callback){options.callback.call(options.scope||this,[],options,false);} -return;} -var r=o.records,t=o.totalRecords||r.length;for(var i=0,len=r.length;i<len;i++){r[i].join(this);} -if(!options||options.add!==true){this.data.clear();this.data.addAll(r);this.totalLength=t;this.applySort();this.fireEvent("datachanged",this);}else{this.totalLength=Math.max(t,this.data.length+r.length);this.data.addAll(r);} -this.fireEvent("load",this,r,options);if(options.callback){options.callback.call(options.scope||this,r,options,true);}},loadData:function(o,append){var r=this.reader.readRecords(o);this.loadRecords(r,{add:append},true);},getCount:function(){return this.data.length||0;},getTotalCount:function(){return this.totalLength||0;},getSortState:function(){return this.sortInfo;},applySort:function(){if(this.sortInfo&&!this.remoteSort){var s=this.sortInfo,f=s.field;var st=this.fields.get(f).sortType;var fn=function(r1,r2){var v1=st(r1.data[f]),v2=st(r2.data[f]);return v1>v2?1:(v1<v2?-1:0);};this.data.sort(s.direction,fn);if(this.snapshot&&this.snapshot!=this.data){this.snapshot.sort(s.direction,fn);}}},setDefaultSort:function(field,dir){this.sortInfo={field:field,direction:dir?dir.toUpperCase():"ASC"};},sort:function(fieldName,dir){var f=this.fields.get(fieldName);if(!dir){if(this.sortInfo&&this.sortInfo.field==f.name){dir=(this.sortToggle[f.name]||"ASC").toggle("ASC","DESC");}else{dir=f.sortDir;}} -this.sortToggle[f.name]=dir;this.sortInfo={field:f.name,direction:dir};if(!this.remoteSort){this.applySort();this.fireEvent("datachanged",this);}else{this.load(this.lastOptions);}},each:function(fn,scope){this.data.each(fn,scope);},getModifiedRecords:function(){return this.modified;},filter:function(property,value){if(!value.exec){value=String(value);if(value.length==0){return this.clearFilter();} -value=new RegExp("^"+Ext.escapeRe(value),"i");} -this.filterBy(function(r){return value.test(r.data[property]);});},filterBy:function(fn,scope){var data=this.snapshot||this.data;this.snapshot=data;this.data=data.filterBy(fn,scope);this.fireEvent("datachanged",this);},clearFilter:function(suppressEvent){if(this.snapshot&&this.snapshot!=this.data){this.data=this.snapshot;delete this.snapshot;if(suppressEvent!==true){this.fireEvent("datachanged",this);}}},afterEdit:function(record){if(this.modified.indexOf(record)==-1){this.modified.push(record);} -this.fireEvent("update",this,record,Ext.data.Record.EDIT);},afterReject:function(record){this.modified.remove(record);this.fireEvent("update",this,record,Ext.data.Record.REJECT);},afterCommit:function(record){this.modified.remove(record);this.fireEvent("update",this,record,Ext.data.Record.COMMIT);},commitChanges:function(){var m=this.modified.slice(0);this.modified=[];for(var i=0,len=m.length;i<len;i++){m[i].commit();}},rejectChanges:function(){var m=this.modified.slice(0);this.modified=[];for(var i=0,len=m.length;i<len;i++){m[i].reject();}},onMetaChange:function(meta,rtype,o){this.recordType=rtype;this.fields=rtype.prototype.fields;delete this.snapshot;this.sortInfo=meta.sortInfo;this.modified=[];this.fireEvent('metachange',this,this.reader.meta);}}); - -Ext.data.SimpleStore=function(config){Ext.data.SimpleStore.superclass.constructor.call(this,{reader:new Ext.data.ArrayReader({id:config.id},Ext.data.Record.create(config.fields)),proxy:new Ext.data.MemoryProxy(config.data)});this.load();};Ext.extend(Ext.data.SimpleStore,Ext.data.Store); - -Ext.data.Connection=function(config){Ext.apply(this,config);this.addEvents({"beforerequest":true,"requestcomplete":true,"requestexception":true});Ext.data.Connection.superclass.constructor.call(this);};Ext.extend(Ext.data.Connection,Ext.util.Observable,{timeout:30000,request:function(options){if(this.fireEvent("beforerequest",this,options)!==false){var p=options.params;if(typeof p=="object"){p=Ext.urlEncode(Ext.apply(options.params,this.extraParams));} -var cb={success:this.handleResponse,failure:this.handleFailure,scope:this,argument:{options:options},timeout:this.timeout};var method=options.method||this.method||(p?"POST":"GET");var url=options.url||this.url;if(this.autoAbort!==false){this.abort();} -if(method=='GET'&&p){url+=(url.indexOf('?')!=-1?'&':'?')+p;p='';} -this.transId=Ext.lib.Ajax.request(method,url,cb,p);}else{if(typeof options.callback=="function"){options.callback.call(options.scope||window,options,null,null);}}},isLoading:function(){return this.transId?true:false;},abort:function(){if(this.isLoading()){Ext.lib.Ajax.abort(this.transId);}},handleResponse:function(response){this.transId=false;var options=response.argument.options;this.fireEvent("requestcomplete",this,response,options);if(typeof options.callback=="function"){options.callback.call(options.scope||window,options,true,response);}},handleFailure:function(response,e){this.transId=false;var options=response.argument.options;this.fireEvent("requestexception",this,response,options,e);if(typeof options.callback=="function"){options.callback.call(options.scope||window,options,false,response);}}}); - -Ext.data.Field=function(config){if(typeof config=="string"){config={name:config};} -Ext.apply(this,config);if(!this.type){this.type="auto";} -var st=Ext.data.SortTypes;if(typeof this.sortType=="string"){this.sortType=st[this.sortType];} -if(!this.sortType){switch(this.type){case"string":this.sortType=st.asUCString;break;case"date":this.sortType=st.asDate;break;default:this.sortType=st.none;}} -var stripRe=/[\$,%]/g;if(!this.convert){var cv,dateFormat=this.dateFormat;switch(this.type){case"":case"auto":case undefined:cv=function(v){return v;};break;case"string":cv=function(v){return String(v);};break;case"int":cv=function(v){return v!==undefined&&v!==null&&v!==''?parseInt(String(v).replace(stripRe,""),10):'';};break;case"float":cv=function(v){return v!==undefined&&v!==null&&v!==''?parseFloat(String(v).replace(stripRe,""),10):'';};break;case"bool":case"boolean":cv=function(v){return v===true||v==="true"||v==1;};break;case"date":cv=function(v){if(!v){return'';} -if(v instanceof Date){return v;} -if(dateFormat){if(dateFormat=="timestamp"){return new Date(v*1000);} -return Date.parseDate(v,dateFormat);} -var parsed=Date.parse(v);return parsed?new Date(parsed):null;};break;} -this.convert=cv;}};Ext.data.Field.prototype={dateFormat:null,defaultValue:"",mapping:null,sortType:null,sortDir:"ASC"}; - -Ext.data.DataReader=function(meta,recordType){this.meta=meta;this.recordType=recordType instanceof Array?Ext.data.Record.create(recordType):recordType;};Ext.data.DataReader.prototype={}; - -Ext.data.DataProxy=function(){this.addEvents({beforeload:true,load:true,loadexception:true});Ext.data.DataProxy.superclass.constructor.call(this);};Ext.extend(Ext.data.DataProxy,Ext.util.Observable); - -Ext.data.MemoryProxy=function(data){Ext.data.MemoryProxy.superclass.constructor.call(this);this.data=data;};Ext.extend(Ext.data.MemoryProxy,Ext.data.DataProxy,{load:function(params,reader,callback,scope,arg){params=params||{};var result;try{result=reader.readRecords(this.data);}catch(e){this.fireEvent("loadexception",this,arg,null,e);callback.call(scope,null,arg,false);return;} -callback.call(scope,result,arg,true);},update:function(params,records){}}); - -Ext.data.HttpProxy=function(conn){Ext.data.HttpProxy.superclass.constructor.call(this);this.conn=conn.events?conn:new Ext.data.Connection(conn);};Ext.extend(Ext.data.HttpProxy,Ext.data.DataProxy,{getConnection:function(){return this.conn;},load:function(params,reader,callback,scope,arg){if(this.fireEvent("beforeload",this,params)!==false){this.conn.request({params:params||{},request:{callback:callback,scope:scope,arg:arg},reader:reader,callback:this.loadResponse,scope:this});}else{callback.call(scope||this,null,arg,false);}},loadResponse:function(o,success,response){if(!success){this.fireEvent("loadexception",this,o,response);o.request.callback.call(o.request.scope,null,o.request.arg,false);return;} -var result;try{result=o.reader.read(response);}catch(e){this.fireEvent("loadexception",this,o,response,e);o.request.callback.call(o.request.scope,null,o.request.arg,false);return;} -this.fireEvent("load",this,o,o.request.arg);o.request.callback.call(o.request.scope,result,o.request.arg,true);},update:function(dataSet){},updateResponse:function(dataSet){}}); - -Ext.data.ScriptTagProxy=function(config){Ext.data.ScriptTagProxy.superclass.constructor.call(this);Ext.apply(this,config);this.head=document.getElementsByTagName("head")[0];};Ext.data.ScriptTagProxy.TRANS_ID=1000;Ext.extend(Ext.data.ScriptTagProxy,Ext.data.DataProxy,{timeout:30000,callbackParam:"callback",nocache:true,load:function(params,reader,callback,scope,arg){if(this.fireEvent("beforeload",this,params)!==false){var p=Ext.urlEncode(Ext.apply(params,this.extraParams));var url=this.url;url+=(url.indexOf("?")!=-1?"&":"?")+p;if(this.nocache){url+="&_dc="+(new Date().getTime());} -var transId=++Ext.data.ScriptTagProxy.TRANS_ID;var trans={id:transId,cb:"stcCallback"+transId,scriptId:"stcScript"+transId,params:params,arg:arg,url:url,callback:callback,scope:scope,reader:reader};var conn=this;window[trans.cb]=function(o){conn.handleResponse(o,trans);};url+=String.format("&{0}={1}",this.callbackParam,trans.cb);if(this.autoAbort!==false){this.abort();} -trans.timeoutId=this.handleFailure.defer(this.timeout,this,[trans]);var script=document.createElement("script");script.setAttribute("src",url);script.setAttribute("type","text/javascript");script.setAttribute("id",trans.scriptId);this.head.appendChild(script);this.trans=trans;}else{callback.call(scope||this,null,arg,false);}},isLoading:function(){return this.trans?true:false;},abort:function(){if(this.isLoading()){this.destroyTrans(this.trans);}},destroyTrans:function(trans,isLoaded){this.head.removeChild(document.getElementById(trans.scriptId));clearTimeout(trans.timeoutId);if(isLoaded){window[trans.cb]=undefined;try{delete window[trans.cb];}catch(e){}}else{window[trans.cb]=function(){window[trans.cb]=undefined;try{delete window[trans.cb];}catch(e){}};}},handleResponse:function(o,trans){this.trans=false;this.destroyTrans(trans,true);var result;try{result=trans.reader.readRecords(o);}catch(e){this.fireEvent("loadexception",this,o,trans.arg,e);trans.callback.call(trans.scope||window,null,trans.arg,false);return;} -this.fireEvent("load",this,o,trans.arg);trans.callback.call(trans.scope||window,result,trans.arg,true);},handleFailure:function(trans){this.trans=false;this.destroyTrans(trans,false);this.fireEvent("loadexception",this,null,trans.arg);trans.callback.call(trans.scope||window,null,trans.arg,false);}}); - -Ext.data.JsonReader=function(meta,recordType){Ext.data.JsonReader.superclass.constructor.call(this,meta,recordType);};Ext.extend(Ext.data.JsonReader,Ext.data.DataReader,{read:function(response){var json=response.responseText;var o=eval("("+json+")");if(!o){throw{message:"JsonReader.read: Json object not found"};} -if(o.metaData){delete this.ef;this.meta=o.metaData;this.recordType=Ext.data.Record.create(o.metaData.fields);this.onMetaChange(this.meta,this.recordType,o);} -return this.readRecords(o);},onMetaChange:function(meta,recordType,o){},simpleAccess:function(obj,subsc){return obj[subsc];},getJsonAccessor:function(){var re=/[\[\.]/;return function(expr){try{return(re.test(expr))?new Function("obj","return obj."+expr):function(obj){return obj[expr];};}catch(e){} -return Ext.emptyFn;};}(),readRecords:function(o){this.jsonData=o;var s=this.meta,Record=this.recordType,f=Record.prototype.fields,fi=f.items,fl=f.length;if(!this.ef){if(s.totalProperty){this.getTotal=this.getJsonAccessor(s.totalProperty);} -if(s.successProperty){this.getSuccess=this.getJsonAccessor(s.successProperty);} -this.getRoot=s.root?this.getJsonAccessor(s.root):function(p){return p;};if(s.id){var g=this.getJsonAccessor(s.id);this.getId=function(rec){var r=g(rec);return(r===undefined||r==="")?null:r;};}else{this.getId=function(){return null;};} -this.ef=[];for(var i=0;i<fl;i++){f=fi[i];var map=(f.mapping!==undefined&&f.mapping!==null)?f.mapping:f.name;this.ef[i]=this.getJsonAccessor(map);}} -var root=this.getRoot(o),c=root.length,totalRecords=c,success=true;if(s.totalProperty){var v=parseInt(this.getTotal(o),10);if(!isNaN(v)){totalRecords=v;}} -if(s.successProperty){var v=this.getSuccess(o);if(v===false||v==='false'){success=false;}} -var records=[];for(var i=0;i<c;i++){var n=root[i];var values={};var id=this.getId(n);for(var j=0;j<fl;j++){f=fi[j];var v=this.ef[j](n);values[f.name]=f.convert((v!==undefined)?v:f.defaultValue);} -var record=new Record(values,id);record.json=n;records[i]=record;} -return{success:success,records:records,totalRecords:totalRecords};}}); - -Ext.data.XmlReader=function(meta,recordType){Ext.data.XmlReader.superclass.constructor.call(this,meta,recordType);};Ext.extend(Ext.data.XmlReader,Ext.data.DataReader,{read:function(response){var doc=response.responseXML;if(!doc){throw{message:"XmlReader.read: XML Document not available"};} -return this.readRecords(doc);},readRecords:function(doc){this.xmlData=doc;var root=doc.documentElement||doc;var q=Ext.DomQuery;var recordType=this.recordType,fields=recordType.prototype.fields;var sid=this.meta.id;var totalRecords=0,success=true;if(this.meta.totalRecords){totalRecords=q.selectNumber(this.meta.totalRecords,root,0);} -if(this.meta.success){var sv=q.selectValue(this.meta.success,root,true);success=sv!==false&&sv!=='false';} -var records=[];var ns=q.select(this.meta.record,root);for(var i=0,len=ns.length;i<len;i++){var n=ns[i];var values={};var id=sid?q.selectValue(sid,n):undefined;for(var j=0,jlen=fields.length;j<jlen;j++){var f=fields.items[j];var v=q.selectValue(f.mapping||f.name,n,f.defaultValue);v=f.convert(v);values[f.name]=v;} -var record=new recordType(values,id);record.node=n;records[records.length]=record;} -return{success:success,records:records,totalRecords:totalRecords||records.length};}}); - -Ext.data.ArrayReader=function(meta,recordType){Ext.data.ArrayReader.superclass.constructor.call(this,meta,recordType);};Ext.extend(Ext.data.ArrayReader,Ext.data.JsonReader,{readRecords:function(o){var sid=this.meta?this.meta.id:null;var recordType=this.recordType,fields=recordType.prototype.fields;var records=[];var root=o;for(var i=0;i<root.length;i++){var n=root[i];var values={};var id=((sid||sid===0)&&n[sid]!==undefined&&n[sid]!==""?n[sid]:null);for(var j=0,jlen=fields.length;j<jlen;j++){var f=fields.items[j];var k=f.mapping!==undefined&&f.mapping!==null?f.mapping:j;var v=n[k]!==undefined?n[k]:f.defaultValue;v=f.convert(v);values[f.name]=v;} -var record=new recordType(values,id);record.json=n;records[records.length]=record;} -return{records:records,totalRecords:records.length};}}); - -Ext.data.Tree=function(root){this.nodeHash={};this.root=null;if(root){this.setRootNode(root);} -this.addEvents({"append":true,"remove":true,"move":true,"insert":true,"beforeappend":true,"beforeremove":true,"beforemove":true,"beforeinsert":true});Ext.data.Tree.superclass.constructor.call(this);};Ext.extend(Ext.data.Tree,Ext.util.Observable,{pathSeparator:"/",getRootNode:function(){return this.root;},setRootNode:function(node){this.root=node;node.ownerTree=this;node.isRoot=true;this.registerNode(node);return node;},getNodeById:function(id){return this.nodeHash[id];},registerNode:function(node){this.nodeHash[node.id]=node;},unregisterNode:function(node){delete this.nodeHash[node.id];},toString:function(){return"[Tree"+(this.id?" "+this.id:"")+"]";}});Ext.data.Node=function(attributes){this.attributes=attributes||{};this.leaf=this.attributes.leaf;this.id=this.attributes.id;if(!this.id){this.id=Ext.id(null,"ynode-");this.attributes.id=this.id;} -this.childNodes=[];if(!this.childNodes.indexOf){this.childNodes.indexOf=function(o){for(var i=0,len=this.length;i<len;i++){if(this[i]==o)return i;} -return-1;};} -this.parentNode=null;this.firstChild=null;this.lastChild=null;this.previousSibling=null;this.nextSibling=null;this.addEvents({"append":true,"remove":true,"move":true,"insert":true,"beforeappend":true,"beforeremove":true,"beforemove":true,"beforeinsert":true});this.listeners=this.attributes.listeners;Ext.data.Node.superclass.constructor.call(this);};Ext.extend(Ext.data.Node,Ext.util.Observable,{fireEvent:function(evtName){if(Ext.data.Node.superclass.fireEvent.apply(this,arguments)===false){return false;} -var ot=this.getOwnerTree();if(ot){if(ot.proxyNodeEvent.apply(ot,arguments)===false){return false;}} -return true;},isLeaf:function(){return this.leaf===true;},setFirstChild:function(node){this.firstChild=node;},setLastChild:function(node){this.lastChild=node;},isLast:function(){return(!this.parentNode?true:this.parentNode.lastChild==this);},isFirst:function(){return(!this.parentNode?true:this.parentNode.firstChild==this);},hasChildNodes:function(){return!this.isLeaf()&&this.childNodes.length>0;},appendChild:function(node){var multi=false;if(node instanceof Array){multi=node;}else if(arguments.length>1){multi=arguments;} -if(multi){for(var i=0,len=multi.length;i<len;i++){this.appendChild(multi[i]);}}else{if(this.fireEvent("beforeappend",this.ownerTree,this,node)===false){return false;} -var index=this.childNodes.length;var oldParent=node.parentNode;if(oldParent){if(node.fireEvent("beforemove",node.getOwnerTree(),node,oldParent,this,index)===false){return false;} -oldParent.removeChild(node);} -index=this.childNodes.length;if(index==0){this.setFirstChild(node);} -this.childNodes.push(node);node.parentNode=this;var ps=this.childNodes[index-1];if(ps){node.previousSibling=ps;ps.nextSibling=node;}else{node.previousSibling=null;} -node.nextSibling=null;this.setLastChild(node);node.setOwnerTree(this.getOwnerTree());this.fireEvent("append",this.ownerTree,this,node,index);if(oldParent){node.fireEvent("move",this.ownerTree,node,oldParent,this,index);} -return node;}},removeChild:function(node){var index=this.childNodes.indexOf(node);if(index==-1){return false;} -if(this.fireEvent("beforeremove",this.ownerTree,this,node)===false){return false;} -this.childNodes.splice(index,1);if(node.previousSibling){node.previousSibling.nextSibling=node.nextSibling;} -if(node.nextSibling){node.nextSibling.previousSibling=node.previousSibling;} -if(this.firstChild==node){this.setFirstChild(node.nextSibling);} -if(this.lastChild==node){this.setLastChild(node.previousSibling);} -node.setOwnerTree(null);node.parentNode=null;node.previousSibling=null;node.nextSibling=null;this.fireEvent("remove",this.ownerTree,this,node);return node;},insertBefore:function(node,refNode){if(!refNode){return this.appendChild(node);} -if(node==refNode){return false;} -if(this.fireEvent("beforeinsert",this.ownerTree,this,node,refNode)===false){return false;} -var index=this.childNodes.indexOf(refNode);var oldParent=node.parentNode;var refIndex=index;if(oldParent==this&&this.childNodes.indexOf(node)<index){refIndex--;} -if(oldParent){if(node.fireEvent("beforemove",node.getOwnerTree(),node,oldParent,this,index,refNode)===false){return false;} -oldParent.removeChild(node);} -if(refIndex==0){this.setFirstChild(node);} -this.childNodes.splice(refIndex,0,node);node.parentNode=this;var ps=this.childNodes[refIndex-1];if(ps){node.previousSibling=ps;ps.nextSibling=node;}else{node.previousSibling=null;} -node.nextSibling=refNode;refNode.previousSibling=node;node.setOwnerTree(this.getOwnerTree());this.fireEvent("insert",this.ownerTree,this,node,refNode);if(oldParent){node.fireEvent("move",this.ownerTree,node,oldParent,this,refIndex,refNode);} -return node;},item:function(index){return this.childNodes[index];},replaceChild:function(newChild,oldChild){this.insertBefore(newChild,oldChild);this.removeChild(oldChild);return oldChild;},indexOf:function(child){return this.childNodes.indexOf(child);},getOwnerTree:function(){if(!this.ownerTree){var p=this;while(p){if(p.ownerTree){this.ownerTree=p.ownerTree;break;} -p=p.parentNode;}} -return this.ownerTree;},getDepth:function(){var depth=0;var p=this;while(p.parentNode){++depth;p=p.parentNode;} -return depth;},setOwnerTree:function(tree){if(tree!=this.ownerTree){if(this.ownerTree){this.ownerTree.unregisterNode(this);} -this.ownerTree=tree;var cs=this.childNodes;for(var i=0,len=cs.length;i<len;i++){cs[i].setOwnerTree(tree);} -if(tree){tree.registerNode(this);}}},getPath:function(attr){attr=attr||"id";var p=this.parentNode;var b=[this.attributes[attr]];while(p){b.unshift(p.attributes[attr]);p=p.parentNode;} -var sep=this.getOwnerTree().pathSeparator;return sep+b.join(sep);},bubble:function(fn,scope,args){var p=this;while(p){if(fn.call(scope||p,args||p)===false){break;} -p=p.parentNode;}},cascade:function(fn,scope,args){if(fn.call(scope||this,args||this)!==false){var cs=this.childNodes;for(var i=0,len=cs.length;i<len;i++){cs[i].cascade(fn,scope,args);}}},eachChild:function(fn,scope,args){var cs=this.childNodes;for(var i=0,len=cs.length;i<len;i++){if(fn.call(scope||this,args||cs[i])===false){break;}}},findChild:function(attribute,value){var cs=this.childNodes;for(var i=0,len=cs.length;i<len;i++){if(cs[i].attributes[attribute]==value){return cs[i];}} -return null;},findChildBy:function(fn,scope){var cs=this.childNodes;for(var i=0,len=cs.length;i<len;i++){if(fn.call(scope||cs[i],cs[i])===true){return cs[i];}} -return null;},sort:function(fn,scope){var cs=this.childNodes;var len=cs.length;if(len>0){var sortFn=scope?function(){fn.apply(scope,arguments);}:fn;cs.sort(sortFn);for(var i=0;i<len;i++){var n=cs[i];n.previousSibling=cs[i-1];n.nextSibling=cs[i+1];if(i==0){this.setFirstChild(n);} -if(i==len-1){this.setLastChild(n);}}}},contains:function(node){return node.isAncestor(this);},isAncestor:function(node){var p=this.parentNode;while(p){if(p==node){return true;} -p=p.parentNode;} -return false;},toString:function(){return"[Node"+(this.id?" "+this.id:"")+"]";}}); - -Ext.ComponentMgr=function(){var all=new Ext.util.MixedCollection();return{register:function(c){all.add(c);},unregister:function(c){all.remove(c);},get:function(id){return all.get(id);},onAvailable:function(id,fn,scope){all.on("add",function(index,o){if(o.id==id){fn.call(scope||o,o);all.un("add",fn,scope);}});}};}();Ext.Component=function(config){config=config||{};if(config.tagName||config.dom||typeof config=="string"){config={el:config,id:config.id||config};} -this.initialConfig=config;Ext.apply(this,config);this.addEvents({disable:true,enable:true,beforeshow:true,show:true,beforehide:true,hide:true,beforerender:true,render:true,beforedestroy:true,destroy:true});if(!this.id){this.id="ext-comp-"+(++Ext.Component.AUTO_ID);} -Ext.ComponentMgr.register(this);Ext.Component.superclass.constructor.call(this);this.initComponent();if(this.renderTo){this.render(this.renderTo);delete this.renderTo;}};Ext.Component.AUTO_ID=1000;Ext.extend(Ext.Component,Ext.util.Observable,{hidden:false,disabled:false,disabledClass:"x-item-disabled",rendered:false,allowDomMove:true,ctype:"Ext.Component",actionMode:"el",getActionEl:function(){return this[this.actionMode];},hideMode:'display',initComponent:Ext.emptyFn,render:function(container,position){if(!this.rendered&&this.fireEvent("beforerender",this)!==false){if(!container&&this.el){this.el=Ext.get(this.el);container=this.el.dom.parentNode;this.allowDomMove=false;} -this.container=Ext.get(container);this.rendered=true;if(position!==undefined){if(typeof position=='number'){position=this.container.dom.childNodes[position];}else{position=Ext.getDom(position);}} -this.onRender(this.container,position||null);if(this.cls){this.el.addClass(this.cls);delete this.cls;} -if(this.style){this.el.applyStyles(this.style);delete this.style;} -this.fireEvent("render",this);this.afterRender(this.container);if(this.hidden){this.hide();} -if(this.disabled){this.disable();}} -return this;},onRender:function(ct,position){if(this.el){this.el=Ext.get(this.el);if(this.allowDomMove!==false){ct.dom.insertBefore(this.el.dom,position);}}},getAutoCreate:function(){var cfg=typeof this.autoCreate=="object"?this.autoCreate:Ext.apply({},this.defaultAutoCreate);if(this.id&&!cfg.id){cfg.id=this.id;} -return cfg;},afterRender:Ext.emptyFn,destroy:function(){if(this.fireEvent("beforedestroy",this)!==false){this.purgeListeners();this.beforeDestroy();if(this.rendered){this.el.removeAllListeners();this.el.remove();if(this.actionMode=="container"){this.container.remove();}} -this.onDestroy();Ext.ComponentMgr.unregister(this);this.fireEvent("destroy",this);}},beforeDestroy:function(){},onDestroy:function(){},getEl:function(){return this.el;},getId:function(){return this.id;},focus:function(selectText){if(this.rendered){this.el.focus();if(selectText===true){this.el.dom.select();}} -return this;},blur:function(){if(this.rendered){this.el.blur();} -return this;},disable:function(){if(this.rendered){this.onDisable();} -this.disabled=true;this.fireEvent("disable",this);return this;},onDisable:function(){this.getActionEl().addClass(this.disabledClass);this.el.dom.disabled=true;},enable:function(){if(this.rendered){this.onEnable();} -this.disabled=false;this.fireEvent("enable",this);return this;},onEnable:function(){this.getActionEl().removeClass(this.disabledClass);this.el.dom.disabled=false;},setDisabled:function(disabled){this[disabled?"disable":"enable"]();},show:function(){if(this.fireEvent("beforeshow",this)!==false){this.hidden=false;if(this.rendered){this.onShow();} -this.fireEvent("show",this);} -return this;},onShow:function(){var ae=this.getActionEl();if(this.hideMode=='visibility'){ae.dom.style.visibility="visible";}else if(this.hideMode=='offsets'){ae.removeClass('x-hidden');}else{ae.dom.style.display="";}},hide:function(){if(this.fireEvent("beforehide",this)!==false){this.hidden=true;if(this.rendered){this.onHide();} -this.fireEvent("hide",this);} -return this;},onHide:function(){var ae=this.getActionEl();if(this.hideMode=='visibility'){ae.dom.style.visibility="hidden";}else if(this.hideMode=='offsets'){ae.addClass('x-hidden');}else{ae.dom.style.display="none";}},setVisible:function(visible){if(visible){this.show();}else{this.hide();} -return this;},isVisible:function(){return this.getActionEl().isVisible();},cloneConfig:function(overrides){overrides=overrides||{};var id=overrides.id||Ext.id();var cfg=Ext.applyIf(overrides,this.initialConfig);cfg.id=id;return new this.__extcls(cfg);}}); - -(function(){Ext.Layer=function(config,existingEl){config=config||{};var dh=Ext.DomHelper;var cp=config.parentEl,pel=cp?Ext.getDom(cp):document.body;if(existingEl){this.dom=Ext.getDom(existingEl);} -if(!this.dom){var o=config.dh||{tag:"div",cls:"x-layer"};this.dom=dh.append(pel,o);} -if(config.cls){this.addClass(config.cls);} -this.constrain=config.constrain!==false;this.visibilityMode=Ext.Element.VISIBILITY;if(config.id){this.id=this.dom.id=config.id;}else{this.id=Ext.id(this.dom);} -this.zindex=config.zindex||this.getZIndex();this.position("absolute",this.zindex);if(config.shadow){this.shadowOffset=config.shadowOffset||4;this.shadow=new Ext.Shadow({offset:this.shadowOffset,mode:config.shadow});}else{this.shadowOffset=0;} -this.useShim=config.shim!==false&&Ext.useShims;this.useDisplay=config.useDisplay;this.hide();};var supr=Ext.Element.prototype;var shims=[];Ext.extend(Ext.Layer,Ext.Element,{getZIndex:function(){return this.zindex||parseInt(this.getStyle("z-index"),10)||11000;},getShim:function(){if(!this.useShim){return null;} -if(this.shim){return this.shim;} -var shim=shims.shift();if(!shim){shim=this.createShim();shim.enableDisplayMode('block');shim.dom.style.display='none';shim.dom.style.visibility='visible';} -var pn=this.dom.parentNode;if(shim.dom.parentNode!=pn){pn.insertBefore(shim.dom,this.dom);} -shim.setStyle('z-index',this.getZIndex()-2);this.shim=shim;return shim;},hideShim:function(){if(this.shim){this.shim.setDisplayed(false);shims.push(this.shim);delete this.shim;}},disableShadow:function(){if(this.shadow){this.shadowDisabled=true;this.shadow.hide();this.lastShadowOffset=this.shadowOffset;this.shadowOffset=0;}},enableShadow:function(show){if(this.shadow){this.shadowDisabled=false;this.shadowOffset=this.lastShadowOffset;delete this.lastShadowOffset;if(show){this.sync(true);}}},sync:function(doShow){var sw=this.shadow;if(!this.updating&&this.isVisible()&&(sw||this.useShim)){var sh=this.getShim();var w=this.getWidth(),h=this.getHeight();var l=this.getLeft(true),t=this.getTop(true);if(sw&&!this.shadowDisabled){if(doShow&&!sw.isVisible()){sw.show(this);}else{sw.realign(l,t,w,h);} -if(sh){if(doShow){sh.show();} -var a=sw.adjusts,s=sh.dom.style;s.left=(Math.min(l,l+a.l))+"px";s.top=(Math.min(t,t+a.t))+"px";s.width=(w+a.w)+"px";s.height=(h+a.h)+"px";}}else if(sh){if(doShow){sh.show();} -sh.setSize(w,h);sh.setLeftTop(l,t);}}},destroy:function(){this.hideShim();if(this.shadow){this.shadow.hide();} -this.removeAllListeners();var pn=this.dom.parentNode;if(pn){pn.removeChild(this.dom);} -Ext.Element.uncache(this.id);},remove:function(){this.destroy();},beginUpdate:function(){this.updating=true;},endUpdate:function(){this.updating=false;this.sync(true);},hideUnders:function(negOffset){if(this.shadow){this.shadow.hide();} -this.hideShim();},constrainXY:function(){if(this.constrain){var vw=Ext.lib.Dom.getViewWidth(),vh=Ext.lib.Dom.getViewHeight();var s=Ext.get(document).getScroll();var xy=this.getXY();var x=xy[0],y=xy[1];var w=this.dom.offsetWidth+this.shadowOffset,h=this.dom.offsetHeight+this.shadowOffset;var moved=false;if((x+w)>vw+s.left){x=vw-w-this.shadowOffset;moved=true;} -if((y+h)>vh+s.top){y=vh-h-this.shadowOffset;moved=true;} -if(x<s.left){x=s.left;moved=true;} -if(y<s.top){y=s.top;moved=true;} -if(moved){if(this.avoidY){var ay=this.avoidY;if(y<=ay&&(y+h)>=ay){y=ay-h-5;}} -xy=[x,y];this.storeXY(xy);supr.setXY.call(this,xy);this.sync();}}},isVisible:function(){return this.visible;},showAction:function(){this.visible=true;if(this.useDisplay===true){this.setDisplayed("");}else if(this.lastXY){supr.setXY.call(this,this.lastXY);}else if(this.lastLT){supr.setLeftTop.call(this,this.lastLT[0],this.lastLT[1]);}},hideAction:function(){this.visible=false;if(this.useDisplay===true){this.setDisplayed(false);}else{this.setLeftTop(-10000,-10000);}},setVisible:function(v,a,d,c,e){if(v){this.showAction();} -if(a&&v){var cb=function(){this.sync(true);if(c){c();}}.createDelegate(this);supr.setVisible.call(this,true,true,d,cb,e);}else{if(!v){this.hideUnders(true);} -var cb=c;if(a){cb=function(){this.hideAction();if(c){c();}}.createDelegate(this);} -supr.setVisible.call(this,v,a,d,cb,e);if(v){this.sync(true);}else if(!a){this.hideAction();}}},storeXY:function(xy){delete this.lastLT;this.lastXY=xy;},storeLeftTop:function(left,top){delete this.lastXY;this.lastLT=[left,top];},beforeFx:function(){this.beforeAction();return Ext.Layer.superclass.beforeFx.apply(this,arguments);},afterFx:function(){Ext.Layer.superclass.afterFx.apply(this,arguments);this.sync(this.isVisible());},beforeAction:function(){if(!this.updating&&this.shadow){this.shadow.hide();}},setLeft:function(left){this.storeLeftTop(left,this.getTop(true));supr.setLeft.apply(this,arguments);this.sync();},setTop:function(top){this.storeLeftTop(this.getLeft(true),top);supr.setTop.apply(this,arguments);this.sync();},setLeftTop:function(left,top){this.storeLeftTop(left,top);supr.setLeftTop.apply(this,arguments);this.sync();},setXY:function(xy,a,d,c,e){this.fixDisplay();this.beforeAction();this.storeXY(xy);var cb=this.createCB(c);supr.setXY.call(this,xy,a,d,cb,e);if(!a){cb();}},createCB:function(c){var el=this;return function(){el.constrainXY();el.sync(true);if(c){c();}};},setX:function(x,a,d,c,e){this.setXY([x,this.getY()],a,d,c,e);},setY:function(y,a,d,c,e){this.setXY([this.getX(),y],a,d,c,e);},setSize:function(w,h,a,d,c,e){this.beforeAction();var cb=this.createCB(c);supr.setSize.call(this,w,h,a,d,cb,e);if(!a){cb();}},setWidth:function(w,a,d,c,e){this.beforeAction();var cb=this.createCB(c);supr.setWidth.call(this,w,a,d,cb,e);if(!a){cb();}},setHeight:function(h,a,d,c,e){this.beforeAction();var cb=this.createCB(c);supr.setHeight.call(this,h,a,d,cb,e);if(!a){cb();}},setBounds:function(x,y,w,h,a,d,c,e){this.beforeAction();var cb=this.createCB(c);if(!a){this.storeXY([x,y]);supr.setXY.call(this,[x,y]);supr.setSize.call(this,w,h,a,d,cb,e);cb();}else{supr.setBounds.call(this,x,y,w,h,a,d,cb,e);} -return this;},setZIndex:function(zindex){this.zindex=zindex;this.setStyle("z-index",zindex+2);if(this.shadow){this.shadow.setZIndex(zindex+1);} -if(this.shim){this.shim.setStyle("z-index",zindex);}}});})(); - -Ext.Shadow=function(config){Ext.apply(this,config);if(typeof this.mode!="string"){this.mode=this.defaultMode;} -var o=this.offset,a={h:0};var rad=Math.floor(this.offset/2);switch(this.mode.toLowerCase()){case"drop":a.w=0;a.l=a.t=o;a.t-=1;if(Ext.isIE){a.l-=this.offset+rad;a.t-=this.offset+rad;a.w-=rad;a.h-=rad;a.t+=1;} -break;case"sides":a.w=(o*2);a.l=-o;a.t=o-1;if(Ext.isIE){a.l-=(this.offset-rad);a.t-=this.offset+rad;a.l+=1;a.w-=(this.offset-rad)*2;a.w-=rad+1;a.h-=1;} -break;case"frame":a.w=a.h=(o*2);a.l=a.t=-o;a.t+=1;a.h-=2;if(Ext.isIE){a.l-=(this.offset-rad);a.t-=(this.offset-rad);a.l+=1;a.w-=(this.offset+rad+1);a.h-=(this.offset+rad);a.h+=1;} -break;};this.adjusts=a;};Ext.Shadow.prototype={offset:4,defaultMode:"drop",show:function(target){target=Ext.get(target);if(!this.el){this.el=Ext.Shadow.Pool.pull();if(this.el.dom.nextSibling!=target.dom){this.el.insertBefore(target);}} -this.el.setStyle("z-index",this.zIndex||parseInt(target.getStyle("z-index"),10)-1);if(Ext.isIE){this.el.dom.style.filter="progid:DXImageTransform.Microsoft.alpha(opacity=50) progid:DXImageTransform.Microsoft.Blur(pixelradius="+(this.offset)+")";} -this.realign(target.getLeft(true),target.getTop(true),target.getWidth(),target.getHeight());this.el.dom.style.display="block";},isVisible:function(){return this.el?true:false;},realign:function(l,t,w,h){if(!this.el){return;} -var a=this.adjusts,d=this.el.dom,s=d.style;var iea=0;s.left=(l+a.l)+"px";s.top=(t+a.t)+"px";var sw=(w+a.w),sh=(h+a.h),sws=sw+"px",shs=sh+"px";if(s.width!=sws||s.height!=shs){s.width=sws;s.height=shs;if(!Ext.isIE){var cn=d.childNodes;var sww=Math.max(0,(sw-12))+"px";cn[0].childNodes[1].style.width=sww;cn[1].childNodes[1].style.width=sww;cn[2].childNodes[1].style.width=sww;cn[1].style.height=Math.max(0,(sh-12))+"px";}}},hide:function(){if(this.el){this.el.dom.style.display="none";Ext.Shadow.Pool.push(this.el);delete this.el;}},setZIndex:function(z){this.zIndex=z;if(this.el){this.el.setStyle("z-index",z);}}};Ext.Shadow.Pool=function(){var p=[];var markup=Ext.isIE?'<div class="x-ie-shadow"></div>':'<div class="x-shadow"><div class="xst"><div class="xstl"></div><div class="xstc"></div><div class="xstr"></div></div><div class="xsc"><div class="xsml"></div><div class="xsmc"></div><div class="xsmr"></div></div><div class="xsb"><div class="xsbl"></div><div class="xsbc"></div><div class="xsbr"></div></div></div>';return{pull:function(){var sh=p.shift();if(!sh){sh=Ext.get(Ext.DomHelper.insertHtml("beforeBegin",document.body.firstChild,markup));sh.autoBoxAdjust=false;} -return sh;},push:function(sh){p.push(sh);}};}(); - -Ext.BoxComponent=function(config){Ext.BoxComponent.superclass.constructor.call(this,config);this.addEvents({resize:true,move:true});};Ext.extend(Ext.BoxComponent,Ext.Component,{boxReady:false,deferHeight:false,setSize:function(w,h){if(typeof w=='object'){h=w.height;w=w.width;} -if(!this.boxReady){this.width=w;this.height=h;return this;} -if(this.lastSize&&this.lastSize.width==w&&this.lastSize.height==h){return this;} -this.lastSize={width:w,height:h};var adj=this.adjustSize(w,h);var aw=adj.width,ah=adj.height;if(aw!==undefined||ah!==undefined){var rz=this.getResizeEl();if(!this.deferHeight&&aw!==undefined&&ah!==undefined){rz.setSize(aw,ah);}else if(!this.deferHeight&&ah!==undefined){rz.setHeight(ah);}else if(aw!==undefined){rz.setWidth(aw);} -this.onResize(aw,ah,w,h);this.fireEvent('resize',this,aw,ah,w,h);} -return this;},getSize:function(){return this.el.getSize();},getPosition:function(local){if(local===true){return[this.el.getLeft(true),this.el.getTop(true)];} -return this.xy||this.el.getXY();},getBox:function(local){var s=this.el.getSize();if(local){s.x=this.el.getLeft(true);s.y=this.el.getTop(true);}else{var xy=this.xy||this.el.getXY();s.x=xy[0];s.y=xy[1];} -return s;},updateBox:function(box){this.setSize(box.width,box.height);this.setPagePosition(box.x,box.y);},getResizeEl:function(){return this.resizeEl||this.el;},getPositionEl:function(){return this.positionEl||this.el;},setPosition:function(x,y){this.x=x;this.y=y;if(!this.boxReady){return this;} -var adj=this.adjustPosition(x,y);var ax=adj.x,ay=adj.y;var el=this.getPositionEl();if(ax!==undefined||ay!==undefined){if(ax!==undefined&&ay!==undefined){el.setLeftTop(ax,ay);}else if(ax!==undefined){el.setLeft(ax);}else if(ay!==undefined){el.setTop(ay);} -this.onPosition(ax,ay);this.fireEvent('move',this,ax,ay);} -return this;},setPagePosition:function(x,y){this.pageX=x;this.pageY=y;if(!this.boxReady){return;} -if(x===undefined||y===undefined){return;} -var p=this.el.translatePoints(x,y);this.setPosition(p.left,p.top);return this;},onRender:function(ct,position){Ext.BoxComponent.superclass.onRender.call(this,ct,position);if(this.resizeEl){this.resizeEl=Ext.get(this.resizeEl);} -if(this.positionEl){this.positionEl=Ext.get(this.positionEl);}},afterRender:function(){Ext.BoxComponent.superclass.afterRender.call(this);this.boxReady=true;this.setSize(this.width,this.height);if(this.x||this.y){this.setPosition(this.x,this.y);} -if(this.pageX||this.pageY){this.setPagePosition(this.pageX,this.pageY);}},syncSize:function(){this.setSize(this.el.getWidth(),this.el.getHeight());},onResize:function(adjWidth,adjHeight,rawWidth,rawHeight){},onPosition:function(x,y){},adjustSize:function(w,h){if(this.autoWidth){w='auto';} -if(this.autoHeight){h='auto';} -return{width:w,height:h};},adjustPosition:function(x,y){return{x:x,y:y};}}); - -Ext.SplitBar=function(dragElement,resizingElement,orientation,placement,existingProxy){this.el=Ext.get(dragElement,true);this.el.dom.unselectable="on";this.resizingEl=Ext.get(resizingElement,true);this.orientation=orientation||Ext.SplitBar.HORIZONTAL;this.minSize=0;this.maxSize=2000;this.animate=false;this.useShim=false;this.shim=null;if(!existingProxy){this.proxy=Ext.SplitBar.createProxy(this.orientation);}else{this.proxy=Ext.get(existingProxy).dom;} -this.dd=new Ext.dd.DDProxy(this.el.dom.id,"XSplitBars",{dragElId:this.proxy.id});this.dd.b4StartDrag=this.onStartProxyDrag.createDelegate(this);this.dd.endDrag=this.onEndProxyDrag.createDelegate(this);this.dragSpecs={};this.adapter=new Ext.SplitBar.BasicLayoutAdapter();this.adapter.init(this);if(this.orientation==Ext.SplitBar.HORIZONTAL){this.placement=placement||(this.el.getX()>this.resizingEl.getX()?Ext.SplitBar.LEFT:Ext.SplitBar.RIGHT);this.el.addClass("x-splitbar-h");}else{this.placement=placement||(this.el.getY()>this.resizingEl.getY()?Ext.SplitBar.TOP:Ext.SplitBar.BOTTOM);this.el.addClass("x-splitbar-v");} -this.addEvents({"resize":true,"moved":true,"beforeresize":true,"beforeapply":true});Ext.SplitBar.superclass.constructor.call(this);};Ext.extend(Ext.SplitBar,Ext.util.Observable,{onStartProxyDrag:function(x,y){this.fireEvent("beforeresize",this);if(!this.overlay){var o=Ext.DomHelper.insertFirst(document.body,{cls:"x-drag-overlay",html:" "},true);o.unselectable();o.enableDisplayMode("block");Ext.SplitBar.prototype.overlay=o;} -this.overlay.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true));this.overlay.show();Ext.get(this.proxy).setDisplayed("block");var size=this.adapter.getElementSize(this);this.activeMinSize=this.getMinimumSize();;this.activeMaxSize=this.getMaximumSize();;var c1=size-this.activeMinSize;var c2=Math.max(this.activeMaxSize-size,0);if(this.orientation==Ext.SplitBar.HORIZONTAL){this.dd.resetConstraints();this.dd.setXConstraint(this.placement==Ext.SplitBar.LEFT?c1:c2,this.placement==Ext.SplitBar.LEFT?c2:c1);this.dd.setYConstraint(0,0);}else{this.dd.resetConstraints();this.dd.setXConstraint(0,0);this.dd.setYConstraint(this.placement==Ext.SplitBar.TOP?c1:c2,this.placement==Ext.SplitBar.TOP?c2:c1);} -this.dragSpecs.startSize=size;this.dragSpecs.startPoint=[x,y];Ext.dd.DDProxy.prototype.b4StartDrag.call(this.dd,x,y);},onEndProxyDrag:function(e){Ext.get(this.proxy).setDisplayed(false);var endPoint=Ext.lib.Event.getXY(e);if(this.overlay){this.overlay.hide();} -var newSize;if(this.orientation==Ext.SplitBar.HORIZONTAL){newSize=this.dragSpecs.startSize+ -(this.placement==Ext.SplitBar.LEFT?endPoint[0]-this.dragSpecs.startPoint[0]:this.dragSpecs.startPoint[0]-endPoint[0]);}else{newSize=this.dragSpecs.startSize+ -(this.placement==Ext.SplitBar.TOP?endPoint[1]-this.dragSpecs.startPoint[1]:this.dragSpecs.startPoint[1]-endPoint[1]);} -newSize=Math.min(Math.max(newSize,this.activeMinSize),this.activeMaxSize);if(newSize!=this.dragSpecs.startSize){if(this.fireEvent('beforeapply',this,newSize)!==false){this.adapter.setElementSize(this,newSize);this.fireEvent("moved",this,newSize);this.fireEvent("resize",this,newSize);}}},getAdapter:function(){return this.adapter;},setAdapter:function(adapter){this.adapter=adapter;this.adapter.init(this);},getMinimumSize:function(){return this.minSize;},setMinimumSize:function(minSize){this.minSize=minSize;},getMaximumSize:function(){return this.maxSize;},setMaximumSize:function(maxSize){this.maxSize=maxSize;},setCurrentSize:function(size){var oldAnimate=this.animate;this.animate=false;this.adapter.setElementSize(this,size);this.animate=oldAnimate;},destroy:function(removeEl){if(this.shim){this.shim.remove();} -this.dd.unreg();this.proxy.parentNode.removeChild(this.proxy);if(removeEl){this.el.remove();}}});Ext.SplitBar.createProxy=function(dir){var proxy=new Ext.Element(document.createElement("div"));proxy.unselectable();var cls='x-splitbar-proxy';proxy.addClass(cls+' '+(dir==Ext.SplitBar.HORIZONTAL?cls+'-h':cls+'-v'));document.body.appendChild(proxy.dom);return proxy.dom;};Ext.SplitBar.BasicLayoutAdapter=function(){};Ext.SplitBar.BasicLayoutAdapter.prototype={init:function(s){},getElementSize:function(s){if(s.orientation==Ext.SplitBar.HORIZONTAL){return s.resizingEl.getWidth();}else{return s.resizingEl.getHeight();}},setElementSize:function(s,newSize,onComplete){if(s.orientation==Ext.SplitBar.HORIZONTAL){if(!s.animate){s.resizingEl.setWidth(newSize);if(onComplete){onComplete(s,newSize);}}else{s.resizingEl.setWidth(newSize,true,.1,onComplete,'easeOut');}}else{if(!s.animate){s.resizingEl.setHeight(newSize);if(onComplete){onComplete(s,newSize);}}else{s.resizingEl.setHeight(newSize,true,.1,onComplete,'easeOut');}}}};Ext.SplitBar.AbsoluteLayoutAdapter=function(container){this.basic=new Ext.SplitBar.BasicLayoutAdapter();this.container=Ext.get(container);};Ext.SplitBar.AbsoluteLayoutAdapter.prototype={init:function(s){this.basic.init(s);},getElementSize:function(s){return this.basic.getElementSize(s);},setElementSize:function(s,newSize,onComplete){this.basic.setElementSize(s,newSize,this.moveSplitter.createDelegate(this,[s]));},moveSplitter:function(s){var yes=Ext.SplitBar;switch(s.placement){case yes.LEFT:s.el.setX(s.resizingEl.getRight());break;case yes.RIGHT:s.el.setStyle("right",(this.container.getWidth()-s.resizingEl.getLeft())+"px");break;case yes.TOP:s.el.setY(s.resizingEl.getBottom());break;case yes.BOTTOM:s.el.setY(s.resizingEl.getTop()-s.el.getHeight());break;}}};Ext.SplitBar.VERTICAL=1;Ext.SplitBar.HORIZONTAL=2;Ext.SplitBar.LEFT=1;Ext.SplitBar.RIGHT=2;Ext.SplitBar.TOP=3;Ext.SplitBar.BOTTOM=4; - -Ext.View=function(container,tpl,config){this.el=Ext.get(container);if(typeof tpl=="string"){tpl=new Ext.Template(tpl);} -tpl.compile();this.tpl=tpl;Ext.apply(this,config);this.addEvents({"beforeclick":true,"click":true,"dblclick":true,"contextmenu":true,"selectionchange":true,"beforeselect":true});this.el.on({"click":this.onClick,"dblclick":this.onDblClick,"contextmenu":this.onContextMenu,scope:this});this.selections=[];this.nodes=[];this.cmp=new Ext.CompositeElementLite([]);if(this.store){this.setStore(this.store,true);} -Ext.View.superclass.constructor.call(this);};Ext.extend(Ext.View,Ext.util.Observable,{selectedClass:"x-view-selected",emptyText:"",getEl:function(){return this.el;},refresh:function(){var t=this.tpl;this.clearSelections();this.el.update("");var html=[];var records=this.store.getRange();if(records.length<1){this.el.update(this.emptyText);return;} -for(var i=0,len=records.length;i<len;i++){var data=this.prepareData(records[i].data,i,records[i]);html[html.length]=t.apply(data);} -this.el.update(html.join(""));this.nodes=this.el.dom.childNodes;this.updateIndexes(0);},prepareData:function(data){return data;},onUpdate:function(ds,record){this.clearSelections();var index=this.store.indexOf(record);var n=this.nodes[index];this.tpl.insertBefore(n,this.prepareData(record.data));n.parentNode.removeChild(n);this.updateIndexes(index,index);},onAdd:function(ds,records,index){this.clearSelections();if(this.nodes.length==0){this.refresh();return;} -var n=this.nodes[index];for(var i=0,len=records.length;i<len;i++){var d=this.prepareData(records[i].data);if(n){this.tpl.insertBefore(n,d);}else{this.tpl.append(this.el,d);}} -this.updateIndexes(index);},onRemove:function(ds,record,index){this.clearSelections();this.el.dom.removeChild(this.nodes[index]);this.updateIndexes(index);},refreshNode:function(index){this.onUpdate(this.store,this.store.getAt(index));},updateIndexes:function(startIndex,endIndex){var ns=this.nodes;startIndex=startIndex||0;endIndex=endIndex||ns.length-1;for(var i=startIndex;i<=endIndex;i++){ns[i].nodeIndex=i;}},setStore:function(store,initial){if(!initial&&this.store){this.store.un("datachanged",this.refresh);this.store.un("add",this.onAdd);this.store.un("remove",this.onRemove);this.store.un("update",this.onUpdate);this.store.un("clear",this.refresh);} -if(store){store.on("datachanged",this.refresh,this);store.on("add",this.onAdd,this);store.on("remove",this.onRemove,this);store.on("update",this.onUpdate,this);store.on("clear",this.refresh,this);} -this.store=store;if(store){this.refresh();}},findItemFromChild:function(node){var el=this.el.dom;if(!node||node.parentNode==el){return node;} -var p=node.parentNode;while(p&&p!=el){if(p.parentNode==el){return p;} -p=p.parentNode;} -return null;},onClick:function(e){var item=this.findItemFromChild(e.getTarget());if(item){var index=this.indexOf(item);if(this.onItemClick(item,index,e)!==false){this.fireEvent("click",this,index,item,e);}}else{this.clearSelections();}},onContextMenu:function(e){var item=this.findItemFromChild(e.getTarget());if(item){this.fireEvent("contextmenu",this,this.indexOf(item),item,e);}},onDblClick:function(e){var item=this.findItemFromChild(e.getTarget());if(item){this.fireEvent("dblclick",this,this.indexOf(item),item,e);}},onItemClick:function(item,index,e){if(this.fireEvent("beforeclick",this,index,item,e)===false){return false;} -if(this.multiSelect||this.singleSelect){if(this.multiSelect&&e.shiftKey&&this.lastSelection){this.select(this.getNodes(this.indexOf(this.lastSelection),index),false);}else{this.select(item,this.multiSelect&&e.ctrlKey);this.lastSelection=item;} -e.preventDefault();} -return true;},getSelectionCount:function(){return this.selections.length;},getSelectedNodes:function(){return this.selections;},getSelectedIndexes:function(){var indexes=[],s=this.selections;for(var i=0,len=s.length;i<len;i++){indexes.push(s[i].nodeIndex);} -return indexes;},clearSelections:function(suppressEvent){if(this.nodes&&(this.multiSelect||this.singleSelect)&&this.selections.length>0){this.cmp.elements=this.selections;this.cmp.removeClass(this.selectedClass);this.selections=[];if(!suppressEvent){this.fireEvent("selectionchange",this,this.selections);}}},isSelected:function(node){var s=this.selections;if(s.length<1){return false;} -node=this.getNode(node);return s.indexOf(node)!==-1;},select:function(nodeInfo,keepExisting,suppressEvent){if(nodeInfo instanceof Array){if(!keepExisting){this.clearSelections(true);} -for(var i=0,len=nodeInfo.length;i<len;i++){this.select(nodeInfo[i],true,true);}}else{var node=this.getNode(nodeInfo);if(node&&!this.isSelected(node)){if(!keepExisting){this.clearSelections(true);} -if(this.fireEvent("beforeselect",this,node,this.selections)!==false){Ext.fly(node).addClass(this.selectedClass);this.selections.push(node);if(!suppressEvent){this.fireEvent("selectionchange",this,this.selections);}}}}},getNode:function(nodeInfo){if(typeof nodeInfo=="string"){return document.getElementById(nodeInfo);}else if(typeof nodeInfo=="number"){return this.nodes[nodeInfo];} -return nodeInfo;},getNodes:function(start,end){var ns=this.nodes;start=start||0;end=typeof end=="undefined"?ns.length-1:end;var nodes=[];if(start<=end){for(var i=start;i<=end;i++){nodes.push(ns[i]);}}else{for(var i=start;i>=end;i--){nodes.push(ns[i]);}} -return nodes;},indexOf:function(node){node=this.getNode(node);if(typeof node.nodeIndex=="number"){return node.nodeIndex;} -var ns=this.nodes;for(var i=0,len=ns.length;i<len;i++){if(ns[i]==node){return i;}} -return-1;}}); - -Ext.JsonView=function(container,tpl,config){Ext.JsonView.superclass.constructor.call(this,container,tpl,config);var um=this.el.getUpdateManager();um.setRenderer(this);um.on("update",this.onLoad,this);um.on("failure",this.onLoadException,this);this.addEvents({'beforerender':true,'load':true,'loadexception':true});};Ext.extend(Ext.JsonView,Ext.View,{jsonRoot:"",refresh:function(){this.clearSelections();this.el.update("");var html=[];var o=this.jsonData;if(o&&o.length>0){for(var i=0,len=o.length;i<len;i++){var data=this.prepareData(o[i],i,o);html[html.length]=this.tpl.apply(data);}}else{html.push(this.emptyText);} -this.el.update(html.join(""));this.nodes=this.el.dom.childNodes;this.updateIndexes(0);},load:function(){var um=this.el.getUpdateManager();um.update.apply(um,arguments);},render:function(el,response){this.clearSelections();this.el.update("");var o;try{o=Ext.util.JSON.decode(response.responseText);if(this.jsonRoot){o=eval("o."+this.jsonRoot);}}catch(e){} -this.jsonData=o;this.beforeRender();this.refresh();},getCount:function(){return this.jsonData?this.jsonData.length:0;},getNodeData:function(node){if(node instanceof Array){var data=[];for(var i=0,len=node.length;i<len;i++){data.push(this.getNodeData(node[i]));} -return data;} -return this.jsonData[this.indexOf(node)]||null;},beforeRender:function(){this.snapshot=this.jsonData;if(this.sortInfo){this.sort.apply(this,this.sortInfo);} -this.fireEvent("beforerender",this,this.jsonData);},onLoad:function(el,o){this.fireEvent("load",this,this.jsonData,o);},onLoadException:function(el,o){this.fireEvent("loadexception",this,o);},filter:function(property,value){if(this.jsonData){var data=[];var ss=this.snapshot;if(typeof value=="string"){var vlen=value.length;if(vlen==0){this.clearFilter();return;} -value=value.toLowerCase();for(var i=0,len=ss.length;i<len;i++){var o=ss[i];if(o[property].substr(0,vlen).toLowerCase()==value){data.push(o);}}}else if(value.exec){for(var i=0,len=ss.length;i<len;i++){var o=ss[i];if(value.test(o[property])){data.push(o);}}}else{return;} -this.jsonData=data;this.refresh();}},filterBy:function(fn,scope){if(this.jsonData){var data=[];var ss=this.snapshot;for(var i=0,len=ss.length;i<len;i++){var o=ss[i];if(fn.call(scope||this,o)){data.push(o);}} -this.jsonData=data;this.refresh();}},clearFilter:function(){if(this.snapshot&&this.jsonData!=this.snapshot){this.jsonData=this.snapshot;this.refresh();}},sort:function(property,dir,sortType){this.sortInfo=Array.prototype.slice.call(arguments,0);if(this.jsonData){var p=property;var dsc=dir&&dir.toLowerCase()=="desc";var f=function(o1,o2){var v1=sortType?sortType(o1[p]):o1[p];var v2=sortType?sortType(o2[p]):o2[p];;if(v1<v2){return dsc?+1:-1;}else if(v1>v2){return dsc?-1:+1;}else{return 0;}};this.jsonData.sort(f);this.refresh();if(this.jsonData!=this.snapshot){this.snapshot.sort(f);}}}}); - -Ext.ColorPalette=function(config){Ext.ColorPalette.superclass.constructor.call(this,config);this.addEvents({select:true});if(this.handler){this.on("select",this.handler,this.scope,true);}};Ext.extend(Ext.ColorPalette,Ext.Component,{itemCls:"x-color-palette",value:null,clickEvent:'click',ctype:"Ext.ColorPalette",allowReselect:false,colors:["000000","993300","333300","003300","003366","000080","333399","333333","800000","FF6600","808000","008000","008080","0000FF","666699","808080","FF0000","FF9900","99CC00","339966","33CCCC","3366FF","800080","969696","FF00FF","FFCC00","FFFF00","00FF00","00FFFF","00CCFF","993366","C0C0C0","FF99CC","FFCC99","FFFF99","CCFFCC","CCFFFF","99CCFF","CC99FF","FFFFFF"],onRender:function(container,position){var t=new Ext.MasterTemplate('<tpl><a href="#" class="color-{0}" hidefocus="on"><em><span style="background:#{0}" unselectable="on"> </span></em></a></tpl>');var c=this.colors;for(var i=0,len=c.length;i<len;i++){t.add([c[i]]);} -var el=document.createElement("div");el.className=this.itemCls;t.overwrite(el);container.dom.insertBefore(el,position);this.el=Ext.get(el);this.el.on(this.clickEvent,this.handleClick,this,{delegate:"a"});if(this.clickEvent!='click'){this.el.on('click',Ext.emptyFn,this,{delegate:"a",preventDefault:true});}},afterRender:function(){Ext.ColorPalette.superclass.afterRender.call(this);if(this.value){var s=this.value;this.value=null;this.select(s);}},handleClick:function(e,t){e.preventDefault();if(!this.disabled){var c=t.className.match(/(?:^|\s)color-(.{6})(?:\s|$)/)[1];this.select(c.toUpperCase());}},select:function(color){color=color.replace("#","");if(color!=this.value||this.allowReselect){var el=this.el;if(this.value){el.child("a.color-"+this.value).removeClass("x-color-palette-sel");} -el.child("a.color-"+color).addClass("x-color-palette-sel");this.value=color;this.fireEvent("select",this,color);}}}); - -Ext.DatePicker=function(config){Ext.DatePicker.superclass.constructor.call(this,config);this.value=config&&config.value?config.value.clearTime():new Date().clearTime();this.addEvents({select:true});if(this.handler){this.on("select",this.handler,this.scope||this);} -if(!this.disabledDatesRE&&this.disabledDates){var dd=this.disabledDates;var re="(?:";for(var i=0;i<dd.length;i++){re+=dd[i];if(i!=dd.length-1)re+="|";} -this.disabledDatesRE=new RegExp(re+")");}};Ext.extend(Ext.DatePicker,Ext.Component,{todayText:"Today",okText:" OK ",cancelText:"Cancel",todayTip:"{0} (Spacebar)",minDate:null,maxDate:null,minText:"This date is before the minimum date",maxText:"This date is after the maximum date",format:"m/d/y",disabledDays:null,disabledDaysText:"",disabledDatesRE:null,disabledDatesText:"",constrainToViewport:true,monthNames:Date.monthNames,dayNames:Date.dayNames,nextText:'Next Month (Control+Right)',prevText:'Previous Month (Control+Left)',monthYearText:'Choose a month (Control+Up/Down to move years)',startDay:0,setValue:function(value){var old=this.value;this.value=value.clearTime(true);if(this.el){this.update(this.value);}},getValue:function(){return this.value;},focus:function(){if(this.el){this.update(this.activeDate);}},onRender:function(container,position){var m=['<table cellspacing="0">','<tr><td class="x-date-left"><a href="#" title="',this.prevText,'"> </a></td><td class="x-date-middle" align="center"></td><td class="x-date-right"><a href="#" title="',this.nextText,'"> </a></td></tr>','<tr><td colspan="3"><table class="x-date-inner" cellspacing="0"><thead><tr>'];var dn=this.dayNames;for(var i=0;i<7;i++){var d=this.startDay+i;if(d>6){d=d-7;} -m.push("<th><span>",dn[d].substr(0,1),"</span></th>");} -m[m.length]="</tr></thead><tbody><tr>";for(var i=0;i<42;i++){if(i%7==0&&i!=0){m[m.length]="</tr><tr>";} -m[m.length]='<td><a href="#" hidefocus="on" class="x-date-date" tabIndex="1"><em><span></span></em></a></td>';} -m[m.length]='</tr></tbody></table></td></tr><tr><td colspan="3" class="x-date-bottom" align="center"></td></tr></table><div class="x-date-mp"></div>';var el=document.createElement("div");el.className="x-date-picker";el.innerHTML=m.join("");container.dom.insertBefore(el,position);this.el=Ext.get(el);this.eventEl=Ext.get(el.firstChild);new Ext.util.ClickRepeater(this.el.child("td.x-date-left a"),{handler:this.showPrevMonth,scope:this,preventDefault:true,stopDefault:true});new Ext.util.ClickRepeater(this.el.child("td.x-date-right a"),{handler:this.showNextMonth,scope:this,preventDefault:true,stopDefault:true});this.eventEl.on("mousewheel",this.handleMouseWheel,this);this.monthPicker=this.el.down('div.x-date-mp');this.monthPicker.enableDisplayMode('block');var kn=new Ext.KeyNav(this.eventEl,{"left":function(e){e.ctrlKey?this.showPrevMonth():this.update(this.activeDate.add("d",-1));},"right":function(e){e.ctrlKey?this.showNextMonth():this.update(this.activeDate.add("d",1));},"up":function(e){e.ctrlKey?this.showNextYear():this.update(this.activeDate.add("d",-7));},"down":function(e){e.ctrlKey?this.showPrevYear():this.update(this.activeDate.add("d",7));},"pageUp":function(e){this.showNextMonth();},"pageDown":function(e){this.showPrevMonth();},"enter":function(e){e.stopPropagation();return true;},scope:this});this.eventEl.on("click",this.handleDateClick,this,{delegate:"a.x-date-date"});this.eventEl.addKeyListener(Ext.EventObject.SPACE,this.selectToday,this);this.el.unselectable();this.cells=this.el.select("table.x-date-inner tbody td");this.textNodes=this.el.query("table.x-date-inner tbody span");this.mbtn=new Ext.Button(this.el.child("td.x-date-middle",true),{text:" ",tooltip:this.monthYearText});this.mbtn.on('click',this.showMonthPicker,this);this.mbtn.el.child(this.mbtn.menuClassTarget).addClass("x-btn-with-menu");var today=(new Date()).dateFormat(this.format);var todayBtn=new Ext.Button(this.el.child("td.x-date-bottom",true),{text:String.format(this.todayText,today),tooltip:String.format(this.todayTip,today),handler:this.selectToday,scope:this});if(Ext.isIE){this.el.repaint();} -this.update(this.value);},createMonthPicker:function(){if(!this.monthPicker.dom.firstChild){var buf=['<table border="0" cellspacing="0">'];for(var i=0;i<6;i++){buf.push('<tr><td class="x-date-mp-month"><a href="#">',this.monthNames[i].substr(0,3),'</a></td>','<td class="x-date-mp-month x-date-mp-sep"><a href="#">',this.monthNames[i+6].substr(0,3),'</a></td>',i==0?'<td class="x-date-mp-ybtn" align="center"><a class="x-date-mp-prev"></a></td><td class="x-date-mp-ybtn" align="center"><a class="x-date-mp-next"></a></td>':'<td class="x-date-mp-year"><a href="#"></a></td><td class="x-date-mp-year"><a href="#"></a></td></tr>');} -buf.push('<tr class="x-date-mp-btns"><td colspan="4"><button type="button" class="x-date-mp-ok">',this.okText,'</button><button type="button" class="x-date-mp-cancel">',this.cancelText,'</button></td></tr>','</table>');this.monthPicker.update(buf.join(''));this.monthPicker.on('click',this.onMonthClick,this);this.monthPicker.on('dblclick',this.onMonthDblClick,this);this.mpMonths=this.monthPicker.select('td.x-date-mp-month');this.mpYears=this.monthPicker.select('td.x-date-mp-year');this.mpMonths.each(function(m,a,i){i+=1;if((i%2)==0){m.dom.xmonth=5+Math.round(i*.5);}else{m.dom.xmonth=Math.round((i-1)*.5);}});}},showMonthPicker:function(){this.createMonthPicker();var size=this.el.getSize();this.monthPicker.setSize(size);this.monthPicker.child('table').setSize(size);this.mpSelMonth=(this.activeDate||this.value).getMonth();this.updateMPMonth(this.mpSelMonth);this.mpSelYear=(this.activeDate||this.value).getFullYear();this.updateMPYear(this.mpSelYear);this.monthPicker.slideIn('t',{duration:.2});},updateMPYear:function(y){this.mpyear=y;var ys=this.mpYears.elements;for(var i=1;i<=10;i++){var td=ys[i-1],y2;if((i%2)==0){y2=y+Math.round(i*.5);td.firstChild.innerHTML=y2;td.xyear=y2;}else{y2=y-(5-Math.round(i*.5));td.firstChild.innerHTML=y2;td.xyear=y2;} -this.mpYears.item(i-1)[y2==this.mpSelYear?'addClass':'removeClass']('x-date-mp-sel');}},updateMPMonth:function(sm){this.mpMonths.each(function(m,a,i){m[m.dom.xmonth==sm?'addClass':'removeClass']('x-date-mp-sel');});},selectMPMonth:function(m){},onMonthClick:function(e,t){e.stopEvent();var el=new Ext.Element(t),pn;if(el.is('button.x-date-mp-cancel')){this.hideMonthPicker();} -else if(el.is('button.x-date-mp-ok')){this.update(new Date(this.mpSelYear,this.mpSelMonth,(this.activeDate||this.value).getDate()));this.hideMonthPicker();} -else if(pn=el.up('td.x-date-mp-month',2)){this.mpMonths.removeClass('x-date-mp-sel');pn.addClass('x-date-mp-sel');this.mpSelMonth=pn.dom.xmonth;} -else if(pn=el.up('td.x-date-mp-year',2)){this.mpYears.removeClass('x-date-mp-sel');pn.addClass('x-date-mp-sel');this.mpSelYear=pn.dom.xyear;} -else if(el.is('a.x-date-mp-prev')){this.updateMPYear(this.mpyear-10);} -else if(el.is('a.x-date-mp-next')){this.updateMPYear(this.mpyear+10);}},onMonthDblClick:function(e,t){e.stopEvent();var el=new Ext.Element(t),pn;if(pn=el.up('td.x-date-mp-month',2)){this.update(new Date(this.mpSelYear,pn.dom.xmonth,(this.activeDate||this.value).getDate()));this.hideMonthPicker();} -else if(pn=el.up('td.x-date-mp-year',2)){this.update(new Date(pn.dom.xyear,this.mpSelMonth,(this.activeDate||this.value).getDate()));this.hideMonthPicker();}},hideMonthPicker:function(disableAnim){if(this.monthPicker){if(disableAnim===true){this.monthPicker.hide();}else{this.monthPicker.slideOut('t',{duration:.2});}}},showPrevMonth:function(e){this.update(this.activeDate.add("mo",-1));},showNextMonth:function(e){this.update(this.activeDate.add("mo",1));},showPrevYear:function(){this.update(this.activeDate.add("y",-1));},showNextYear:function(){this.update(this.activeDate.add("y",1));},handleMouseWheel:function(e){var delta=e.getWheelDelta();if(delta>0){this.showPrevMonth();e.stopEvent();}else if(delta<0){this.showNextMonth();e.stopEvent();}},handleDateClick:function(e,t){e.stopEvent();if(t.dateValue&&!Ext.fly(t.parentNode).hasClass("x-date-disabled")){this.setValue(new Date(t.dateValue));this.fireEvent("select",this,this.value);}},selectToday:function(){this.setValue(new Date().clearTime());this.fireEvent("select",this,this.value);},update:function(date){var vd=this.activeDate;this.activeDate=date;if(vd&&this.el){var t=date.getTime();if(vd.getMonth()==date.getMonth()&&vd.getFullYear()==date.getFullYear()){this.cells.removeClass("x-date-selected");this.cells.each(function(c){if(c.dom.firstChild.dateValue==t){c.addClass("x-date-selected");setTimeout(function(){try{c.dom.firstChild.focus();}catch(e){}},50);return false;}});return;}} -var days=date.getDaysInMonth();var firstOfMonth=date.getFirstDateOfMonth();var startingPos=firstOfMonth.getDay()-this.startDay;if(startingPos<=this.startDay){startingPos+=7;} -var pm=date.add("mo",-1);var prevStart=pm.getDaysInMonth()-startingPos;var cells=this.cells.elements;var textEls=this.textNodes;days+=startingPos;var day=86400000;var d=(new Date(pm.getFullYear(),pm.getMonth(),prevStart)).clearTime();var today=new Date().clearTime().getTime();var sel=date.clearTime().getTime();var min=this.minDate?this.minDate.clearTime():Number.NEGATIVE_INFINITY;var max=this.maxDate?this.maxDate.clearTime():Number.POSITIVE_INFINITY;var ddMatch=this.disabledDatesRE;var ddText=this.disabledDatesText;var ddays=this.disabledDays?this.disabledDays.join(""):false;var ddaysText=this.disabledDaysText;var format=this.format;var setCellClass=function(cal,cell){cell.title="";var t=d.getTime();cell.firstChild.dateValue=t;if(t==today){cell.className+=" x-date-today";cell.title=cal.todayText;} -if(t==sel){cell.className+=" x-date-selected";setTimeout(function(){try{cell.firstChild.focus();}catch(e){}},50);} -if(t<min){cell.className=" x-date-disabled";cell.title=cal.minText;return;} -if(t>max){cell.className=" x-date-disabled";cell.title=cal.maxText;return;} -if(ddays){if(ddays.indexOf(d.getDay())!=-1){cell.title=ddaysText;cell.className=" x-date-disabled";}} -if(ddMatch&&format){var fvalue=d.dateFormat(format);if(ddMatch.test(fvalue)){cell.title=ddText.replace("%0",fvalue);cell.className=" x-date-disabled";}}};var i=0;for(;i<startingPos;i++){textEls[i].innerHTML=(++prevStart);d.setDate(d.getDate()+1);cells[i].className="x-date-prevday";setCellClass(this,cells[i]);} -for(;i<days;i++){intDay=i-startingPos+1;textEls[i].innerHTML=(intDay);d.setDate(d.getDate()+1);cells[i].className="x-date-active";setCellClass(this,cells[i]);} -var extraDays=0;for(;i<42;i++){textEls[i].innerHTML=(++extraDays);d.setDate(d.getDate()+1);cells[i].className="x-date-nextday";setCellClass(this,cells[i]);} -this.mbtn.setText(this.monthNames[date.getMonth()]+" "+date.getFullYear());if(!this.internalRender){var main=this.el.dom.firstChild;var w=main.offsetWidth;this.el.setWidth(w+this.el.getBorderWidth("lr"));Ext.fly(main).setWidth(w);this.internalRender=true;if(Ext.isOpera&&!this.secondPass){main.rows[0].cells[1].style.width=(w-(main.rows[0].cells[0].offsetWidth+main.rows[0].cells[2].offsetWidth))+"px";this.secondPass=true;this.update.defer(10,this,[date]);}}}}); - -Ext.TabPanel=function(container,config){this.el=Ext.get(container,true);if(config){if(typeof config=="boolean"){this.tabPosition=config?"bottom":"top";}else{Ext.apply(this,config);}} -if(this.tabPosition=="bottom"){this.bodyEl=Ext.get(this.createBody(this.el.dom));this.el.addClass("x-tabs-bottom");} -this.stripWrap=Ext.get(this.createStrip(this.el.dom),true);this.stripEl=Ext.get(this.createStripList(this.stripWrap.dom),true);this.stripBody=Ext.get(this.stripWrap.dom.firstChild.firstChild,true);if(Ext.isIE){Ext.fly(this.stripWrap.dom.firstChild).setStyle("overflow-x","hidden");} -if(this.tabPosition!="bottom"){this.bodyEl=Ext.get(this.createBody(this.el.dom));this.el.addClass("x-tabs-top");} -this.items=[];this.bodyEl.setStyle("position","relative");this.active=null;this.activateDelegate=this.activate.createDelegate(this);this.addEvents({"tabchange":true,"beforetabchange":true});Ext.EventManager.onWindowResize(this.onResize,this);this.cpad=this.el.getPadding("lr");this.hiddenCount=0;Ext.TabPanel.superclass.constructor.call(this);};Ext.extend(Ext.TabPanel,Ext.util.Observable,{tabPosition:"top",currentTabWidth:0,minTabWidth:40,maxTabWidth:250,preferredTabWidth:175,resizeTabs:false,monitorResize:true,addTab:function(id,text,content,closable){var item=new Ext.TabPanelItem(this,id,text,closable);this.addTabItem(item);if(content){item.setContent(content);} -return item;},getTab:function(id){return this.items[id];},hideTab:function(id){var t=this.items[id];if(!t.isHidden()){t.setHidden(true);this.hiddenCount++;this.autoSizeTabs();}},unhideTab:function(id){var t=this.items[id];if(t.isHidden()){t.setHidden(false);this.hiddenCount--;this.autoSizeTabs();}},addTabItem:function(item){this.items[item.id]=item;this.items.push(item);if(this.resizeTabs){item.setWidth(this.currentTabWidth||this.preferredTabWidth);this.autoSizeTabs();}else{item.autoSize();}},removeTab:function(id){var items=this.items;var tab=items[id];if(!tab)return;var index=items.indexOf(tab);if(this.active==tab&&items.length>1){var newTab=this.getNextAvailable(index);if(newTab)newTab.activate();} -this.stripEl.dom.removeChild(tab.pnode.dom);if(tab.bodyEl.dom.parentNode==this.bodyEl.dom){this.bodyEl.dom.removeChild(tab.bodyEl.dom);} -items.splice(index,1);delete this.items[tab.id];tab.fireEvent("close",tab);tab.purgeListeners();this.autoSizeTabs();},getNextAvailable:function(start){var items=this.items;var index=start;while(index<items.length){var item=items[++index];if(item&&!item.isHidden()){return item;}} -index=start;while(index>=0){var item=items[--index];if(item&&!item.isHidden()){return item;}} -return null;},disableTab:function(id){var tab=this.items[id];if(tab&&this.active!=tab){tab.disable();}},enableTab:function(id){var tab=this.items[id];tab.enable();},activate:function(id){var tab=this.items[id];if(!tab){return null;} -if(tab==this.active){return tab;} -var e={};this.fireEvent("beforetabchange",this,e,tab);if(e.cancel!==true&&!tab.disabled){if(this.active){this.active.hide();} -this.active=this.items[id];this.active.show();this.fireEvent("tabchange",this,this.active);} -return tab;},getActiveTab:function(){return this.active;},syncHeight:function(targetHeight){var height=(targetHeight||this.el.getHeight())-this.el.getBorderWidth("tb")-this.el.getPadding("tb");var bm=this.bodyEl.getMargins();var newHeight=height-(this.stripWrap.getHeight()||0)-(bm.top+bm.bottom);this.bodyEl.setHeight(newHeight);return newHeight;},onResize:function(){if(this.monitorResize){this.autoSizeTabs();}},beginUpdate:function(){this.updating=true;},endUpdate:function(){this.updating=false;this.autoSizeTabs();},autoSizeTabs:function(){var count=this.items.length;var vcount=count-this.hiddenCount;if(!this.resizeTabs||count<1||vcount<1||this.updating)return;var w=Math.max(this.el.getWidth()-this.cpad,10);var availWidth=Math.floor(w/vcount);var b=this.stripBody;if(b.getWidth()>w){var tabs=this.items;this.setTabWidth(Math.max(availWidth,this.minTabWidth)-2);if(availWidth<this.minTabWidth){}}else{if(this.currentTabWidth<this.preferredTabWidth){this.setTabWidth(Math.min(availWidth,this.preferredTabWidth)-2);}}},getCount:function(){return this.items.length;},setTabWidth:function(width){this.currentTabWidth=width;for(var i=0,len=this.items.length;i<len;i++){if(!this.items[i].isHidden())this.items[i].setWidth(width);}},destroy:function(removeEl){Ext.EventManager.removeResizeListener(this.onResize,this);for(var i=0,len=this.items.length;i<len;i++){this.items[i].purgeListeners();} -if(removeEl===true){this.el.update("");this.el.remove();}}});Ext.TabPanelItem=function(tabPanel,id,text,closable){this.tabPanel=tabPanel;this.id=id;this.disabled=false;this.text=text;this.loaded=false;this.closable=closable;this.bodyEl=Ext.get(tabPanel.createItemBody(tabPanel.bodyEl.dom,id));this.bodyEl.setVisibilityMode(Ext.Element.VISIBILITY);this.bodyEl.setStyle("display","block");this.bodyEl.setStyle("zoom","1");this.hideAction();var els=tabPanel.createStripElements(tabPanel.stripEl.dom,text,closable);this.el=Ext.get(els.el,true);this.inner=Ext.get(els.inner,true);this.textEl=Ext.get(this.el.dom.firstChild.firstChild.firstChild,true);this.pnode=Ext.get(els.el.parentNode,true);this.el.on("mousedown",this.onTabMouseDown,this);this.el.on("click",this.onTabClick,this);if(closable){var c=Ext.get(els.close,true);c.dom.title=this.closeText;c.addClassOnOver("close-over");c.on("click",this.closeClick,this);} -this.addEvents({"activate":true,"beforeclose":true,"close":true,"deactivate":true});this.hidden=false;Ext.TabPanelItem.superclass.constructor.call(this);};Ext.extend(Ext.TabPanelItem,Ext.util.Observable,{purgeListeners:function(){Ext.util.Observable.prototype.purgeListeners.call(this);this.el.removeAllListeners();},show:function(){this.pnode.addClass("on");this.showAction();if(Ext.isOpera){this.tabPanel.stripWrap.repaint();} -this.fireEvent("activate",this.tabPanel,this);},isActive:function(){return this.tabPanel.getActiveTab()==this;},hide:function(){this.pnode.removeClass("on");this.hideAction();this.fireEvent("deactivate",this.tabPanel,this);},hideAction:function(){this.bodyEl.hide();this.bodyEl.setStyle("position","absolute");this.bodyEl.setLeft("-20000px");this.bodyEl.setTop("-20000px");},showAction:function(){this.bodyEl.setStyle("position","relative");this.bodyEl.setTop("");this.bodyEl.setLeft("");this.bodyEl.show();},setTooltip:function(text){if(Ext.QuickTips&&Ext.QuickTips.isEnabled()){this.textEl.dom.qtip=text;this.textEl.dom.removeAttribute('title');}else{this.textEl.dom.title=text;}},onTabClick:function(e){e.preventDefault();this.tabPanel.activate(this.id);},onTabMouseDown:function(e){e.preventDefault();this.tabPanel.activate(this.id);},getWidth:function(){return this.inner.getWidth();},setWidth:function(width){var iwidth=width-this.pnode.getPadding("lr");this.inner.setWidth(iwidth);this.textEl.setWidth(iwidth-this.inner.getPadding("lr"));this.pnode.setWidth(width);},setHidden:function(hidden){this.hidden=hidden;this.pnode.setStyle("display",hidden?"none":"");},isHidden:function(){return this.hidden;},getText:function(){return this.text;},autoSize:function(){this.textEl.setWidth(1);this.setWidth(this.textEl.dom.scrollWidth+this.pnode.getPadding("lr")+this.inner.getPadding("lr"));},setText:function(text){this.text=text;this.textEl.update(text);this.setTooltip(text);if(!this.tabPanel.resizeTabs){this.autoSize();}},activate:function(){this.tabPanel.activate(this.id);},disable:function(){if(this.tabPanel.active!=this){this.disabled=true;this.pnode.addClass("disabled");}},enable:function(){this.disabled=false;this.pnode.removeClass("disabled");},setContent:function(content,loadScripts){this.bodyEl.update(content,loadScripts);},getUpdateManager:function(){return this.bodyEl.getUpdateManager();},setUrl:function(url,params,loadOnce){if(this.refreshDelegate){this.un('activate',this.refreshDelegate);} -this.refreshDelegate=this._handleRefresh.createDelegate(this,[url,params,loadOnce]);this.on("activate",this.refreshDelegate);return this.bodyEl.getUpdateManager();},_handleRefresh:function(url,params,loadOnce){if(!loadOnce||!this.loaded){var updater=this.bodyEl.getUpdateManager();updater.update(url,params,this._setLoaded.createDelegate(this));}},refresh:function(){if(this.refreshDelegate){this.loaded=false;this.refreshDelegate();}},_setLoaded:function(){this.loaded=true;},closeClick:function(e){var o={};e.stopEvent();this.fireEvent("beforeclose",this,o);if(o.cancel!==true){this.tabPanel.removeTab(this.id);}},closeText:"Close this tab"});Ext.TabPanel.prototype.createStrip=function(container){var strip=document.createElement("div");strip.className="x-tabs-wrap";container.appendChild(strip);return strip;};Ext.TabPanel.prototype.createStripList=function(strip){strip.innerHTML='<div class="x-tabs-strip-wrap"><table class="x-tabs-strip" cellspacing="0" cellpadding="0" border="0"><tbody><tr></tr></tbody></table></div>';return strip.firstChild.firstChild.firstChild.firstChild;};Ext.TabPanel.prototype.createBody=function(container){var body=document.createElement("div");Ext.id(body,"tab-body");Ext.fly(body).addClass("x-tabs-body");container.appendChild(body);return body;};Ext.TabPanel.prototype.createItemBody=function(bodyEl,id){var body=Ext.getDom(id);if(!body){body=document.createElement("div");body.id=id;} -Ext.fly(body).addClass("x-tabs-item-body");bodyEl.insertBefore(body,bodyEl.firstChild);return body;};Ext.TabPanel.prototype.createStripElements=function(stripEl,text,closable){var td=document.createElement("td");stripEl.appendChild(td);if(closable){td.className="x-tabs-closable";if(!this.closeTpl){this.closeTpl=new Ext.Template('<a href="#" class="x-tabs-right"><span class="x-tabs-left"><em class="x-tabs-inner">'+'<span unselectable="on"'+(this.disableTooltips?'':' title="{text}"')+' class="x-tabs-text">{text}</span>'+'<div unselectable="on" class="close-icon"> </div></em></span></a>');} -var el=this.closeTpl.overwrite(td,{"text":text});var close=el.getElementsByTagName("div")[0];var inner=el.getElementsByTagName("em")[0];return{"el":el,"close":close,"inner":inner};}else{if(!this.tabTpl){this.tabTpl=new Ext.Template('<a href="#" class="x-tabs-right"><span class="x-tabs-left"><em class="x-tabs-inner">'+'<span unselectable="on"'+(this.disableTooltips?'':' title="{text}"')+' class="x-tabs-text">{text}</span></em></span></a>');} -var el=this.tabTpl.overwrite(td,{"text":text});var inner=el.getElementsByTagName("em")[0];return{"el":el,"inner":inner};}}; - -Ext.Button=function(renderTo,config){Ext.apply(this,config);this.addEvents({"click":true,"toggle":true,'mouseover':true,'mouseout':true});if(this.menu){this.menu=Ext.menu.MenuMgr.get(this.menu);} -if(renderTo){this.render(renderTo);} -Ext.Button.superclass.constructor.call(this);};Ext.extend(Ext.Button,Ext.util.Observable,{hidden:false,disabled:false,pressed:false,tabIndex:undefined,enableToggle:false,menu:undefined,menuAlign:"tl-bl?",iconCls:undefined,type:'button',menuClassTarget:'tr',clickEvent:'click',handleMouseEvents:true,tooltipType:'qtip',render:function(renderTo){var btn;if(this.hideParent){this.parentEl=Ext.get(renderTo);} -if(!this.dhconfig){if(!this.template){if(!Ext.Button.buttonTemplate){Ext.Button.buttonTemplate=new Ext.Template('<table border="0" cellpadding="0" cellspacing="0" class="x-btn-wrap"><tbody><tr>','<td class="x-btn-left"><i> </i></td><td class="x-btn-center"><em unselectable="on"><button class="x-btn-text" type="{1}">{0}</button></em></td><td class="x-btn-right"><i> </i></td>',"</tr></tbody></table>");} -this.template=Ext.Button.buttonTemplate;} -btn=this.template.append(renderTo,[this.text||' ',this.type],true);var btnEl=btn.child("button:first");btnEl.on('focus',this.onFocus,this);btnEl.on('blur',this.onBlur,this);if(this.cls){btn.addClass(this.cls);} -if(this.icon){btnEl.setStyle('background-image','url('+this.icon+')');} -if(this.iconCls){btnEl.addClass(this.iconCls);if(!this.cls){btn.addClass(this.text?'x-btn-text-icon':'x-btn-icon');}} -if(this.tabIndex!==undefined){btnEl.dom.tabIndex=this.tabIndex;} -if(this.tooltip){if(typeof this.tooltip=='object'){Ext.QuickTips.tips(Ext.apply({target:btnEl.id},this.tooltip));}else{btnEl.dom[this.tooltipType]=this.tooltip;}}}else{btn=Ext.DomHelper.append(Ext.get(renderTo).dom,this.dhconfig,true);} -this.el=btn;if(this.id){this.el.dom.id=this.el.id=this.id;} -if(this.menu){this.el.child(this.menuClassTarget).addClass("x-btn-with-menu");this.menu.on("show",this.onMenuShow,this);this.menu.on("hide",this.onMenuHide,this);} -btn.addClass("x-btn");if(Ext.isIE&&!Ext.isIE7){this.autoWidth.defer(1,this);}else{this.autoWidth();} -if(this.handleMouseEvents){btn.on("mouseover",this.onMouseOver,this);btn.on("mouseout",this.onMouseOut,this);btn.on("mousedown",this.onMouseDown,this);} -btn.on(this.clickEvent,this.onClick,this);if(this.hidden){this.hide();} -if(this.disabled){this.disable();} -Ext.ButtonToggleMgr.register(this);if(this.pressed){this.el.addClass("x-btn-pressed");} -if(this.repeat){var repeater=new Ext.util.ClickRepeater(btn,typeof this.repeat=="object"?this.repeat:{});repeater.on("click",this.onClick,this);}},getEl:function(){return this.el;},destroy:function(){Ext.ButtonToggleMgr.unregister(this);this.el.removeAllListeners();this.purgeListeners();this.el.remove();},autoWidth:function(){if(this.el){this.el.setWidth("auto");if(Ext.isIE7&&Ext.isStrict){var ib=this.el.child('button');if(ib&&ib.getWidth()>20){ib.clip();ib.setWidth(Ext.util.TextMetrics.measure(ib,this.text).width+ib.getFrameWidth('lr'));}} -if(this.minWidth){if(this.hidden){this.el.beginMeasure();} -if(this.el.getWidth()<this.minWidth){this.el.setWidth(this.minWidth);} -if(this.hidden){this.el.endMeasure();}}}},setHandler:function(handler,scope){this.handler=handler;this.scope=scope;},setText:function(text){this.text=text;if(this.el){this.el.child("td.x-btn-center button.x-btn-text").update(text);} -this.autoWidth();},getText:function(){return this.text;},show:function(){this.hidden=false;if(this.el){this[this.hideParent?'parentEl':'el'].setStyle("display","");}},hide:function(){this.hidden=true;if(this.el){this[this.hideParent?'parentEl':'el'].setStyle("display","none");}},setVisible:function(visible){if(visible){this.show();}else{this.hide();}},toggle:function(state){state=state===undefined?!this.pressed:state;if(state!=this.pressed){if(state){this.el.addClass("x-btn-pressed");this.pressed=true;this.fireEvent("toggle",this,true);}else{this.el.removeClass("x-btn-pressed");this.pressed=false;this.fireEvent("toggle",this,false);} -if(this.toggleHandler){this.toggleHandler.call(this.scope||this,this,state);}}},focus:function(){this.el.child('button:first').focus();},disable:function(){if(this.el){this.el.addClass("x-btn-disabled");} -this.disabled=true;},enable:function(){if(this.el){this.el.removeClass("x-btn-disabled");} -this.disabled=false;},setDisabled:function(v){this[v!==true?"enable":"disable"]();},onClick:function(e){if(e){e.preventDefault();} -if(e.button!=0){return;} -if(!this.disabled){if(this.enableToggle){this.toggle();} -if(this.menu&&!this.menu.isVisible()){this.menu.show(this.el,this.menuAlign);} -this.fireEvent("click",this,e);if(this.handler){this.el.removeClass("x-btn-over");this.handler.call(this.scope||this,this,e);}}},onMouseOver:function(e){if(!this.disabled){this.el.addClass("x-btn-over");this.fireEvent('mouseover',this,e);}},onMouseOut:function(e){if(!e.within(this.el,true)){this.el.removeClass("x-btn-over");this.fireEvent('mouseout',this,e);}},onFocus:function(e){if(!this.disabled){this.el.addClass("x-btn-focus");}},onBlur:function(e){this.el.removeClass("x-btn-focus");},onMouseDown:function(e){if(!this.disabled&&e.button==0){this.el.addClass("x-btn-click");Ext.get(document).on('mouseup',this.onMouseUp,this);}},onMouseUp:function(e){if(e.button==0){this.el.removeClass("x-btn-click");Ext.get(document).un('mouseup',this.onMouseUp,this);}},onMenuShow:function(e){this.el.addClass("x-btn-menu-active");},onMenuHide:function(e){this.el.removeClass("x-btn-menu-active");}});Ext.ButtonToggleMgr=function(){var groups={};function toggleGroup(btn,state){if(state){var g=groups[btn.toggleGroup];for(var i=0,l=g.length;i<l;i++){if(g[i]!=btn){g[i].toggle(false);}}}} -return{register:function(btn){if(!btn.toggleGroup){return;} -var g=groups[btn.toggleGroup];if(!g){g=groups[btn.toggleGroup]=[];} -g.push(btn);btn.on("toggle",toggleGroup);},unregister:function(btn){if(!btn.toggleGroup){return;} -var g=groups[btn.toggleGroup];if(g){g.remove(btn);btn.un("toggle",toggleGroup);}}};}(); - -Ext.MenuButton=function(renderTo,config){Ext.MenuButton.superclass.constructor.call(this,renderTo,config);this.addEvents({"arrowclick":true});};Ext.extend(Ext.MenuButton,Ext.Button,{render:function(renderTo){var tpl=new Ext.Template('<table cellspacing="0" class="x-btn-menu-wrap x-btn"><tr><td>','<table cellspacing="0" class="x-btn-wrap x-btn-menu-text-wrap"><tbody>','<tr><td class="x-btn-left"><i> </i></td><td class="x-btn-center"><button class="x-btn-text" type="{1}">{0}</button></td></tr>',"</tbody></table></td><td>",'<table cellspacing="0" class="x-btn-wrap x-btn-menu-arrow-wrap"><tbody>','<tr><td class="x-btn-center"><button class="x-btn-menu-arrow-el" type="button"> </button></td><td class="x-btn-right"><i> </i></td></tr>',"</tbody></table></td></tr></table>");var btn=tpl.append(renderTo,[this.text,this.type],true);if(this.cls){btn.addClass(this.cls);} -if(this.icon){btn.child("button").setStyle('background-image','url('+this.icon+')');} -this.el=btn;this.autoWidth();if(this.handleMouseEvents){btn.on("mouseover",this.onMouseOver,this);btn.on("mouseout",this.onMouseOut,this);btn.on("mousedown",this.onMouseDown,this);btn.on("mouseup",this.onMouseUp,this);} -btn.on(this.clickEvent,this.onClick,this);if(this.tooltip){var btnEl=btn.child("button:first");if(typeof this.tooltip=='object'){Ext.QuickTips.tips(Ext.apply({target:btnEl.id},this.tooltip));}else{btnEl.dom[this.tooltipType]=this.tooltip;}} -if(this.arrowTooltip){var btnEl=btn.child("button:nth(2)");btnEl.dom[this.tooltipType]=this.arrowTooltip;} -if(this.hidden){this.hide();} -if(this.disabled){this.disable();} -if(this.menu){this.menu.on("show",this.onMenuShow,this);this.menu.on("hide",this.onMenuHide,this);}},autoWidth:function(){if(this.el){var tbl=this.el.child("table:first");var tbl2=this.el.child("table:last");this.el.setWidth("auto");tbl.setWidth("auto");if(Ext.isIE7&&Ext.isStrict){var ib=this.el.child('button:first');if(ib&&ib.getWidth()>20){ib.clip();ib.setWidth(Ext.util.TextMetrics.measure(ib,this.text).width+ib.getFrameWidth('lr'));}} -if(this.minWidth){if(this.hidden){this.el.beginMeasure();} -if((tbl.getWidth()+tbl2.getWidth())<this.minWidth){tbl.setWidth(this.minWidth-tbl2.getWidth());} -if(this.hidden){this.el.endMeasure();}} -this.el.setWidth(tbl.getWidth()+tbl2.getWidth());}},setHandler:function(handler,scope){this.handler=handler;this.scope=scope;},setArrowHandler:function(handler,scope){this.arrowHandler=handler;this.scope=scope;},focus:function(){if(this.el){this.el.child("button:first").focus();}},onClick:function(e){e.preventDefault();if(!this.disabled){if(e.getTarget(".x-btn-menu-arrow-wrap")){if(this.menu&&!this.menu.isVisible()){this.menu.show(this.el,this.menuAlign);} -this.fireEvent("arrowclick",this,e);if(this.arrowHandler){this.arrowHandler.call(this.scope||this,this,e);}}else{this.fireEvent("click",this,e);if(this.handler){this.handler.call(this.scope||this,this,e);}}}},onMouseDown:function(e){if(!this.disabled){Ext.fly(e.getTarget("table")).addClass("x-btn-click");}},onMouseUp:function(e){Ext.fly(e.getTarget("table")).removeClass("x-btn-click");}}); - -Ext.Toolbar=function(container,buttons,config){if(container instanceof Array){buttons=container;config=buttons;container=null;} -Ext.apply(this,config);this.buttons=buttons;if(container){this.render(container);}};Ext.Toolbar.prototype={render:function(ct){this.el=Ext.get(ct);if(this.cls){this.el.addClass(this.cls);} -this.el.update('<div class="x-toolbar x-small-editor"><table cellspacing="0"><tr></tr></table></div>');this.tr=this.el.child("tr",true);var autoId=0;this.items=new Ext.util.MixedCollection(false,function(o){return o.id||("item"+(++autoId));});if(this.buttons){this.add.apply(this,this.buttons);delete this.buttons;}},add:function(){var a=arguments,l=a.length;for(var i=0;i<l;i++){var el=a[i];if(el.applyTo){this.addField(el);}else if(el.render){this.addItem(el);}else if(typeof el=="string"){if(el=="separator"||el=="-"){this.addSeparator();}else if(el==" "){this.addSpacer();}else if(el=="->"){this.addFill();}else{this.addText(el);}}else if(el.tagName){this.addElement(el);}else if(typeof el=="object"){this.addButton(el);}}},getEl:function(){return this.el;},addSeparator:function(){return this.addItem(new Ext.Toolbar.Separator());},addSpacer:function(){return this.addItem(new Ext.Toolbar.Spacer());},addFill:function(){return this.addItem(new Ext.Toolbar.Fill());},addElement:function(el){return this.addItem(new Ext.Toolbar.Item(el));},addItem:function(item){var td=this.nextBlock();item.render(td);this.items.add(item);return item;},addButton:function(config){if(config instanceof Array){var buttons=[];for(var i=0,len=config.length;i<len;i++){buttons.push(this.addButton(config[i]));} -return buttons;} -var b=config;if(!(config instanceof Ext.Toolbar.Button)){b=new Ext.Toolbar.Button(config);} -var td=this.nextBlock();b.render(td);this.items.add(b);return b;},addText:function(text){return this.addItem(new Ext.Toolbar.TextItem(text));},insertButton:function(index,item){if(item instanceof Array){var buttons=[];for(var i=0,len=item.length;i<len;i++){buttons.push(this.insertButton(index+i,item[i]));} -return buttons;} -if(!(item instanceof Ext.Toolbar.Button)){item=new Ext.Toolbar.Button(item);} -var td=document.createElement("td");this.tr.insertBefore(td,this.tr.childNodes[index]);item.render(td);this.items.insert(index,item);return item;},addDom:function(config,returnEl){var td=this.nextBlock();Ext.DomHelper.overwrite(td,config);var ti=new Ext.Toolbar.Item(td.firstChild);ti.render(td);this.items.add(ti);return ti;},addField:function(field){var td=this.nextBlock();field.render(td);var ti=new Ext.Toolbar.Item(td.firstChild);ti.render(td);this.items.add(ti);return ti;},nextBlock:function(){var td=document.createElement("td");this.tr.appendChild(td);return td;},destroy:function(){if(this.items){Ext.destroy.apply(Ext,this.items.items);} -Ext.Element.uncache(this.el,this.tr);}};Ext.Toolbar.Item=function(el){this.el=Ext.getDom(el);this.id=Ext.id(this.el);this.hidden=false;};Ext.Toolbar.Item.prototype={getEl:function(){return this.el;},render:function(td){this.td=td;td.appendChild(this.el);},destroy:function(){this.td.parentNode.removeChild(this.td);},show:function(){this.hidden=false;this.td.style.display="";},hide:function(){this.hidden=true;this.td.style.display="none";},setVisible:function(visible){if(visible){this.show();}else{this.hide();}},focus:function(){Ext.fly(this.el).focus();},disable:function(){Ext.fly(this.td).addClass("x-item-disabled");this.disabled=true;this.el.disabled=true;},enable:function(){Ext.fly(this.td).removeClass("x-item-disabled");this.disabled=false;this.el.disabled=false;}};Ext.Toolbar.Separator=function(){var s=document.createElement("span");s.className="ytb-sep";Ext.Toolbar.Separator.superclass.constructor.call(this,s);};Ext.extend(Ext.Toolbar.Separator,Ext.Toolbar.Item,{enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});Ext.Toolbar.Spacer=function(){var s=document.createElement("div");s.className="ytb-spacer";Ext.Toolbar.Spacer.superclass.constructor.call(this,s);};Ext.extend(Ext.Toolbar.Spacer,Ext.Toolbar.Item,{enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});Ext.Toolbar.Fill=Ext.extend(Ext.Toolbar.Spacer,{render:function(td){td.style.width='100%';Ext.Toolbar.Fill.superclass.render.call(this,td);}});Ext.Toolbar.TextItem=function(text){var s=document.createElement("span");s.className="ytb-text";s.innerHTML=text;Ext.Toolbar.TextItem.superclass.constructor.call(this,s);};Ext.extend(Ext.Toolbar.TextItem,Ext.Toolbar.Item,{enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});Ext.Toolbar.Button=function(config){Ext.Toolbar.Button.superclass.constructor.call(this,null,config);};Ext.extend(Ext.Toolbar.Button,Ext.Button,{render:function(td){this.td=td;Ext.Toolbar.Button.superclass.render.call(this,td);},destroy:function(){Ext.Toolbar.Button.superclass.destroy.call(this);this.td.parentNode.removeChild(this.td);},show:function(){this.hidden=false;this.td.style.display="";},hide:function(){this.hidden=true;this.td.style.display="none";},disable:function(){Ext.fly(this.td).addClass("x-item-disabled");this.disabled=true;},enable:function(){Ext.fly(this.td).removeClass("x-item-disabled");this.disabled=false;}});Ext.ToolbarButton=Ext.Toolbar.Button;Ext.Toolbar.MenuButton=function(config){Ext.Toolbar.MenuButton.superclass.constructor.call(this,null,config);};Ext.extend(Ext.Toolbar.MenuButton,Ext.MenuButton,{render:function(td){this.td=td;Ext.Toolbar.MenuButton.superclass.render.call(this,td);},destroy:function(){Ext.Toolbar.MenuButton.superclass.destroy.call(this);this.td.parentNode.removeChild(this.td);},show:function(){this.hidden=false;this.td.style.display="";},hide:function(){this.hidden=true;this.td.style.display="none";}}); - -Ext.PagingToolbar=function(el,ds,config){Ext.PagingToolbar.superclass.constructor.call(this,el,null,config);this.ds=ds;this.cursor=0;this.renderButtons(this.el);this.bind(ds);};Ext.extend(Ext.PagingToolbar,Ext.Toolbar,{pageSize:20,displayMsg:'Displaying {0} - {1} of {2}',emptyMsg:'No data to display',beforePageText:"Page",afterPageText:"of {0}",firstText:"First Page",prevText:"Previous Page",nextText:"Next Page",lastText:"Last Page",refreshText:"Refresh",renderButtons:function(el){Ext.PagingToolbar.superclass.render.call(this,el);this.first=this.addButton({tooltip:this.firstText,cls:"x-btn-icon x-grid-page-first",disabled:true,handler:this.onClick.createDelegate(this,["first"])});this.prev=this.addButton({tooltip:this.prevText,cls:"x-btn-icon x-grid-page-prev",disabled:true,handler:this.onClick.createDelegate(this,["prev"])});this.addSeparator();this.add(this.beforePageText);this.field=Ext.get(this.addDom({tag:"input",type:"text",size:"3",value:"1",cls:"x-grid-page-number"}).el);this.field.on("keydown",this.onPagingKeydown,this);this.field.on("focus",function(){this.dom.select();});this.afterTextEl=this.addText(String.format(this.afterPageText,1));this.field.setHeight(18);this.addSeparator();this.next=this.addButton({tooltip:this.nextText,cls:"x-btn-icon x-grid-page-next",disabled:true,handler:this.onClick.createDelegate(this,["next"])});this.last=this.addButton({tooltip:this.lastText,cls:"x-btn-icon x-grid-page-last",disabled:true,handler:this.onClick.createDelegate(this,["last"])});this.addSeparator();this.loading=this.addButton({tooltip:this.refreshText,cls:"x-btn-icon x-grid-loading",disabled:true,handler:this.onClick.createDelegate(this,["refresh"])});if(this.displayInfo){this.displayEl=Ext.fly(this.el.dom.firstChild).createChild({cls:'x-paging-info'});}},updateInfo:function(){if(this.displayEl){var count=this.ds.getCount();var msg=count==0?this.emptyMsg:String.format(this.displayMsg,this.cursor+1,this.cursor+count,this.ds.getTotalCount());this.displayEl.update(msg);}},onLoad:function(ds,r,o){this.cursor=o.params?o.params.start:0;var d=this.getPageData(),ap=d.activePage,ps=d.pages;this.afterTextEl.el.innerHTML=String.format(this.afterPageText,d.pages);this.field.dom.value=ap;this.first.setDisabled(ap==1);this.prev.setDisabled(ap==1);this.next.setDisabled(ap==ps);this.last.setDisabled(ap==ps);this.loading.enable();this.updateInfo();},getPageData:function(){var total=this.ds.getTotalCount();return{total:total,activePage:Math.ceil((this.cursor+this.pageSize)/this.pageSize),pages:total<this.pageSize?1:Math.ceil(total/this.pageSize)};},onLoadError:function(){this.loading.enable();},onPagingKeydown:function(e){var k=e.getKey();var d=this.getPageData();if(k==e.RETURN){var v=this.field.dom.value,pageNum;if(!v||isNaN(pageNum=parseInt(v,10))){this.field.dom.value=d.activePage;return;} -pageNum=Math.min(Math.max(1,pageNum),d.pages)-1;this.ds.load({params:{start:pageNum*this.pageSize,limit:this.pageSize}});e.stopEvent();} -else if(k==e.HOME||(k==e.UP&&e.ctrlKey)||(k==e.PAGEUP&&e.ctrlKey)||(k==e.RIGHT&&e.ctrlKey)||k==e.END||(k==e.DOWN&&e.ctrlKey)||(k==e.LEFT&&e.ctrlKey)||(k==e.PAGEDOWN&&e.ctrlKey)) -{var pageNum=(k==e.HOME||(k==e.DOWN&&e.ctrlKey)||(k==e.LEFT&&e.ctrlKey)||(k==e.PAGEDOWN&&e.ctrlKey))?1:d.pages;this.field.dom.value=pageNum;this.ds.load({params:{start:(pageNum-1)*this.pageSize,limit:this.pageSize}});e.stopEvent();} -else if(k==e.UP||k==e.RIGHT||k==e.PAGEUP||k==e.DOWN||k==e.LEFT||k==e.PAGEDOWN) -{var v=this.field.dom.value,pageNum;var increment=(e.shiftKey)?10:1;if(k==e.DOWN||k==e.LEFT||k==e.PAGEDOWN) -increment*=-1;if(!v||isNaN(pageNum=parseInt(v,10))){this.field.dom.value=d.activePage;return;} -else if(parseInt(v,10)+increment>=1&parseInt(v,10)+increment<=d.pages) -{this.field.dom.value=parseInt(v,10)+increment;pageNum=Math.min(Math.max(1,pageNum+increment),d.pages)-1;this.ds.load({params:{start:pageNum*this.pageSize,limit:this.pageSize}});} -e.stopEvent();}},beforeLoad:function(){if(this.loading){this.loading.disable();}},onClick:function(which){var ds=this.ds;switch(which){case"first":ds.load({params:{start:0,limit:this.pageSize}});break;case"prev":ds.load({params:{start:Math.max(0,this.cursor-this.pageSize),limit:this.pageSize}});break;case"next":ds.load({params:{start:this.cursor+this.pageSize,limit:this.pageSize}});break;case"last":var total=ds.getTotalCount();var extra=total%this.pageSize;var lastStart=extra?(total-extra):total-this.pageSize;ds.load({params:{start:lastStart,limit:this.pageSize}});break;case"refresh":ds.load({params:{start:this.cursor,limit:this.pageSize}});break;}},unbind:function(ds){ds.un("beforeload",this.beforeLoad,this);ds.un("load",this.onLoad,this);ds.un("loadexception",this.onLoadError,this);this.ds=undefined;},bind:function(ds){ds.on("beforeload",this.beforeLoad,this);ds.on("load",this.onLoad,this);ds.on("loadexception",this.onLoadError,this);this.ds=ds;}}); - -Ext.Resizable=function(el,config){this.el=Ext.get(el);if(config&&config.wrap){config.resizeChild=this.el;this.el=this.el.wrap(typeof config.wrap=="object"?config.wrap:{cls:"xresizable-wrap"});this.el.id=this.el.dom.id=config.resizeChild.id+"-rzwrap";this.el.setStyle("overflow","hidden");this.el.setPositioning(config.resizeChild.getPositioning());config.resizeChild.clearPositioning();if(!config.width||!config.height){var csize=config.resizeChild.getSize();this.el.setSize(csize.width,csize.height);} -if(config.pinned&&!config.adjustments){config.adjustments="auto";}} -this.proxy=this.el.createProxy({tag:"div",cls:"x-resizable-proxy",id:this.el.id+"-rzproxy"});this.proxy.unselectable();this.proxy.enableDisplayMode('block');Ext.apply(this,config);if(this.pinned){this.disableTrackOver=true;this.el.addClass("x-resizable-pinned");} -var position=this.el.getStyle("position");if(position!="absolute"&&position!="fixed"){this.el.setStyle("position","relative");} -if(!this.handles){this.handles='s,e,se';if(this.multiDirectional){this.handles+=',n,w';}} -if(this.handles=="all"){this.handles="n s e w ne nw se sw";} -var hs=this.handles.split(/\s*?[,;]\s*?| /);var ps=Ext.Resizable.positions;for(var i=0,len=hs.length;i<len;i++){if(hs[i]&&ps[hs[i]]){var pos=ps[hs[i]];this[pos]=new Ext.Resizable.Handle(this,pos,this.disableTrackOver,this.transparent);}} -this.corner=this.southeast;if(this.handles.indexOf("n")!=-1||this.handles.indexOf("w")!=-1){this.updateBox=true;} -this.activeHandle=null;if(this.resizeChild){if(typeof this.resizeChild=="boolean"){this.resizeChild=Ext.get(this.el.dom.firstChild,true);}else{this.resizeChild=Ext.get(this.resizeChild,true);}} -if(this.adjustments=="auto"){var rc=this.resizeChild;var hw=this.west,he=this.east,hn=this.north,hs=this.south;if(rc&&(hw||hn)){rc.position("relative");rc.setLeft(hw?hw.el.getWidth():0);rc.setTop(hn?hn.el.getHeight():0);} -this.adjustments=[(he?-he.el.getWidth():0)+(hw?-hw.el.getWidth():0),(hn?-hn.el.getHeight():0)+(hs?-hs.el.getHeight():0)-1];} -if(this.draggable){this.dd=this.dynamic?this.el.initDD(null):this.el.initDDProxy(null,{dragElId:this.proxy.id});this.dd.setHandleElId(this.resizeChild?this.resizeChild.id:this.el.id);} -this.addEvents({"beforeresize":true,"resize":true});if(this.width!==null&&this.height!==null){this.resizeTo(this.width,this.height);}else{this.updateChildSize();} -if(Ext.isIE){this.el.dom.style.zoom=1;} -Ext.Resizable.superclass.constructor.call(this);};Ext.extend(Ext.Resizable,Ext.util.Observable,{resizeChild:false,adjustments:[0,0],minWidth:5,minHeight:5,maxWidth:10000,maxHeight:10000,enabled:true,animate:false,duration:.35,dynamic:false,handles:false,multiDirectional:false,disableTrackOver:false,easing:'easeOutStrong',widthIncrement:0,heightIncrement:0,pinned:false,width:null,height:null,preserveRatio:false,transparent:false,minX:0,minY:0,draggable:false,constrainTo:undefined,resizeRegion:undefined,resizeTo:function(width,height){this.el.setSize(width,height);this.updateChildSize();this.fireEvent("resize",this,width,height,null);},startSizing:function(e,handle){this.fireEvent("beforeresize",this,e);if(this.enabled){if(!this.overlay){this.overlay=this.el.createProxy({tag:"div",cls:"x-resizable-overlay",html:" "});this.overlay.unselectable();this.overlay.enableDisplayMode("block");this.overlay.on("mousemove",this.onMouseMove,this);this.overlay.on("mouseup",this.onMouseUp,this);} -this.overlay.setStyle("cursor",handle.el.getStyle("cursor"));this.resizing=true;this.startBox=this.el.getBox();this.startPoint=e.getXY();this.offsets=[(this.startBox.x+this.startBox.width)-this.startPoint[0],(this.startBox.y+this.startBox.height)-this.startPoint[1]];this.overlay.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true));this.overlay.show();if(this.constrainTo){var ct=Ext.get(this.constrainTo);this.resizeRegion=ct.getRegion().adjust(ct.getFrameWidth('t'),ct.getFrameWidth('l'),-ct.getFrameWidth('b'),-ct.getFrameWidth('r'));} -this.proxy.setStyle('visibility','hidden');this.proxy.show();this.proxy.setBox(this.startBox);if(!this.dynamic){this.proxy.setStyle('visibility','visible');}}},onMouseDown:function(handle,e){if(this.enabled){e.stopEvent();this.activeHandle=handle;this.startSizing(e,handle);}},onMouseUp:function(e){var size=this.resizeElement();this.resizing=false;this.handleOut();this.overlay.hide();this.proxy.hide();this.fireEvent("resize",this,size.width,size.height,e);},updateChildSize:function(){if(this.resizeChild){var el=this.el;var child=this.resizeChild;var adj=this.adjustments;if(el.dom.offsetWidth){var b=el.getSize(true);child.setSize(b.width+adj[0],b.height+adj[1]);} -if(Ext.isIE){setTimeout(function(){if(el.dom.offsetWidth){var b=el.getSize(true);child.setSize(b.width+adj[0],b.height+adj[1]);}},10);}}},snap:function(value,inc,min){if(!inc||!value)return value;var newValue=value;var m=value%inc;if(m>0){if(m>(inc/2)){newValue=value+(inc-m);}else{newValue=value-m;}} -return Math.max(min,newValue);},resizeElement:function(){var box=this.proxy.getBox();if(this.updateBox){this.el.setBox(box,false,this.animate,this.duration,null,this.easing);}else{this.el.setSize(box.width,box.height,this.animate,this.duration,null,this.easing);} -this.updateChildSize();if(!this.dynamic){this.proxy.hide();} -return box;},constrain:function(v,diff,m,mx){if(v-diff<m){diff=v-m;}else if(v-diff>mx){diff=mx-v;} -return diff;},onMouseMove:function(e){if(this.enabled){try{if(this.resizeRegion&&!this.resizeRegion.contains(e.getPoint())){return;} -var curSize=this.curSize||this.startBox;var x=this.startBox.x,y=this.startBox.y;var ox=x,oy=y;var w=curSize.width,h=curSize.height;var ow=w,oh=h;var mw=this.minWidth,mh=this.minHeight;var mxw=this.maxWidth,mxh=this.maxHeight;var wi=this.widthIncrement;var hi=this.heightIncrement;var eventXY=e.getXY();var diffX=-(this.startPoint[0]-Math.max(this.minX,eventXY[0]));var diffY=-(this.startPoint[1]-Math.max(this.minY,eventXY[1]));var pos=this.activeHandle.position;switch(pos){case"east":w+=diffX;w=Math.min(Math.max(mw,w),mxw);break;case"south":h+=diffY;h=Math.min(Math.max(mh,h),mxh);break;case"southeast":w+=diffX;h+=diffY;w=Math.min(Math.max(mw,w),mxw);h=Math.min(Math.max(mh,h),mxh);break;case"north":diffY=this.constrain(h,diffY,mh,mxh);y+=diffY;h-=diffY;break;case"west":diffX=this.constrain(w,diffX,mw,mxw);x+=diffX;w-=diffX;break;case"northeast":w+=diffX;w=Math.min(Math.max(mw,w),mxw);diffY=this.constrain(h,diffY,mh,mxh);y+=diffY;h-=diffY;break;case"northwest":diffX=this.constrain(w,diffX,mw,mxw);diffY=this.constrain(h,diffY,mh,mxh);y+=diffY;h-=diffY;x+=diffX;w-=diffX;break;case"southwest":diffX=this.constrain(w,diffX,mw,mxw);h+=diffY;h=Math.min(Math.max(mh,h),mxh);x+=diffX;w-=diffX;break;} -var sw=this.snap(w,wi,mw);var sh=this.snap(h,hi,mh);if(sw!=w||sh!=h){switch(pos){case"northeast":y-=sh-h;break;case"north":y-=sh-h;break;case"southwest":x-=sw-w;break;case"west":x-=sw-w;break;case"northwest":x-=sw-w;y-=sh-h;break;} -w=sw;h=sh;} -if(this.preserveRatio){switch(pos){case"southeast":case"east":h=oh*(w/ow);h=Math.min(Math.max(mh,h),mxh);w=ow*(h/oh);break;case"south":w=ow*(h/oh);w=Math.min(Math.max(mw,w),mxw);h=oh*(w/ow);break;case"northeast":w=ow*(h/oh);w=Math.min(Math.max(mw,w),mxw);h=oh*(w/ow);break;case"north":var tw=w;w=ow*(h/oh);w=Math.min(Math.max(mw,w),mxw);h=oh*(w/ow);x+=(tw-w)/2;break;case"southwest":h=oh*(w/ow);h=Math.min(Math.max(mh,h),mxh);var tw=w;w=ow*(h/oh);x+=tw-w;break;case"west":var th=h;h=oh*(w/ow);h=Math.min(Math.max(mh,h),mxh);y+=(th-h)/2;var tw=w;w=ow*(h/oh);x+=tw-w;break;case"northwest":var tw=w;var th=h;h=oh*(w/ow);h=Math.min(Math.max(mh,h),mxh);w=ow*(h/oh);y+=th-h;x+=tw-w;break;}} -this.proxy.setBounds(x,y,w,h);if(this.dynamic){this.resizeElement();}}catch(e){}}},handleOver:function(){if(this.enabled){this.el.addClass("x-resizable-over");}},handleOut:function(){if(!this.resizing){this.el.removeClass("x-resizable-over");}},getEl:function(){return this.el;},getResizeChild:function(){return this.resizeChild;},destroy:function(removeEl){this.proxy.remove();if(this.overlay){this.overlay.removeAllListeners();this.overlay.remove();} -var ps=Ext.Resizable.positions;for(var k in ps){if(typeof ps[k]!="function"&&this[ps[k]]){var h=this[ps[k]];h.el.removeAllListeners();h.el.remove();}} -if(removeEl){this.el.update("");this.el.remove();}}});Ext.Resizable.positions={n:"north",s:"south",e:"east",w:"west",se:"southeast",sw:"southwest",nw:"northwest",ne:"northeast"};Ext.Resizable.Handle=function(rz,pos,disableTrackOver,transparent){if(!this.tpl){var tpl=Ext.DomHelper.createTemplate({tag:"div",cls:"x-resizable-handle x-resizable-handle-{0}"});tpl.compile();Ext.Resizable.Handle.prototype.tpl=tpl;} -this.position=pos;this.rz=rz;this.el=this.tpl.append(rz.el.dom,[this.position],true);this.el.unselectable();if(transparent){this.el.setOpacity(0);} -this.el.on("mousedown",this.onMouseDown,this);if(!disableTrackOver){this.el.on("mouseover",this.onMouseOver,this);this.el.on("mouseout",this.onMouseOut,this);}};Ext.Resizable.Handle.prototype={afterResize:function(rz){},onMouseDown:function(e){this.rz.onMouseDown(this,e);},onMouseOver:function(e){this.rz.handleOver(this,e);},onMouseOut:function(e){this.rz.handleOut(this,e);}}; - -Ext.Editor=function(field,config){Ext.Editor.superclass.constructor.call(this,config);this.field=field;this.addEvents({"beforestartedit":true,"startedit":true,"beforecomplete":true,"complete":true,"specialkey":true});};Ext.extend(Ext.Editor,Ext.Component,{value:"",alignment:"c-c?",shadow:"frame",constrain:false,updateEl:false,onRender:function(ct,position){this.el=new Ext.Layer({shadow:this.shadow,cls:"x-editor",parentEl:ct,shim:this.shim,shadowOffset:4,id:this.id});this.el.setStyle("overflow",Ext.isGecko?"auto":"hidden");if(this.field.msgTarget!='title'){this.field.msgTarget='qtip';} -this.field.render(this.el);if(Ext.isGecko){this.field.el.dom.setAttribute('autocomplete','off');} -this.field.show();this.field.on("blur",this.onBlur,this);this.relayEvents(this.field,["specialkey"]);if(this.field.grow){this.field.on("autosize",this.el.sync,this.el,{delay:1});}},startEdit:function(el,value){if(this.editing){this.completeEdit();} -this.boundEl=Ext.get(el);var v=value!==undefined?value:this.boundEl.dom.innerHTML;if(!this.rendered){this.render(this.parentEl||document.body);} -if(this.fireEvent("beforestartedit",this,this.boundEl,v)===false){return;} -this.startValue=v;this.field.setValue(v);if(this.autoSize){var sz=this.boundEl.getSize();switch(this.autoSize){case"width":this.setSize(sz.width,"");break;case"height":this.setSize("",sz.height);break;default:this.setSize(sz.width,sz.height);}} -this.el.alignTo(this.boundEl,this.alignment);this.editing=true;if(Ext.QuickTips){Ext.QuickTips.disable();} -this.show();},setSize:function(w,h){this.field.setSize(w,h);if(this.el){this.el.sync();}},realign:function(){this.el.alignTo(this.boundEl,this.alignment);},completeEdit:function(remainVisible){if(!this.editing){return;} -var v=this.getValue();if(this.revertInvalid!==false&&!this.field.isValid()){v=this.startValue;this.cancelEdit(true);} -if(String(v)==String(this.startValue)&&this.ignoreNoChange){this.editing=false;this.hide();return;} -if(this.fireEvent("beforecomplete",this,v,this.startValue)!==false){this.editing=false;if(this.updateEl&&this.boundEl){this.boundEl.update(v);} -if(remainVisible!==true){this.hide();} -this.fireEvent("complete",this,v,this.startValue);}},onShow:function(){this.el.show();if(this.hideEl!==false){this.boundEl.hide();} -this.field.show();if(Ext.isIE&&!this.fixIEFocus){this.fixIEFocus=true;this.deferredFocus.defer(50,this);}else{this.field.focus();} -this.fireEvent("startedit",this.boundEl,this.startValue);},deferredFocus:function(){if(this.editing){this.field.focus();}},cancelEdit:function(remainVisible){if(this.editing){this.setValue(this.startValue);if(remainVisible!==true){this.hide();}}},onBlur:function(){if(this.allowBlur!==true&&this.editing){this.completeEdit();}},onHide:function(){if(this.editing){this.completeEdit();return;} -this.field.blur();if(this.field.collapse){this.field.collapse();} -this.el.hide();if(this.hideEl!==false){this.boundEl.show();} -if(Ext.QuickTips){Ext.QuickTips.enable();}},setValue:function(v){this.field.setValue(v);},getValue:function(){return this.field.getValue();}}); - -Ext.BasicDialog=function(el,config){this.el=Ext.get(el);var dh=Ext.DomHelper;if(!this.el&&config&&config.autoCreate){if(typeof config.autoCreate=="object"){if(!config.autoCreate.id){config.autoCreate.id=el;} -this.el=dh.append(document.body,config.autoCreate,true);}else{this.el=dh.append(document.body,{tag:"div",id:el,style:'visibility:hidden;'},true);}} -el=this.el;el.setDisplayed(true);el.hide=this.hideAction;this.id=el.id;el.addClass("x-dlg");Ext.apply(this,config);this.proxy=el.createProxy("x-dlg-proxy");this.proxy.hide=this.hideAction;this.proxy.setOpacity(.5);this.proxy.hide();if(config.width){el.setWidth(config.width);} -if(config.height){el.setHeight(config.height);} -this.size=el.getSize();if(typeof config.x!="undefined"&&typeof config.y!="undefined"){this.xy=[config.x,config.y];}else{this.xy=el.getCenterXY(true);} -this.header=el.child("> .x-dlg-hd");this.body=el.child("> .x-dlg-bd");this.footer=el.child("> .x-dlg-ft");if(!this.header){this.header=el.createChild({tag:"div",cls:"x-dlg-hd",html:" "},this.body?this.body.dom:null);} -if(!this.body){this.body=el.createChild({tag:"div",cls:"x-dlg-bd"});} -this.header.unselectable();if(this.title){this.header.update(this.title);} -this.focusEl=el.createChild({tag:"a",href:"#",cls:"x-dlg-focus",tabIndex:"-1"});this.focusEl.swallowEvent("click",true);this.header.wrap({cls:"x-dlg-hd-right"}).wrap({cls:"x-dlg-hd-left"},true);this.bwrap=this.body.wrap({tag:"div",cls:"x-dlg-dlg-body"});if(this.footer){this.bwrap.dom.appendChild(this.footer.dom);} -this.bg=this.el.createChild({tag:"div",cls:"x-dlg-bg",html:'<div class="x-dlg-bg-left"><div class="x-dlg-bg-right"><div class="x-dlg-bg-center"> </div></div></div>'});this.centerBg=this.bg.child("div.x-dlg-bg-center");if(this.autoScroll!==false&&!this.autoTabs){this.body.setStyle("overflow","auto");} -this.toolbox=this.el.createChild({cls:"x-dlg-toolbox"});if(this.closable!==false){this.el.addClass("x-dlg-closable");this.close=this.toolbox.createChild({cls:"x-dlg-close"});this.close.on("click",this.closeClick,this);this.close.addClassOnOver("x-dlg-close-over");} -if(this.collapsible!==false){this.collapseBtn=this.toolbox.createChild({cls:"x-dlg-collapse"});this.collapseBtn.on("click",this.collapseClick,this);this.collapseBtn.addClassOnOver("x-dlg-collapse-over");this.header.on("dblclick",this.collapseClick,this);} -if(this.resizable!==false){this.el.addClass("x-dlg-resizable");this.resizer=new Ext.Resizable(el,{minWidth:this.minWidth||80,minHeight:this.minHeight||80,handles:this.resizeHandles||"all",pinned:true});this.resizer.on("beforeresize",this.beforeResize,this);this.resizer.on("resize",this.onResize,this);} -if(this.draggable!==false){el.addClass("x-dlg-draggable");if(!this.proxyDrag){var dd=new Ext.dd.DD(el.dom.id,"WindowDrag");} -else{var dd=new Ext.dd.DDProxy(el.dom.id,"WindowDrag",{dragElId:this.proxy.id});} -dd.setHandleElId(this.header.id);dd.endDrag=this.endMove.createDelegate(this);dd.startDrag=this.startMove.createDelegate(this);dd.onDrag=this.onDrag.createDelegate(this);dd.scroll=false;this.dd=dd;} -if(this.modal){this.mask=dh.append(document.body,{tag:"div",cls:"x-dlg-mask"},true);this.mask.enableDisplayMode("block");this.mask.hide();this.el.addClass("x-dlg-modal");} -if(this.shadow){this.shadow=new Ext.Shadow({mode:typeof this.shadow=="string"?this.shadow:"sides",offset:this.shadowOffset});}else{this.shadowOffset=0;} -if(Ext.useShims&&this.shim!==false){this.shim=this.el.createShim();this.shim.hide=this.hideAction;this.shim.hide();}else{this.shim=false;} -if(this.autoTabs){this.initTabs();} -this.addEvents({"keydown":true,"move":true,"resize":true,"beforehide":true,"hide":true,"beforeshow":true,"show":true});el.on("keydown",this.onKeyDown,this);el.on("mousedown",this.toFront,this);Ext.EventManager.onWindowResize(this.adjustViewport,this,true);this.el.hide();Ext.DialogManager.register(this);Ext.BasicDialog.superclass.constructor.call(this);};Ext.extend(Ext.BasicDialog,Ext.util.Observable,{shadowOffset:Ext.isIE?6:5,minHeight:80,minWidth:200,minButtonWidth:75,defaultButton:null,buttonAlign:"right",tabTag:'div',firstShow:true,setTitle:function(text){this.header.update(text);return this;},closeClick:function(){this.hide();},collapseClick:function(){this[this.collapsed?"expand":"collapse"]();},collapse:function(){if(!this.collapsed){this.collapsed=true;this.el.addClass("x-dlg-collapsed");this.restoreHeight=this.el.getHeight();this.resizeTo(this.el.getWidth(),this.header.getHeight());}},expand:function(){if(this.collapsed){this.collapsed=false;this.el.removeClass("x-dlg-collapsed");this.resizeTo(this.el.getWidth(),this.restoreHeight);}},initTabs:function(){var tabs=this.getTabs();while(tabs.getTab(0)){tabs.removeTab(0);} -this.el.select(this.tabTag+'.x-dlg-tab').each(function(el){var dom=el.dom;tabs.addTab(Ext.id(dom),dom.title);dom.title="";});tabs.activate(0);return tabs;},beforeResize:function(){this.resizer.minHeight=Math.max(this.minHeight,this.getHeaderFooterHeight(true)+40);},onResize:function(){this.refreshSize();this.syncBodyHeight();this.adjustAssets();this.focus();this.fireEvent("resize",this,this.size.width,this.size.height);},onKeyDown:function(e){if(this.isVisible()){this.fireEvent("keydown",this,e);}},resizeTo:function(width,height){this.el.setSize(width,height);this.size={width:width,height:height};this.syncBodyHeight();if(this.fixedcenter){this.center();} -if(this.isVisible()){this.constrainXY();this.adjustAssets();} -this.fireEvent("resize",this,width,height);return this;},setContentSize:function(w,h){h+=this.getHeaderFooterHeight()+this.body.getMargins("tb");w+=this.body.getMargins("lr")+this.bwrap.getMargins("lr")+this.centerBg.getPadding("lr");h+=this.body.getPadding("tb")+this.bwrap.getBorderWidth("tb")+this.body.getBorderWidth("tb")+this.el.getBorderWidth("tb");w+=this.body.getPadding("lr")+this.bwrap.getBorderWidth("lr")+this.body.getBorderWidth("lr")+this.bwrap.getPadding("lr")+this.el.getBorderWidth("lr");if(this.tabs){h+=this.tabs.stripWrap.getHeight()+this.tabs.bodyEl.getMargins("tb")+this.tabs.bodyEl.getPadding("tb");w+=this.tabs.bodyEl.getMargins("lr")+this.tabs.bodyEl.getPadding("lr");} -this.resizeTo(w,h);return this;},addKeyListener:function(key,fn,scope){var keyCode,shift,ctrl,alt;if(typeof key=="object"&&!(key instanceof Array)){keyCode=key["key"];shift=key["shift"];ctrl=key["ctrl"];alt=key["alt"];}else{keyCode=key;} -var handler=function(dlg,e){if((!shift||e.shiftKey)&&(!ctrl||e.ctrlKey)&&(!alt||e.altKey)){var k=e.getKey();if(keyCode instanceof Array){for(var i=0,len=keyCode.length;i<len;i++){if(keyCode[i]==k){fn.call(scope||window,dlg,k,e);return;}}}else{if(k==keyCode){fn.call(scope||window,dlg,k,e);}}}};this.on("keydown",handler);return this;},getTabs:function(){if(!this.tabs){this.el.addClass("x-dlg-auto-tabs");this.body.addClass(this.tabPosition=="bottom"?"x-tabs-bottom":"x-tabs-top");this.tabs=new Ext.TabPanel(this.body.dom,this.tabPosition=="bottom");} -return this.tabs;},addButton:function(config,handler,scope){var dh=Ext.DomHelper;if(!this.footer){this.footer=dh.append(this.bwrap,{tag:"div",cls:"x-dlg-ft"},true);} -if(!this.btnContainer){var tb=this.footer.createChild({tag:"div",cls:"x-dlg-btns x-dlg-btns-"+this.buttonAlign,html:'<table cellspacing="0"><tbody><tr></tr></tbody></table><div class="x-clear"></div>'},null,true);this.btnContainer=tb.firstChild.firstChild.firstChild;} -var bconfig={handler:handler,scope:scope,minWidth:this.minButtonWidth,hideParent:true};if(typeof config=="string"){bconfig.text=config;}else{if(config.tag){bconfig.dhconfig=config;}else{Ext.apply(bconfig,config);}} -var btn=new Ext.Button(this.btnContainer.appendChild(document.createElement("td")),bconfig);this.syncBodyHeight();if(!this.buttons){this.buttons=[];} -this.buttons.push(btn);return btn;},setDefaultButton:function(btn){this.defaultButton=btn;return this;},getHeaderFooterHeight:function(safe){var height=0;if(this.header){height+=this.header.getHeight();} -if(this.footer){var fm=this.footer.getMargins();height+=(this.footer.getHeight()+fm.top+fm.bottom);} -height+=this.bwrap.getPadding("tb")+this.bwrap.getBorderWidth("tb");height+=this.centerBg.getPadding("tb");return height;},syncBodyHeight:function(){var bd=this.body,cb=this.centerBg,bw=this.bwrap;var height=this.size.height-this.getHeaderFooterHeight(false);bd.setHeight(height-bd.getMargins("tb"));var hh=this.header.getHeight();var h=this.size.height-hh;cb.setHeight(h);bw.setLeftTop(cb.getPadding("l"),hh+cb.getPadding("t"));bw.setHeight(h-cb.getPadding("tb"));bw.setWidth(this.el.getWidth(true)-cb.getPadding("lr"));bd.setWidth(bw.getWidth(true));if(this.tabs){this.tabs.syncHeight();if(Ext.isIE){this.tabs.el.repaint();}}},restoreState:function(){var box=Ext.state.Manager.get(this.stateId||(this.el.id+"-state"));if(box&&box.width){this.xy=[box.x,box.y];this.resizeTo(box.width,box.height);} -return this;},beforeShow:function(){this.expand();if(this.fixedcenter){this.xy=this.el.getCenterXY(true);} -if(this.modal){Ext.get(document.body).addClass("x-body-masked");this.mask.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true));this.mask.show();} -this.constrainXY();},animShow:function(){var b=Ext.get(this.animateTarget,true).getBox();this.proxy.setSize(b.width,b.height);this.proxy.setLocation(b.x,b.y);this.proxy.show();this.proxy.setBounds(this.xy[0],this.xy[1],this.size.width,this.size.height,true,.35,this.showEl.createDelegate(this));},show:function(animateTarget){if(this.fireEvent("beforeshow",this)===false){return;} -if(this.syncHeightBeforeShow){this.syncBodyHeight();}else if(this.firstShow){this.firstShow=false;this.syncBodyHeight();} -this.animateTarget=animateTarget||this.animateTarget;if(!this.el.isVisible()){this.beforeShow();if(this.animateTarget){this.animShow();}else{this.showEl();}} -return this;},showEl:function(){this.proxy.hide();this.el.setXY(this.xy);this.el.show();this.adjustAssets(true);this.toFront();this.focus();if(Ext.isIE){this.el.repaint();} -this.fireEvent("show",this);},focus:function(){if(this.defaultButton){this.defaultButton.focus();}else{this.focusEl.focus();}},constrainXY:function(){if(this.constraintoviewport!==false){if(!this.viewSize){if(this.container){var s=this.container.getSize();this.viewSize=[s.width,s.height];}else{this.viewSize=[Ext.lib.Dom.getViewWidth(),Ext.lib.Dom.getViewHeight()];}} -var s=Ext.get(this.container||document).getScroll();var x=this.xy[0],y=this.xy[1];var w=this.size.width,h=this.size.height;var vw=this.viewSize[0],vh=this.viewSize[1];var moved=false;if(x+w>vw+s.left){x=vw-w;moved=true;} -if(y+h>vh+s.top){y=vh-h;moved=true;} -if(x<s.left){x=s.left;moved=true;} -if(y<s.top){y=s.top;moved=true;} -if(moved){this.xy=[x,y];if(this.isVisible()){this.el.setLocation(x,y);this.adjustAssets();}}}},onDrag:function(){if(!this.proxyDrag){this.xy=this.el.getXY();this.adjustAssets();}},adjustAssets:function(doShow){var x=this.xy[0],y=this.xy[1];var w=this.size.width,h=this.size.height;if(doShow===true){if(this.shadow){this.shadow.show(this.el);} -if(this.shim){this.shim.show();}} -if(this.shadow&&this.shadow.isVisible()){this.shadow.show(this.el);} -if(this.shim&&this.shim.isVisible()){this.shim.setBounds(x,y,w,h);}},adjustViewport:function(w,h){if(!w||!h){w=Ext.lib.Dom.getViewWidth();h=Ext.lib.Dom.getViewHeight();} -this.viewSize=[w,h];if(this.modal&&this.mask.isVisible()){this.mask.setSize(w,h);this.mask.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true));} -if(this.isVisible()){this.constrainXY();}},destroy:function(removeEl){if(this.isVisible()){this.animateTarget=null;this.hide();} -Ext.EventManager.removeResizeListener(this.adjustViewport,this);if(this.tabs){this.tabs.destroy(removeEl);} -Ext.destroy(this.shim,this.proxy,this.resizer,this.close,this.mask);if(this.dd){this.dd.unreg();} -if(this.buttons){for(var i=0,len=this.buttons.length;i<len;i++){this.buttons[i].destroy();}} -this.el.removeAllListeners();if(removeEl===true){this.el.update("");this.el.remove();} -Ext.DialogManager.unregister(this);},startMove:function(){if(this.proxyDrag){this.proxy.show();} -if(this.constraintoviewport!==false){this.dd.constrainTo(document.body,{right:this.shadowOffset,bottom:this.shadowOffset});}},endMove:function(){if(!this.proxyDrag){Ext.dd.DD.prototype.endDrag.apply(this.dd,arguments);}else{Ext.dd.DDProxy.prototype.endDrag.apply(this.dd,arguments);this.proxy.hide();} -this.refreshSize();this.adjustAssets();this.focus();this.fireEvent("move",this,this.xy[0],this.xy[1]);},toFront:function(){Ext.DialogManager.bringToFront(this);return this;},toBack:function(){Ext.DialogManager.sendToBack(this);return this;},center:function(){var xy=this.el.getCenterXY(true);this.moveTo(xy[0],xy[1]);return this;},moveTo:function(x,y){this.xy=[x,y];if(this.isVisible()){this.el.setXY(this.xy);this.adjustAssets();} -return this;},alignTo:function(element,position,offsets){this.xy=this.el.getAlignToXY(element,position,offsets);if(this.isVisible()){this.el.setXY(this.xy);this.adjustAssets();} -return this;},anchorTo:function(el,alignment,offsets,monitorScroll){var action=function(){this.alignTo(el,alignment,offsets);};Ext.EventManager.onWindowResize(action,this);var tm=typeof monitorScroll;if(tm!='undefined'){Ext.EventManager.on(window,'scroll',action,this,{buffer:tm=='number'?monitorScroll:50});} -action.call(this);return this;},isVisible:function(){return this.el.isVisible();},animHide:function(callback){var b=Ext.get(this.animateTarget).getBox();this.proxy.show();this.proxy.setBounds(this.xy[0],this.xy[1],this.size.width,this.size.height);this.el.hide();this.proxy.setBounds(b.x,b.y,b.width,b.height,true,.35,this.hideEl.createDelegate(this,[callback]));},hide:function(callback){if(this.fireEvent("beforehide",this)===false){return;} -if(this.shadow){this.shadow.hide();} -if(this.shim){this.shim.hide();} -if(this.animateTarget){this.animHide(callback);}else{this.el.hide();this.hideEl(callback);} -return this;},hideEl:function(callback){this.proxy.hide();if(this.modal){this.mask.hide();Ext.get(document.body).removeClass("x-body-masked");} -this.fireEvent("hide",this);if(typeof callback=="function"){callback();}},hideAction:function(){this.setLeft("-10000px");this.setTop("-10000px");this.setStyle("visibility","hidden");},refreshSize:function(){this.size=this.el.getSize();this.xy=this.el.getXY();Ext.state.Manager.set(this.stateId||this.el.id+"-state",this.el.getBox());},setZIndex:function(index){if(this.modal){this.mask.setStyle("z-index",index);} -if(this.shim){this.shim.setStyle("z-index",++index);} -if(this.shadow){this.shadow.setZIndex(++index);} -this.el.setStyle("z-index",++index);if(this.proxy){this.proxy.setStyle("z-index",++index);} -if(this.resizer){this.resizer.proxy.setStyle("z-index",++index);} -this.lastZIndex=index;},getEl:function(){return this.el;}});Ext.DialogManager=function(){var list={};var accessList=[];var front=null;var sortDialogs=function(d1,d2){return(!d1._lastAccess||d1._lastAccess<d2._lastAccess)?-1:1;};var orderDialogs=function(){accessList.sort(sortDialogs);var seed=Ext.DialogManager.zseed;for(var i=0,len=accessList.length;i<len;i++){var dlg=accessList[i];if(dlg){dlg.setZIndex(seed+(i*10));}}};return{zseed:9000,register:function(dlg){list[dlg.id]=dlg;accessList.push(dlg);},unregister:function(dlg){delete list[dlg.id];if(!accessList.indexOf){for(var i=0,len=accessList.length;i<len;i++){if(accessList[i]==dlg){accessList.splice(i,1);return;}}}else{var i=accessList.indexOf(dlg);if(i!=-1){accessList.splice(i,1);}}},get:function(id){return typeof id=="object"?id:list[id];},bringToFront:function(dlg){dlg=this.get(dlg);if(dlg!=front){front=dlg;dlg._lastAccess=new Date().getTime();orderDialogs();} -return dlg;},sendToBack:function(dlg){dlg=this.get(dlg);dlg._lastAccess=-(new Date().getTime());orderDialogs();return dlg;},hideAll:function(){for(var id in list){if(list[id]&&typeof list[id]!="function"&&list[id].isVisible()){list[id].hide();}}}};}();Ext.LayoutDialog=function(el,config){config.autoTabs=false;Ext.LayoutDialog.superclass.constructor.call(this,el,config);this.body.setStyle({overflow:"hidden",position:"relative"});this.layout=new Ext.BorderLayout(this.body.dom,config);this.layout.monitorWindowResize=false;this.el.addClass("x-dlg-auto-layout");this.center=Ext.BasicDialog.prototype.center;this.on("show",this.layout.layout,this.layout,true);};Ext.extend(Ext.LayoutDialog,Ext.BasicDialog,{endUpdate:function(){this.layout.endUpdate();},beginUpdate:function(){this.layout.beginUpdate();},getLayout:function(){return this.layout;},showEl:function(){Ext.LayoutDialog.superclass.showEl.apply(this,arguments);if(Ext.isIE7){this.layout.layout();}},syncBodyHeight:function(){Ext.LayoutDialog.superclass.syncBodyHeight.call(this);if(this.layout){this.layout.layout();}}}); - -Ext.MessageBox=function(){var dlg,opt,mask,waitTimer;var bodyEl,msgEl,textboxEl,textareaEl,progressEl,pp;var buttons,activeTextEl,bwidth;var handleButton=function(button){dlg.hide();Ext.callback(opt.fn,opt.scope||window,[button,activeTextEl.dom.value],1);};var handleHide=function(){if(opt&&opt.cls){dlg.el.removeClass(opt.cls);} -if(waitTimer){Ext.TaskMgr.stop(waitTimer);waitTimer=null;}};var updateButtons=function(b){var width=0;if(!b){buttons["ok"].hide();buttons["cancel"].hide();buttons["yes"].hide();buttons["no"].hide();dlg.footer.dom.style.display='none';return width;} -dlg.footer.dom.style.display='';for(var k in buttons){if(typeof buttons[k]!="function"){if(b[k]){buttons[k].show();buttons[k].setText(typeof b[k]=="string"?b[k]:Ext.MessageBox.buttonText[k]);width+=buttons[k].el.getWidth()+15;}else{buttons[k].hide();}}} -return width;};var handleEsc=function(d,k,e){if(opt&&opt.closable!==false){dlg.hide();} -if(e){e.stopEvent();}};return{getDialog:function(){if(!dlg){dlg=new Ext.BasicDialog("x-msg-box",{autoCreate:true,shadow:true,draggable:true,resizable:false,constraintoviewport:false,fixedcenter:true,collapsible:false,shim:true,modal:true,width:400,height:100,buttonAlign:"center",closeClick:function(){if(opt&&opt.buttons&&opt.buttons.no&&!opt.buttons.cancel){handleButton("no");}else{handleButton("cancel");}}});dlg.on("hide",handleHide);mask=dlg.mask;dlg.addKeyListener(27,handleEsc);buttons={};var bt=this.buttonText;buttons["ok"]=dlg.addButton(bt["ok"],handleButton.createCallback("ok"));buttons["yes"]=dlg.addButton(bt["yes"],handleButton.createCallback("yes"));buttons["no"]=dlg.addButton(bt["no"],handleButton.createCallback("no"));buttons["cancel"]=dlg.addButton(bt["cancel"],handleButton.createCallback("cancel"));bodyEl=dlg.body.createChild({tag:"div",html:'<span class="ext-mb-text"></span><br /><input type="text" class="ext-mb-input" /><textarea class="ext-mb-textarea"></textarea><div class="ext-mb-progress-wrap"><div class="ext-mb-progress"><div class="ext-mb-progress-bar"> </div></div></div>'});msgEl=bodyEl.dom.firstChild;textboxEl=Ext.get(bodyEl.dom.childNodes[2]);textboxEl.enableDisplayMode();textboxEl.addKeyListener([10,13],function(){if(dlg.isVisible()&&opt&&opt.buttons){if(opt.buttons.ok){handleButton("ok");}else if(opt.buttons.yes){handleButton("yes");}}});textareaEl=Ext.get(bodyEl.dom.childNodes[3]);textareaEl.enableDisplayMode();progressEl=Ext.get(bodyEl.dom.childNodes[4]);progressEl.enableDisplayMode();var pf=progressEl.dom.firstChild;pp=Ext.get(pf.firstChild);pp.setHeight(pf.offsetHeight);} -return dlg;},updateText:function(text){if(!dlg.isVisible()&&!opt.width){dlg.resizeTo(this.maxWidth,100);} -msgEl.innerHTML=text||' ';var w=Math.max(Math.min(opt.width||msgEl.offsetWidth,this.maxWidth),Math.max(opt.minWidth||this.minWidth,bwidth));if(opt.prompt){activeTextEl.setWidth(w);} -if(dlg.isVisible()){dlg.fixedcenter=false;} -dlg.setContentSize(w,bodyEl.getHeight());if(dlg.isVisible()){dlg.fixedcenter=true;} -return this;},updateProgress:function(value,text){if(text){this.updateText(text);} -pp.setWidth(Math.floor(value*progressEl.dom.firstChild.offsetWidth));return this;},isVisible:function(){return dlg&&dlg.isVisible();},hide:function(){if(this.isVisible()){dlg.hide();}},show:function(options){if(this.isVisible()){this.hide();} -var d=this.getDialog();opt=options;d.setTitle(opt.title||" ");d.close.setDisplayed(opt.closable!==false);activeTextEl=textboxEl;opt.prompt=opt.prompt||(opt.multiline?true:false);if(opt.prompt){if(opt.multiline){textboxEl.hide();textareaEl.show();textareaEl.setHeight(typeof opt.multiline=="number"?opt.multiline:this.defaultTextHeight);activeTextEl=textareaEl;}else{textboxEl.show();textareaEl.hide();}}else{textboxEl.hide();textareaEl.hide();} -progressEl.setDisplayed(opt.progress===true);this.updateProgress(0);activeTextEl.dom.value=opt.value||"";if(opt.prompt){dlg.setDefaultButton(activeTextEl);}else{var bs=opt.buttons;var db=null;if(bs&&bs.ok){db=buttons["ok"];}else if(bs&&bs.yes){db=buttons["yes"];} -dlg.setDefaultButton(db);} -bwidth=updateButtons(opt.buttons);this.updateText(opt.msg);if(opt.cls){d.el.addClass(opt.cls);} -d.proxyDrag=opt.proxyDrag===true;d.modal=opt.modal!==false;d.mask=opt.modal!==false?mask:false;if(!d.isVisible()){document.body.appendChild(dlg.el.dom);d.animateTarget=null;d.show(options.animEl);} -return this;},progress:function(title,msg){this.show({title:title,msg:msg,buttons:false,progress:true,closable:false,minWidth:this.minProgressWidth});return this;},alert:function(title,msg,fn,scope){this.show({title:title,msg:msg,buttons:this.OK,fn:fn,scope:scope});return this;},wait:function(msg,title){this.show({title:title,msg:msg,buttons:false,closable:false,progress:true,modal:true,width:300,wait:true});waitTimer=Ext.TaskMgr.start({run:function(i){Ext.MessageBox.updateProgress(((((i+20)%20)+1)*5)*.01);},interval:1000});return this;},confirm:function(title,msg,fn,scope){this.show({title:title,msg:msg,buttons:this.YESNO,fn:fn,scope:scope});return this;},prompt:function(title,msg,fn,scope,multiline){this.show({title:title,msg:msg,buttons:this.OKCANCEL,fn:fn,minWidth:250,scope:scope,prompt:true,multiline:multiline});return this;},OK:{ok:true},YESNO:{yes:true,no:true},OKCANCEL:{ok:true,cancel:true},YESNOCANCEL:{yes:true,no:true,cancel:true},defaultTextHeight:75,maxWidth:600,minWidth:100,minProgressWidth:250,buttonText:{ok:"OK",cancel:"Cancel",yes:"Yes",no:"No"}};}();Ext.Msg=Ext.MessageBox; - -Ext.QuickTips=function(){var el,tipBody,tipBodyText,tipTitle,tm,cfg,close,tagEls={},esc,removeCls=null,bdLeft,bdRight;var ce,bd,xy,dd;var visible=false,disabled=true,inited=false;var showProc=1,hideProc=1,dismissProc=1,locks=[];var onOver=function(e){if(disabled){return;} -var t=e.getTarget();if(!t||t.nodeType!==1||t==document||t==document.body){return;} -if(ce&&t==ce.el){clearTimeout(hideProc);return;} -if(t&&tagEls[t.id]){tagEls[t.id].el=t;showProc=show.defer(tm.showDelay,tm,[tagEls[t.id]]);return;} -var ttp,et=Ext.fly(t);var ns=cfg.namespace;if(tm.interceptTitles&&t.title){ttp=t.title;t.qtip=ttp;t.removeAttribute("title");e.preventDefault();}else{ttp=t.qtip||et.getAttributeNS(ns,cfg.attribute);} -if(ttp){showProc=show.defer(tm.showDelay,tm,[{el:t,text:ttp,width:et.getAttributeNS(ns,cfg.width),autoHide:et.getAttributeNS(ns,cfg.hide)!="user",title:et.getAttributeNS(ns,cfg.title),cls:et.getAttributeNS(ns,cfg.cls)}]);}};var onOut=function(e){clearTimeout(showProc);var t=e.getTarget();if(t&&ce&&ce.el==t&&(tm.autoHide&&ce.autoHide!==false)){hideProc=setTimeout(hide,tm.hideDelay);}};var onMove=function(e){if(disabled){return;} -xy=e.getXY();xy[1]+=18;if(tm.trackMouse&&ce){el.setXY(xy);}};var onDown=function(e){clearTimeout(showProc);clearTimeout(hideProc);if(!e.within(el)){if(tm.hideOnClick){hide();tm.disable();}}};var onUp=function(e){tm.enable();};var getPad=function(){return bdLeft.getPadding('l')+bdRight.getPadding('r');};var show=function(o){if(disabled){return;} -clearTimeout(dismissProc);ce=o;if(removeCls){el.removeClass(removeCls);removeCls=null;} -if(ce.cls){el.addClass(ce.cls);removeCls=ce.cls;} -if(ce.title){tipTitle.update(ce.title);tipTitle.show();}else{tipTitle.update('');tipTitle.hide();} -el.dom.style.width=tm.maxWidth+'px';tipBodyText.update(o.text);var p=getPad(),w=ce.width;if(!w){var td=tipBodyText.dom;var aw=Math.max(td.offsetWidth,td.clientWidth,td.scrollWidth);if(aw>tm.maxWidth){w=tm.maxWidth;}else if(aw<tm.minWidth){w=tm.minWidth;}else{w=aw;}} -el.setWidth(parseInt(w,10)+p);if(ce.autoHide===false){close.setDisplayed(true);if(dd){dd.unlock();}}else{close.setDisplayed(false);if(dd){dd.lock();}} -if(xy){el.avoidY=xy[1]-18;el.setXY(xy);} -if(tm.animate){el.setOpacity(.1);el.setStyle("visibility","visible");el.fadeIn({callback:afterShow});}else{afterShow();}};var afterShow=function(){if(ce){el.show();esc.enable();if(tm.autoDismiss&&ce.autoHide!==false){dismissProc=setTimeout(hide,tm.autoDismissDelay);}}};var hide=function(noanim){clearTimeout(dismissProc);clearTimeout(hideProc);ce=null;if(el.isVisible()){esc.disable();if(noanim!==true&&tm.animate){el.fadeOut({callback:afterHide});}else{afterHide();}}};var afterHide=function(){el.hide();if(removeCls){el.removeClass(removeCls);removeCls=null;}};return{minWidth:40,maxWidth:300,interceptTitles:false,trackMouse:false,hideOnClick:true,showDelay:500,hideDelay:200,autoHide:true,autoDismiss:true,autoDismissDelay:5000,animate:false,init:function(){tm=Ext.QuickTips;cfg=tm.tagConfig;if(!inited){if(!Ext.isReady){Ext.onReady(Ext.QuickTips.init,Ext.QuickTips);return;} -el=new Ext.Layer({cls:"x-tip",shadow:"drop",shim:true,constrain:true,shadowOffset:4});el.fxDefaults={stopFx:true};el.update('<div class="x-tip-top-left"><div class="x-tip-top-right"><div class="x-tip-top"></div></div></div><div class="x-tip-bd-left"><div class="x-tip-bd-right"><div class="x-tip-bd"><div class="x-tip-close"></div><h3></h3><div class="x-tip-bd-inner"></div><div class="x-clear"></div></div></div></div><div class="x-tip-ft-left"><div class="x-tip-ft-right"><div class="x-tip-ft"></div></div></div>');tipTitle=el.child('h3');tipTitle.enableDisplayMode("block");tipBody=el.child('div.x-tip-bd');tipBodyText=el.child('div.x-tip-bd-inner');bdLeft=el.child('div.x-tip-bd-left');bdRight=el.child('div.x-tip-bd-right');close=el.child('div.x-tip-close');close.enableDisplayMode("block");close.on("click",hide);var d=Ext.get(document);d.on("mousedown",onDown);d.on("mouseup",onUp);d.on("mouseover",onOver);d.on("mouseout",onOut);d.on("mousemove",onMove);esc=d.addKeyListener(27,hide);esc.disable();if(Ext.dd.DD){dd=el.initDD("default",null,{onDrag:function(){el.sync();}});dd.setHandleElId(tipTitle.id);dd.lock();} -inited=true;} -this.enable();},register:function(config){var cs=config instanceof Array?config:arguments;for(var i=0,len=cs.length;i<len;i++){var c=cs[i];var target=c.target;if(target){if(target instanceof Array){for(var j=0,jlen=target.length;j<jlen;j++){tagEls[target[j]]=c;}}else{tagEls[typeof target=='string'?target:Ext.id(target.id)]=c;}}}},unregister:function(el){delete tagEls[Ext.id(el)];},enable:function(){if(inited){locks.pop();if(locks.length<1){disabled=false;}}},disable:function(){disabled=true;clearTimeout(showProc);clearTimeout(hideProc);clearTimeout(dismissProc);if(ce){hide(true);} -locks.push(1);},isEnabled:function(){return!disabled;},tagConfig:{namespace:"ext",attribute:"qtip",width:"width",target:"target",title:"qtitle",hide:"hide",cls:"qclass"}};}();Ext.QuickTips.tips=Ext.QuickTips.register; - -Ext.tree.TreePanel=function(el,config){Ext.apply(this,config);Ext.tree.TreePanel.superclass.constructor.call(this);this.el=Ext.get(el);this.el.addClass('x-tree');this.id=this.el.id;this.addEvents({"beforeload":true,"load":true,"textchange":true,"beforeexpand":true,"beforecollapse":true,"expand":true,"disabledchange":true,"collapse":true,"beforeclick":true,"click":true,"dblclick":true,"contextmenu":true,"beforechildrenrendered":true,"startdrag":true,"enddrag":true,"dragdrop":true,"beforenodedrop":true,"nodedrop":true,"nodedragover":true});if(this.singleExpand){this.on("beforeexpand",this.restrictExpand,this);}};Ext.extend(Ext.tree.TreePanel,Ext.data.Tree,{rootVisible:true,animate:Ext.enableFx,lines:true,enableDD:false,hlDrop:Ext.enableFx,proxyNodeEvent:function(){this.fireEvent.apply(this,arguments);},restrictExpand:function(node){var p=node.parentNode;if(p){if(p.expandedChild&&p.expandedChild.parentNode==p){p.expandedChild.collapse();} -p.expandedChild=node;}},setRootNode:function(node){Ext.tree.TreePanel.superclass.setRootNode.call(this,node);if(!this.rootVisible){node.ui=new Ext.tree.RootTreeNodeUI(node);} -return node;},getEl:function(){return this.el;},getLoader:function(){return this.loader;},expandAll:function(){this.root.expand(true);},collapseAll:function(){this.root.collapse(true);},getSelectionModel:function(){if(!this.selModel){this.selModel=new Ext.tree.DefaultSelectionModel();} -return this.selModel;},expandPath:function(path,attr,callback){attr=attr||"id";var keys=path.split(this.pathSeparator);var curNode=this.root;if(curNode.attributes[attr]!=keys[1]){if(callback){callback(false,null);} -return;} -var index=1;var f=function(){if(++index==keys.length){if(callback){callback(true,curNode);} -return;} -var c=curNode.findChild(attr,keys[index]);if(!c){if(callback){callback(false,curNode);} -return;} -curNode=c;c.expand(false,false,f);};curNode.expand(false,false,f);},selectPath:function(path,attr,callback){attr=attr||"id";var keys=path.split(this.pathSeparator);var v=keys.pop();if(keys.length>0){var f=function(success,node){if(success&&node){var n=node.findChild(attr,v);if(n){n.select();if(callback){callback(true,n);}}}else{if(callback){callback(false,n);}}};this.expandPath(keys.join(this.pathSeparator),attr,f);}else{this.root.select();if(callback){callback(true,this.root);}}},getTreeEl:function(){return this.el;},render:function(){this.innerCt=this.el.createChild({tag:"ul",cls:"x-tree-root-ct "+ -(this.lines?"x-tree-lines":"x-tree-no-lines")});if(this.containerScroll){Ext.dd.ScrollManager.register(this.el);} -if((this.enableDD||this.enableDrop)&&!this.dropZone){this.dropZone=new Ext.tree.TreeDropZone(this,this.dropConfig||{ddGroup:this.ddGroup||"TreeDD",appendOnly:this.ddAppendOnly===true});} -if((this.enableDD||this.enableDrag)&&!this.dragZone){this.dragZone=new Ext.tree.TreeDragZone(this,this.dragConfig||{ddGroup:this.ddGroup||"TreeDD",scroll:this.ddScroll});} -this.getSelectionModel().init(this);this.root.render();if(!this.rootVisible){this.root.renderChildren();} -return this;}}); - -Ext.tree.DefaultSelectionModel=function(){this.selNode=null;this.addEvents({"selectionchange":true,"beforeselect":true});};Ext.extend(Ext.tree.DefaultSelectionModel,Ext.util.Observable,{init:function(tree){this.tree=tree;tree.getTreeEl().on("keydown",this.onKeyDown,this);tree.on("click",this.onNodeClick,this);},onNodeClick:function(node,e){this.select(node);},select:function(node){var last=this.selNode;if(last!=node&&this.fireEvent('beforeselect',this,node,last)!==false){if(last){last.ui.onSelectedChange(false);} -this.selNode=node;node.ui.onSelectedChange(true);this.fireEvent("selectionchange",this,node,last);} -return node;},unselect:function(node){if(this.selNode==node){this.clearSelections();}},clearSelections:function(){var n=this.selNode;if(n){n.ui.onSelectedChange(false);this.selNode=null;this.fireEvent("selectionchange",this,null);} -return n;},getSelectedNode:function(){return this.selNode;},isSelected:function(node){return this.selNode==node;},selectPrevious:function(){var s=this.selNode||this.lastSelNode;if(!s){return null;} -var ps=s.previousSibling;if(ps){if(!ps.isExpanded()||ps.childNodes.length<1){return this.select(ps);}else{var lc=ps.lastChild;while(lc&&lc.isExpanded()&&lc.childNodes.length>0){lc=lc.lastChild;} -return this.select(lc);}}else if(s.parentNode&&(this.tree.rootVisible||!s.parentNode.isRoot)){return this.select(s.parentNode);} -return null;},selectNext:function(){var s=this.selNode||this.lastSelNode;if(!s){return null;} -if(s.firstChild&&s.isExpanded()){return this.select(s.firstChild);}else if(s.nextSibling){return this.select(s.nextSibling);}else if(s.parentNode){var newS=null;s.parentNode.bubble(function(){if(this.nextSibling){newS=this.getOwnerTree().selModel.select(this.nextSibling);return false;}});return newS;} -return null;},onKeyDown:function(e){var s=this.selNode||this.lastSelNode;var sm=this;if(!s){return;} -var k=e.getKey();switch(k){case e.DOWN:e.stopEvent();this.selectNext();break;case e.UP:e.stopEvent();this.selectPrevious();break;case e.RIGHT:e.preventDefault();if(s.hasChildNodes()){if(!s.isExpanded()){s.expand();}else if(s.firstChild){this.select(s.firstChild,e);}} -break;case e.LEFT:e.preventDefault();if(s.hasChildNodes()&&s.isExpanded()){s.collapse();}else if(s.parentNode&&(this.tree.rootVisible||s.parentNode!=this.tree.getRootNode())){this.select(s.parentNode,e);} -break;};}});Ext.tree.MultiSelectionModel=function(){this.selNodes=[];this.selMap={};this.addEvents({"selectionchange":true});};Ext.extend(Ext.tree.MultiSelectionModel,Ext.util.Observable,{init:function(tree){this.tree=tree;tree.getTreeEl().on("keydown",this.onKeyDown,this);tree.on("click",this.onNodeClick,this);},onNodeClick:function(node,e){this.select(node,e,e.ctrlKey);},select:function(node,e,keepExisting){if(keepExisting!==true){this.clearSelections(true);} -if(this.isSelected(node)){this.lastSelNode=node;return node;} -this.selNodes.push(node);this.selMap[node.id]=node;this.lastSelNode=node;node.ui.onSelectedChange(true);this.fireEvent("selectionchange",this,this.selNodes);return node;},unselect:function(node){if(this.selMap[node.id]){node.ui.onSelectedChange(false);var sn=this.selNodes;var index=-1;if(sn.indexOf){index=sn.indexOf(node);}else{for(var i=0,len=sn.length;i<len;i++){if(sn[i]==node){index=i;break;}}} -if(index!=-1){this.selNodes.splice(index,1);} -delete this.selMap[node.id];this.fireEvent("selectionchange",this,this.selNodes);}},clearSelections:function(suppressEvent){var sn=this.selNodes;if(sn.length>0){for(var i=0,len=sn.length;i<len;i++){sn[i].ui.onSelectedChange(false);} -this.selNodes=[];this.selMap={};if(suppressEvent!==true){this.fireEvent("selectionchange",this,this.selNodes);}}},isSelected:function(node){return this.selMap[node.id]?true:false;},getSelectedNodes:function(){return this.selNodes;},onKeyDown:Ext.tree.DefaultSelectionModel.prototype.onKeyDown,selectNext:Ext.tree.DefaultSelectionModel.prototype.selectNext,selectPrevious:Ext.tree.DefaultSelectionModel.prototype.selectPrevious}); - -Ext.tree.TreeNode=function(attributes){attributes=attributes||{};if(typeof attributes=="string"){attributes={text:attributes};} -this.childrenRendered=false;this.rendered=false;Ext.tree.TreeNode.superclass.constructor.call(this,attributes);this.expanded=attributes.expanded===true;this.isTarget=attributes.isTarget!==false;this.draggable=attributes.draggable!==false&&attributes.allowDrag!==false;this.allowChildren=attributes.allowChildren!==false&&attributes.allowDrop!==false;this.text=attributes.text;this.disabled=attributes.disabled===true;this.addEvents({"textchange":true,"beforeexpand":true,"beforecollapse":true,"expand":true,"disabledchange":true,"collapse":true,"beforeclick":true,"click":true,"dblclick":true,"contextmenu":true,"beforechildrenrendered":true});var uiClass=this.attributes.uiProvider||Ext.tree.TreeNodeUI;this.ui=new uiClass(this);};Ext.extend(Ext.tree.TreeNode,Ext.data.Node,{preventHScroll:true,isExpanded:function(){return this.expanded;},getUI:function(){return this.ui;},setFirstChild:function(node){var of=this.firstChild;Ext.tree.TreeNode.superclass.setFirstChild.call(this,node);if(this.childrenRendered&&of&&node!=of){of.renderIndent(true,true);} -if(this.rendered){this.renderIndent(true,true);}},setLastChild:function(node){var ol=this.lastChild;Ext.tree.TreeNode.superclass.setLastChild.call(this,node);if(this.childrenRendered&&ol&&node!=ol){ol.renderIndent(true,true);} -if(this.rendered){this.renderIndent(true,true);}},appendChild:function(){var node=Ext.tree.TreeNode.superclass.appendChild.apply(this,arguments);if(node&&this.childrenRendered){node.render();} -this.ui.updateExpandIcon();return node;},removeChild:function(node){this.ownerTree.getSelectionModel().unselect(node);Ext.tree.TreeNode.superclass.removeChild.apply(this,arguments);if(this.childrenRendered){node.ui.remove();} -if(this.childNodes.length<1){this.collapse(false,false);}else{this.ui.updateExpandIcon();} -return node;},insertBefore:function(node,refNode){var newNode=Ext.tree.TreeNode.superclass.insertBefore.apply(this,arguments);if(newNode&&refNode&&this.childrenRendered){node.render();} -this.ui.updateExpandIcon();return newNode;},setText:function(text){var oldText=this.text;this.text=text;this.attributes.text=text;if(this.rendered){this.ui.onTextChange(this,text,oldText);} -this.fireEvent("textchange",this,text,oldText);},select:function(){this.getOwnerTree().getSelectionModel().select(this);},unselect:function(){this.getOwnerTree().getSelectionModel().unselect(this);},isSelected:function(){return this.getOwnerTree().getSelectionModel().isSelected(this);},expand:function(deep,anim,callback){if(!this.expanded){if(this.fireEvent("beforeexpand",this,deep,anim)===false){return;} -if(!this.childrenRendered){this.renderChildren();} -this.expanded=true;if(!this.isHiddenRoot()&&(this.getOwnerTree().animate&&anim!==false)||anim){this.ui.animExpand(function(){this.fireEvent("expand",this);if(typeof callback=="function"){callback(this);} -if(deep===true){this.expandChildNodes(true);}}.createDelegate(this));return;}else{this.ui.expand();this.fireEvent("expand",this);if(typeof callback=="function"){callback(this);}}}else{if(typeof callback=="function"){callback(this);}} -if(deep===true){this.expandChildNodes(true);}},isHiddenRoot:function(){return this.isRoot&&!this.getOwnerTree().rootVisible;},collapse:function(deep,anim){if(this.expanded&&!this.isHiddenRoot()){if(this.fireEvent("beforecollapse",this,deep,anim)===false){return;} -this.expanded=false;if((this.getOwnerTree().animate&&anim!==false)||anim){this.ui.animCollapse(function(){this.fireEvent("collapse",this);if(deep===true){this.collapseChildNodes(true);}}.createDelegate(this));return;}else{this.ui.collapse();this.fireEvent("collapse",this);}} -if(deep===true){var cs=this.childNodes;for(var i=0,len=cs.length;i<len;i++){cs[i].collapse(true,false);}}},delayedExpand:function(delay){if(!this.expandProcId){this.expandProcId=this.expand.defer(delay,this);}},cancelExpand:function(){if(this.expandProcId){clearTimeout(this.expandProcId);} -this.expandProcId=false;},toggle:function(){if(this.expanded){this.collapse();}else{this.expand();}},ensureVisible:function(callback){var tree=this.getOwnerTree();tree.expandPath(this.getPath(),false,function(){tree.getTreeEl().scrollChildIntoView(this.ui.anchor);Ext.callback(callback);}.createDelegate(this));},expandChildNodes:function(deep){var cs=this.childNodes;for(var i=0,len=cs.length;i<len;i++){cs[i].expand(deep);}},collapseChildNodes:function(deep){var cs=this.childNodes;for(var i=0,len=cs.length;i<len;i++){cs[i].collapse(deep);}},disable:function(){this.disabled=true;this.unselect();if(this.rendered&&this.ui.onDisableChange){this.ui.onDisableChange(this,true);} -this.fireEvent("disabledchange",this,true);},enable:function(){this.disabled=false;if(this.rendered&&this.ui.onDisableChange){this.ui.onDisableChange(this,false);} -this.fireEvent("disabledchange",this,false);},renderChildren:function(suppressEvent){if(suppressEvent!==false){this.fireEvent("beforechildrenrendered",this);} -var cs=this.childNodes;for(var i=0,len=cs.length;i<len;i++){cs[i].render(true);} -this.childrenRendered=true;},sort:function(fn,scope){Ext.tree.TreeNode.superclass.sort.apply(this,arguments);if(this.childrenRendered){var cs=this.childNodes;for(var i=0,len=cs.length;i<len;i++){cs[i].render(true);}}},render:function(bulkRender){this.ui.render(bulkRender);if(!this.rendered){this.rendered=true;if(this.expanded){this.expanded=false;this.expand(false,false);}}},renderIndent:function(deep,refresh){if(refresh){this.ui.childIndent=null;} -this.ui.renderIndent();if(deep===true&&this.childrenRendered){var cs=this.childNodes;for(var i=0,len=cs.length;i<len;i++){cs[i].renderIndent(true,refresh);}}}}); - -Ext.tree.AsyncTreeNode=function(config){this.loaded=false;this.loading=false;Ext.tree.AsyncTreeNode.superclass.constructor.apply(this,arguments);this.addEvents({'beforeload':true,'load':true});};Ext.extend(Ext.tree.AsyncTreeNode,Ext.tree.TreeNode,{expand:function(deep,anim,callback){if(this.loading){var timer;var f=function(){if(!this.loading){clearInterval(timer);this.expand(deep,anim,callback);}}.createDelegate(this);timer=setInterval(f,200);return;} -if(!this.loaded){if(this.fireEvent("beforeload",this)===false){return;} -this.loading=true;this.ui.beforeLoad(this);var loader=this.loader||this.attributes.loader||this.getOwnerTree().getLoader();if(loader){loader.load(this,this.loadComplete.createDelegate(this,[deep,anim,callback]));return;}} -Ext.tree.AsyncTreeNode.superclass.expand.call(this,deep,anim,callback);},isLoading:function(){return this.loading;},loadComplete:function(deep,anim,callback){this.loading=false;this.loaded=true;this.ui.afterLoad(this);this.fireEvent("load",this);this.expand(deep,anim,callback);},isLoaded:function(){return this.loaded;},hasChildNodes:function(){if(!this.isLeaf()&&!this.loaded){return true;}else{return Ext.tree.AsyncTreeNode.superclass.hasChildNodes.call(this);}},reload:function(callback){this.collapse(false,false);while(this.firstChild){this.removeChild(this.firstChild);} -this.childrenRendered=false;this.loaded=false;if(this.isHiddenRoot()){this.expanded=false;} -this.expand(false,false,callback);}}); - -Ext.tree.TreeNodeUI=function(node){this.node=node;this.rendered=false;this.animating=false;this.emptyIcon=Ext.BLANK_IMAGE_URL;};Ext.tree.TreeNodeUI.prototype={removeChild:function(node){if(this.rendered){this.ctNode.removeChild(node.ui.getEl());}},beforeLoad:function(){this.addClass("x-tree-node-loading");},afterLoad:function(){this.removeClass("x-tree-node-loading");},onTextChange:function(node,text,oldText){if(this.rendered){this.textNode.innerHTML=text;}},onDisableChange:function(node,state){this.disabled=state;if(state){this.addClass("x-tree-node-disabled");}else{this.removeClass("x-tree-node-disabled");}},onSelectedChange:function(state){if(state){this.focus();this.addClass("x-tree-selected");}else{this.removeClass("x-tree-selected");}},onMove:function(tree,node,oldParent,newParent,index,refNode){this.childIndent=null;if(this.rendered){var targetNode=newParent.ui.getContainer();if(!targetNode){this.holder=document.createElement("div");this.holder.appendChild(this.wrap);return;} -var insertBefore=refNode?refNode.ui.getEl():null;if(insertBefore){targetNode.insertBefore(this.wrap,insertBefore);}else{targetNode.appendChild(this.wrap);} -this.node.renderIndent(true);}},addClass:function(cls){if(this.elNode){Ext.fly(this.elNode).addClass(cls);}},removeClass:function(cls){if(this.elNode){Ext.fly(this.elNode).removeClass(cls);}},remove:function(){if(this.rendered){this.holder=document.createElement("div");this.holder.appendChild(this.wrap);}},fireEvent:function(){return this.node.fireEvent.apply(this.node,arguments);},initEvents:function(){this.node.on("move",this.onMove,this);var E=Ext.EventManager;var a=this.anchor;var el=Ext.fly(a);if(Ext.isOpera){el.setStyle("text-decoration","none");} -el.on("click",this.onClick,this);el.on("dblclick",this.onDblClick,this);el.on("contextmenu",this.onContextMenu,this);var icon=Ext.fly(this.iconNode);icon.on("click",this.onClick,this);icon.on("dblclick",this.onDblClick,this);icon.on("contextmenu",this.onContextMenu,this);E.on(this.ecNode,"click",this.ecClick,this,true);if(this.node.disabled){this.addClass("x-tree-node-disabled");} -if(this.node.hidden){this.addClass("x-tree-node-disabled");} -var ot=this.node.getOwnerTree();var dd=ot.enableDD||ot.enableDrag||ot.enableDrop;if(dd&&(!this.node.isRoot||ot.rootVisible)){Ext.dd.Registry.register(this.elNode,{node:this.node,handles:[this.iconNode,this.textNode],isHandle:false});}},hide:function(){if(this.rendered){this.wrap.style.display="none";}},show:function(){if(this.rendered){this.wrap.style.display="";}},onContextMenu:function(e){e.preventDefault();this.focus();this.fireEvent("contextmenu",this.node,e);},onClick:function(e){if(this.dropping){return;} -if(this.fireEvent("beforeclick",this.node,e)!==false){if(!this.disabled&&this.node.attributes.href){this.fireEvent("click",this.node,e);return;} -e.preventDefault();if(this.disabled){return;} -if(this.node.attributes.singleClickExpand&&!this.animating&&this.node.hasChildNodes()){this.node.toggle();} -this.fireEvent("click",this.node,e);}else{e.stopEvent();}},onDblClick:function(e){e.preventDefault();if(this.disabled){return;} -if(!this.animating&&this.node.hasChildNodes()){this.node.toggle();} -this.fireEvent("dblclick",this.node,e);},ecClick:function(e){if(!this.animating&&this.node.hasChildNodes()){this.node.toggle();}},startDrop:function(){this.dropping=true;},endDrop:function(){setTimeout(function(){this.dropping=false;}.createDelegate(this),50);},expand:function(){this.updateExpandIcon();this.ctNode.style.display="";},focus:function(){if(!this.node.preventHScroll){try{this.anchor.focus();}catch(e){}}else if(!Ext.isIE){try{var noscroll=this.node.getOwnerTree().getTreeEl().dom;var l=noscroll.scrollLeft;this.anchor.focus();noscroll.scrollLeft=l;}catch(e){}}},blur:function(){try{this.anchor.blur();}catch(e){}},animExpand:function(callback){var ct=Ext.get(this.ctNode);ct.stopFx();if(!this.node.hasChildNodes()){this.updateExpandIcon();this.ctNode.style.display="";Ext.callback(callback);return;} -this.animating=true;this.updateExpandIcon();ct.slideIn('t',{callback:function(){this.animating=false;Ext.callback(callback);},scope:this,duration:this.node.ownerTree.duration||.25});},highlight:function(){var tree=this.node.getOwnerTree();Ext.fly(this.wrap).highlight(tree.hlColor||"C3DAF9",{endColor:tree.hlBaseColor});},collapse:function(){this.updateExpandIcon();this.ctNode.style.display="none";},animCollapse:function(callback){var ct=Ext.get(this.ctNode);ct.enableDisplayMode('block');ct.stopFx();this.animating=true;this.updateExpandIcon();ct.slideOut('t',{callback:function(){this.animating=false;Ext.callback(callback);},scope:this,duration:this.node.ownerTree.duration||.25});},getContainer:function(){return this.ctNode;},getEl:function(){return this.wrap;},appendDDGhost:function(ghostNode){ghostNode.appendChild(this.elNode.cloneNode(true));},getDDRepairXY:function(){return Ext.lib.Dom.getXY(this.iconNode);},onRender:function(){this.render();},render:function(bulkRender){var n=this.node,a=n.attributes;var targetNode=n.parentNode?n.parentNode.ui.getContainer():n.ownerTree.innerCt.dom;if(!this.rendered){this.rendered=true;this.renderElements(n,a,targetNode,bulkRender);if(a.qtip){if(this.textNode.setAttributeNS){this.textNode.setAttributeNS("ext","qtip",a.qtip);if(a.qtipTitle){this.textNode.setAttributeNS("ext","qtitle",a.qtipTitle);}}else{this.textNode.setAttribute("ext:qtip",a.qtip);if(a.qtipTitle){this.textNode.setAttribute("ext:qtitle",a.qtipTitle);}}}else if(a.qtipCfg){a.qtipCfg.target=Ext.id(this.textNode);Ext.QuickTips.register(a.qtipCfg);} -this.initEvents();if(!this.node.expanded){this.updateExpandIcon();}}else{if(bulkRender===true){targetNode.appendChild(this.wrap);}}},renderElements:function(n,a,targetNode,bulkRender){this.indentMarkup=n.parentNode?n.parentNode.ui.getChildIndent():'';var buf=['<li class="x-tree-node"><div class="x-tree-node-el ',a.cls,'">','<span class="x-tree-node-indent">',this.indentMarkup,"</span>",'<img src="',this.emptyIcon,'" class="x-tree-ec-icon">','<img src="',a.icon||this.emptyIcon,'" class="x-tree-node-icon',(a.icon?" x-tree-node-inline-icon":""),(a.iconCls?" "+a.iconCls:""),'" unselectable="on">','<a hidefocus="on" href="',a.href?a.href:"#",'" tabIndex="1" ',a.hrefTarget?' target="'+a.hrefTarget+'"':"",'><span unselectable="on">',n.text,"</span></a></div>",'<ul class="x-tree-node-ct" style="display:none;"></ul>',"</li>"];if(bulkRender!==true&&n.nextSibling&&n.nextSibling.ui.getEl()){this.wrap=Ext.DomHelper.insertHtml("beforeBegin",n.nextSibling.ui.getEl(),buf.join(""));}else{this.wrap=Ext.DomHelper.insertHtml("beforeEnd",targetNode,buf.join(""));} -this.elNode=this.wrap.childNodes[0];this.ctNode=this.wrap.childNodes[1];var cs=this.elNode.childNodes;this.indentNode=cs[0];this.ecNode=cs[1];this.iconNode=cs[2];this.anchor=cs[3];this.textNode=cs[3].firstChild;},getAnchor:function(){return this.anchor;},getTextEl:function(){return this.textNode;},getIconEl:function(){return this.iconNode;},updateExpandIcon:function(){if(this.rendered){var n=this.node,c1,c2;var cls=n.isLast()?"x-tree-elbow-end":"x-tree-elbow";var hasChild=n.hasChildNodes();if(hasChild){if(n.expanded){cls+="-minus";c1="x-tree-node-collapsed";c2="x-tree-node-expanded";}else{cls+="-plus";c1="x-tree-node-expanded";c2="x-tree-node-collapsed";} -if(this.wasLeaf){this.removeClass("x-tree-node-leaf");this.wasLeaf=false;} -if(this.c1!=c1||this.c2!=c2){Ext.fly(this.elNode).replaceClass(c1,c2);this.c1=c1;this.c2=c2;}}else{if(!this.wasLeaf){Ext.fly(this.elNode).replaceClass("x-tree-node-expanded","x-tree-node-leaf");delete this.c1;delete this.c2;this.wasLeaf=true;}} -var ecc="x-tree-ec-icon "+cls;if(this.ecc!=ecc){this.ecNode.className=ecc;this.ecc=ecc;}}},getChildIndent:function(){if(!this.childIndent){var buf=[];var p=this.node;while(p){if(!p.isRoot||(p.isRoot&&p.ownerTree.rootVisible)){if(!p.isLast()){buf.unshift('<img src="'+this.emptyIcon+'" class="x-tree-elbow-line">');}else{buf.unshift('<img src="'+this.emptyIcon+'" class="x-tree-icon">');}} -p=p.parentNode;} -this.childIndent=buf.join("");} -return this.childIndent;},renderIndent:function(){if(this.rendered){var indent="";var p=this.node.parentNode;if(p){indent=p.ui.getChildIndent();} -if(this.indentMarkup!=indent){this.indentNode.innerHTML=indent;this.indentMarkup=indent;} -this.updateExpandIcon();}}};Ext.tree.RootTreeNodeUI=function(){Ext.tree.RootTreeNodeUI.superclass.constructor.apply(this,arguments);};Ext.extend(Ext.tree.RootTreeNodeUI,Ext.tree.TreeNodeUI,{render:function(){if(!this.rendered){var targetNode=this.node.ownerTree.innerCt.dom;this.node.expanded=true;targetNode.innerHTML='<div class="x-tree-root-node"></div>';this.wrap=this.ctNode=targetNode.firstChild;}},collapse:function(){},expand:function(){}}); - -Ext.tree.TreeLoader=function(config){this.baseParams={};this.requestMethod="POST";Ext.apply(this,config);this.addEvents({"beforeload":true,"load":true,"loadexception":true});Ext.tree.TreeLoader.superclass.constructor.call(this);};Ext.extend(Ext.tree.TreeLoader,Ext.util.Observable,{uiProviders:{},clearOnLoad:true,load:function(node,callback){if(this.clearOnLoad){while(node.firstChild){node.removeChild(node.firstChild);}} -if(node.attributes.children){var cs=node.attributes.children;for(var i=0,len=cs.length;i<len;i++){node.appendChild(this.createNode(cs[i]));} -if(typeof callback=="function"){callback();}}else if(this.dataUrl){this.requestData(node,callback);}},getParams:function(node){var buf=[],bp=this.baseParams;for(var key in bp){if(typeof bp[key]!="function"){buf.push(encodeURIComponent(key),"=",encodeURIComponent(bp[key]),"&");}} -buf.push("node=",encodeURIComponent(node.id));return buf.join("");},requestData:function(node,callback){if(this.fireEvent("beforeload",this,node,callback)!==false){var params=this.getParams(node);var cb={success:this.handleResponse,failure:this.handleFailure,scope:this,argument:{callback:callback,node:node}};this.transId=Ext.lib.Ajax.request(this.requestMethod,this.dataUrl,cb,params);}else{if(typeof callback=="function"){callback();}}},isLoading:function(){return this.transId?true:false;},abort:function(){if(this.isLoading()){Ext.lib.Ajax.abort(this.transId);}},createNode:function(attr){if(this.applyLoader!==false){attr.loader=this;} -if(typeof attr.uiProvider=='string'){attr.uiProvider=this.uiProviders[attr.uiProvider]||eval(attr.uiProvider);} -return(attr.leaf?new Ext.tree.TreeNode(attr):new Ext.tree.AsyncTreeNode(attr));},processResponse:function(response,node,callback){var json=response.responseText;try{var o=eval("("+json+")");for(var i=0,len=o.length;i<len;i++){var n=this.createNode(o[i]);if(n){node.appendChild(n);}} -if(typeof callback=="function"){callback(this,node);}}catch(e){this.handleFailure(response);}},handleResponse:function(response){this.transId=false;var a=response.argument;this.processResponse(response,a.node,a.callback);this.fireEvent("load",this,a.node,response);},handleFailure:function(response){this.transId=false;var a=response.argument;this.fireEvent("loadexception",this,a.node,response);if(typeof a.callback=="function"){a.callback(this,a.node);}}}); - -Ext.tree.TreeFilter=function(tree,config){this.tree=tree;this.filtered={};Ext.apply(this,config,{clearBlank:false,reverse:false,autoClear:false,remove:false});};Ext.tree.TreeFilter.prototype={filter:function(value,attr,startNode){attr=attr||"text";var f;if(typeof value=="string"){var vlen=value.length;if(vlen==0&&this.clearBlank){this.clearFilter();return;} -value=value.toLowerCase();f=function(n){return n.attributes[attr].substr(0,vlen).toLowerCase()==value;};}else if(value.exec){f=function(n){return value.test(n.attributes[attr]);};}else{throw'Illegal filter type, must be string or regex';} -this.filterBy(f,null,startNode);},filterBy:function(fn,scope,startNode){startNode=startNode||this.tree.root;if(this.autoClear){this.clearFilter();} -var af=this.filtered,rv=this.reverse;var f=function(n){if(n==startNode){return true;} -if(af[n.id]){return false;} -var m=fn.call(scope||n,n);if(!m||rv){af[n.id]=n;n.ui.hide();return false;} -return true;};startNode.cascade(f);if(this.remove){for(var id in af){if(typeof id!="function"){var n=af[id];if(n&&n.parentNode){n.parentNode.removeChild(n);}}}}},clear:function(){var t=this.tree;var af=this.filtered;for(var id in af){if(typeof id!="function"){var n=af[id];if(n){n.ui.show();}}} -this.filtered={};}}; - -Ext.tree.TreeSorter=function(tree,config){Ext.apply(this,config);tree.on("beforechildrenrendered",this.doSort,this);tree.on("append",this.updateSort,this);tree.on("insert",this.updateSort,this);var dsc=this.dir&&this.dir.toLowerCase()=="desc";var p=this.property||"text";var sortType=this.sortType;var fs=this.folderSort;var cs=this.caseSensitive===true;var leafAttr=this.leafAttr||'leaf';this.sortFn=function(n1,n2){if(fs){if(n1.attributes[leafAttr]&&!n2.attributes[leafAttr]){return 1;} -if(!n1.attributes[leafAttr]&&n2.attributes[leafAttr]){return-1;}} -var v1=sortType?sortType(n1):(cs?n1[p]:n1[p].toUpperCase());var v2=sortType?sortType(n2):(cs?n2[p]:n2[p].toUpperCase());if(v1<v2){return dsc?+1:-1;}else if(v1>v2){return dsc?-1:+1;}else{return 0;}};};Ext.tree.TreeSorter.prototype={doSort:function(node){node.sort(this.sortFn);},compareNodes:function(n1,n2){return(n1.text.toUpperCase()>n2.text.toUpperCase()?1:-1);},updateSort:function(tree,node){if(node.childrenRendered){this.doSort.defer(1,this,[node]);}}}; - -if(Ext.dd.DropZone){Ext.tree.TreeDropZone=function(tree,config){this.allowParentInsert=false;this.allowContainerDrop=false;this.appendOnly=false;Ext.tree.TreeDropZone.superclass.constructor.call(this,tree.innerCt,config);this.tree=tree;this.lastInsertClass="x-tree-no-status";this.dragOverData={};};Ext.extend(Ext.tree.TreeDropZone,Ext.dd.DropZone,{ddGroup:"TreeDD",expandDelay:1000,expandNode:function(node){if(node.hasChildNodes()&&!node.isExpanded()){node.expand(false,null,this.triggerCacheRefresh.createDelegate(this));}},queueExpand:function(node){this.expandProcId=this.expandNode.defer(this.expandDelay,this,[node]);},cancelExpand:function(){if(this.expandProcId){clearTimeout(this.expandProcId);this.expandProcId=false;}},isValidDropPoint:function(n,pt,dd,e,data){if(!n||!data){return false;} -var targetNode=n.node;var dropNode=data.node;if(!(targetNode&&targetNode.isTarget&&pt)){return false;} -if(pt=="append"&&targetNode.allowChildren===false){return false;} -if((pt=="above"||pt=="below")&&(targetNode.parentNode&&targetNode.parentNode.allowChildren===false)){return false;} -if(dropNode&&(targetNode==dropNode||dropNode.contains(targetNode))){return false;} -var overEvent=this.dragOverData;overEvent.tree=this.tree;overEvent.target=targetNode;overEvent.data=data;overEvent.point=pt;overEvent.source=dd;overEvent.rawEvent=e;overEvent.dropNode=dropNode;overEvent.cancel=false;var result=this.tree.fireEvent("nodedragover",overEvent);return overEvent.cancel===false&&result!==false;},getDropPoint:function(e,n,dd){var tn=n.node;if(tn.isRoot){return tn.allowChildren!==false?"append":false;} -var dragEl=n.ddel;var t=Ext.lib.Dom.getY(dragEl),b=t+dragEl.offsetHeight;var y=Ext.lib.Event.getPageY(e);var noAppend=tn.allowChildren===false||tn.isLeaf();if(this.appendOnly||tn.parentNode.allowChildren===false){return noAppend?false:"append";} -var noBelow=false;if(!this.allowParentInsert){noBelow=tn.hasChildNodes()&&tn.isExpanded();} -var q=(b-t)/(noAppend?2:3);if(y>=t&&y<(t+q)){return"above";}else if(!noBelow&&(noAppend||y>=b-q&&y<=b)){return"below";}else{return"append";}},onNodeEnter:function(n,dd,e,data){this.cancelExpand();},onNodeOver:function(n,dd,e,data){var pt=this.getDropPoint(e,n,dd);var node=n.node;if(!this.expandProcId&&pt=="append"&&node.hasChildNodes()&&!n.node.isExpanded()){this.queueExpand(node);}else if(pt!="append"){this.cancelExpand();} -var returnCls=this.dropNotAllowed;if(this.isValidDropPoint(n,pt,dd,e,data)){if(pt){var el=n.ddel;var cls;if(pt=="above"){returnCls=n.node.isFirst()?"x-tree-drop-ok-above":"x-tree-drop-ok-between";cls="x-tree-drag-insert-above";}else if(pt=="below"){returnCls=n.node.isLast()?"x-tree-drop-ok-below":"x-tree-drop-ok-between";cls="x-tree-drag-insert-below";}else{returnCls="x-tree-drop-ok-append";cls="x-tree-drag-append";} -if(this.lastInsertClass!=cls){Ext.fly(el).replaceClass(this.lastInsertClass,cls);this.lastInsertClass=cls;}}} -return returnCls;},onNodeOut:function(n,dd,e,data){this.cancelExpand();this.removeDropIndicators(n);},onNodeDrop:function(n,dd,e,data){var point=this.getDropPoint(e,n,dd);var targetNode=n.node;targetNode.ui.startDrop();if(!this.isValidDropPoint(n,point,dd,e,data)){targetNode.ui.endDrop();return false;} -var dropNode=data.node||(dd.getTreeNode?dd.getTreeNode(data,targetNode,point,e):null);var dropEvent={tree:this.tree,target:targetNode,data:data,point:point,source:dd,rawEvent:e,dropNode:dropNode,cancel:!dropNode};var retval=this.tree.fireEvent("beforenodedrop",dropEvent);if(retval===false||dropEvent.cancel===true||!dropEvent.dropNode){targetNode.ui.endDrop();return false;} -targetNode=dropEvent.target;if(point=="append"&&!targetNode.isExpanded()){targetNode.expand(false,null,function(){this.completeDrop(dropEvent);}.createDelegate(this));}else{this.completeDrop(dropEvent);} -return true;},completeDrop:function(de){var ns=de.dropNode,p=de.point,t=de.target;if(!(ns instanceof Array)){ns=[ns];} -var n;for(var i=0,len=ns.length;i<len;i++){n=ns[i];if(p=="above"){t.parentNode.insertBefore(n,t);}else if(p=="below"){t.parentNode.insertBefore(n,t.nextSibling);}else{t.appendChild(n);}} -n.ui.focus();if(this.tree.hlDrop){n.ui.highlight();} -t.ui.endDrop();this.tree.fireEvent("nodedrop",de);},afterNodeMoved:function(dd,data,e,targetNode,dropNode){if(this.tree.hlDrop){dropNode.ui.focus();dropNode.ui.highlight();} -this.tree.fireEvent("nodedrop",this.tree,targetNode,data,dd,e);},getTree:function(){return this.tree;},removeDropIndicators:function(n){if(n&&n.ddel){var el=n.ddel;Ext.fly(el).removeClass(["x-tree-drag-insert-above","x-tree-drag-insert-below","x-tree-drag-append"]);this.lastInsertClass="_noclass";}},beforeDragDrop:function(target,e,id){this.cancelExpand();return true;},afterRepair:function(data){if(data&&Ext.enableFx){data.node.ui.highlight();} -this.hideProxy();}});} - -if(Ext.dd.DragZone){Ext.tree.TreeDragZone=function(tree,config){Ext.tree.TreeDragZone.superclass.constructor.call(this,tree.getTreeEl(),config);this.tree=tree;};Ext.extend(Ext.tree.TreeDragZone,Ext.dd.DragZone,{ddGroup:"TreeDD",onBeforeDrag:function(data,e){var n=data.node;return n&&n.draggable&&!n.disabled;},onInitDrag:function(e){var data=this.dragData;this.tree.getSelectionModel().select(data.node);this.proxy.update("");data.node.ui.appendDDGhost(this.proxy.ghost.dom);this.tree.fireEvent("startdrag",this.tree,data.node,e);},getRepairXY:function(e,data){return data.node.ui.getDDRepairXY();},onEndDrag:function(data,e){this.tree.fireEvent("enddrag",this.tree,data.node,e);},onValidDrop:function(dd,e,id){this.tree.fireEvent("dragdrop",this.tree,this.dragData.node,dd,e);this.hideProxy();},beforeInvalidDrop:function(e,id){var sm=this.tree.getSelectionModel();sm.clearSelections();sm.select(this.dragData.node);}});} - -Ext.tree.TreeEditor=function(tree,config){config=config||{};var field=config.events?config:new Ext.form.TextField(config);Ext.tree.TreeEditor.superclass.constructor.call(this,field);this.tree=tree;tree.on('beforeclick',this.beforeNodeClick,this);tree.getTreeEl().on('mousedown',this.hide,this);this.on('complete',this.updateNode,this);this.on('beforestartedit',this.fitToTree,this);this.on('startedit',this.bindScroll,this,{delay:10});this.on('specialkey',this.onSpecialKey,this);};Ext.extend(Ext.tree.TreeEditor,Ext.Editor,{alignment:"l-l",autoSize:false,hideEl:false,cls:"x-small-editor x-tree-editor",shim:false,shadow:"frame",maxWidth:250,fitToTree:function(ed,el){var td=this.tree.getTreeEl().dom,nd=el.dom;if(td.scrollLeft>nd.offsetLeft){td.scrollLeft=nd.offsetLeft;} -var w=Math.min(this.maxWidth,(td.clientWidth>20?td.clientWidth:td.offsetWidth)-Math.max(0,nd.offsetLeft-td.scrollLeft)-5);this.setSize(w,'');},triggerEdit:function(node){this.completeEdit();this.editNode=node;this.startEdit(node.ui.textNode,node.text);},bindScroll:function(){this.tree.getTreeEl().on('scroll',this.cancelEdit,this);},beforeNodeClick:function(node){if(this.tree.getSelectionModel().isSelected(node)){this.triggerEdit(node);return false;}},updateNode:function(ed,value){this.tree.getTreeEl().un('scroll',this.cancelEdit,this);this.editNode.setText(value);},onSpecialKey:function(field,e){var k=e.getKey();if(k==e.ESC){e.stopEvent();this.cancelEdit();}else if(k==e.ENTER&&!e.hasModifier()){e.stopEvent();this.completeEdit();}}}); - -Ext.menu.Menu=function(config){Ext.apply(this,config);this.id=this.id||Ext.id();this.addEvents({beforeshow:true,beforehide:true,show:true,hide:true,click:true,mouseover:true,mouseout:true,itemclick:true});Ext.menu.MenuMgr.register(this);var mis=this.items;this.items=new Ext.util.MixedCollection();if(mis){this.add.apply(this,mis);}};Ext.extend(Ext.menu.Menu,Ext.util.Observable,{minWidth:120,shadow:"sides",subMenuAlign:"tl-tr?",defaultAlign:"tl-bl?",allowOtherMenus:false,hidden:true,render:function(){if(this.el){return;} -var el=this.el=new Ext.Layer({cls:"x-menu",shadow:this.shadow,constrain:false,parentEl:this.parentEl||document.body,zindex:15000});this.keyNav=new Ext.menu.MenuNav(this);if(this.plain){el.addClass("x-menu-plain");} -if(this.cls){el.addClass(this.cls);} -this.focusEl=el.createChild({tag:"a",cls:"x-menu-focus",href:"#",onclick:"return false;",tabIndex:"-1"});var ul=el.createChild({tag:"ul",cls:"x-menu-list"});ul.on("click",this.onClick,this);ul.on("mouseover",this.onMouseOver,this);ul.on("mouseout",this.onMouseOut,this);this.items.each(function(item){var li=document.createElement("li");li.className="x-menu-list-item";ul.dom.appendChild(li);item.render(li,this);},this);this.ul=ul;this.autoWidth();},autoWidth:function(){var el=this.el,ul=this.ul;if(!el){return;} -var w=this.width;if(w){el.setWidth(w);}else if(Ext.isIE){el.setWidth(this.minWidth);var t=el.dom.offsetWidth;el.setWidth(ul.getWidth()+el.getFrameWidth("lr"));}},delayAutoWidth:function(){if(this.rendered){if(!this.awTask){this.awTask=new Ext.util.DelayedTask(this.autoWidth,this);} -this.awTask.delay(20);}},findTargetItem:function(e){var t=e.getTarget(".x-menu-list-item",this.ul,true);if(t&&t.menuItemId){return this.items.get(t.menuItemId);}},onClick:function(e){var t;if(t=this.findTargetItem(e)){t.onClick(e);this.fireEvent("click",this,t,e);}},setActiveItem:function(item,autoExpand){if(item!=this.activeItem){if(this.activeItem){this.activeItem.deactivate();} -this.activeItem=item;item.activate(autoExpand);}else if(autoExpand){item.expandMenu();}},tryActivate:function(start,step){var items=this.items;for(var i=start,len=items.length;i>=0&&i<len;i+=step){var item=items.get(i);if(!item.disabled&&item.canActivate){this.setActiveItem(item,false);return item;}} -return false;},onMouseOver:function(e){var t;if(t=this.findTargetItem(e)){if(t.canActivate&&!t.disabled){this.setActiveItem(t,true);}} -this.fireEvent("mouseover",this,e,t);},onMouseOut:function(e){var t;if(t=this.findTargetItem(e)){if(t==this.activeItem&&t.shouldDeactivate(e)){this.activeItem.deactivate();delete this.activeItem;}} -this.fireEvent("mouseout",this,e,t);},isVisible:function(){return this.el&&!this.hidden;},show:function(el,pos,parentMenu){this.parentMenu=parentMenu;if(!this.el){this.render();} -this.fireEvent("beforeshow",this);this.showAt(this.el.getAlignToXY(el,pos||this.defaultAlign),parentMenu,false);},showAt:function(xy,parentMenu,_fireBefore){this.parentMenu=parentMenu;if(!this.el){this.render();} -if(_fireBefore!==false){this.fireEvent("beforeshow",this);} -this.el.setXY(xy);this.el.show();this.hidden=false;this.focus();this.fireEvent("show",this);},focus:function(){if(!this.hidden){this.doFocus.defer(50,this);}},doFocus:function(){if(!this.hidden){this.focusEl.focus();}},hide:function(deep){if(this.el&&this.isVisible()){this.fireEvent("beforehide",this);if(this.activeItem){this.activeItem.deactivate();this.activeItem=null;} -this.el.hide();this.hidden=true;this.fireEvent("hide",this);} -if(deep===true&&this.parentMenu){this.parentMenu.hide(true);}},add:function(){var a=arguments,l=a.length,item;for(var i=0;i<l;i++){var el=a[i];if(el.render){item=this.addItem(el);}else if(typeof el=="string"){if(el=="separator"||el=="-"){item=this.addSeparator();}else{item=this.addText(el);}}else if(el.tagName||el.el){item=this.addElement(el);}else if(typeof el=="object"){item=this.addMenuItem(el);}} -return item;},getEl:function(){if(!this.el){this.render();} -return this.el;},addSeparator:function(){return this.addItem(new Ext.menu.Separator());},addElement:function(el){return this.addItem(new Ext.menu.BaseItem(el));},addItem:function(item){this.items.add(item);if(this.ul){var li=document.createElement("li");li.className="x-menu-list-item";this.ul.dom.appendChild(li);item.render(li,this);this.delayAutoWidth();} -return item;},addMenuItem:function(config){if(!(config instanceof Ext.menu.Item)){if(typeof config.checked=="boolean"){config=new Ext.menu.CheckItem(config);}else{config=new Ext.menu.Item(config);}} -return this.addItem(config);},addText:function(text){return this.addItem(new Ext.menu.TextItem(text));},insert:function(index,item){this.items.insert(index,item);if(this.ul){var li=document.createElement("li");li.className="x-menu-list-item";this.ul.dom.insertBefore(li,this.ul.dom.childNodes[index]);item.render(li,this);this.delayAutoWidth();} -return item;},remove:function(item){this.items.removeKey(item.id);item.destroy();},removeAll:function(){var f;while(f=this.items.first()){this.remove(f);}}});Ext.menu.MenuNav=function(menu){Ext.menu.MenuNav.superclass.constructor.call(this,menu.el);this.scope=this.menu=menu;};Ext.extend(Ext.menu.MenuNav,Ext.KeyNav,{doRelay:function(e,h){var k=e.getKey();if(!this.menu.activeItem&&e.isNavKeyPress()&&k!=e.SPACE&&k!=e.RETURN){this.menu.tryActivate(0,1);return false;} -return h.call(this.scope||this,e,this.menu);},up:function(e,m){if(!m.tryActivate(m.items.indexOf(m.activeItem)-1,-1)){m.tryActivate(m.items.length-1,-1);}},down:function(e,m){if(!m.tryActivate(m.items.indexOf(m.activeItem)+1,1)){m.tryActivate(0,1);}},right:function(e,m){if(m.activeItem){m.activeItem.expandMenu(true);}},left:function(e,m){m.hide();if(m.parentMenu&&m.parentMenu.activeItem){m.parentMenu.activeItem.activate();}},enter:function(e,m){if(m.activeItem){e.stopPropagation();m.activeItem.onClick(e);m.fireEvent("click",this,m.activeItem);return true;}}}); - -Ext.menu.MenuMgr=function(){var menus,active,groups={},attached=false,lastShow=new Date();function init(){menus={},active=new Ext.util.MixedCollection();Ext.get(document).addKeyListener(27,function(){if(active.length>0){hideAll();}});} -function hideAll(){if(active.length>0){var c=active.clone();c.each(function(m){m.hide();});}} -function onHide(m){active.remove(m);if(active.length<1){Ext.get(document).un("mousedown",onMouseDown);attached=false;}} -function onShow(m){var last=active.last();lastShow=new Date();active.add(m);if(!attached){Ext.get(document).on("mousedown",onMouseDown);attached=true;} -if(m.parentMenu){m.getEl().setZIndex(parseInt(m.parentMenu.getEl().getStyle("z-index"),10)+3);m.parentMenu.activeChild=m;}else if(last&&last.isVisible()){m.getEl().setZIndex(parseInt(last.getEl().getStyle("z-index"),10)+3);}} -function onBeforeHide(m){if(m.activeChild){m.activeChild.hide();} -if(m.autoHideTimer){clearTimeout(m.autoHideTimer);delete m.autoHideTimer;}} -function onBeforeShow(m){var pm=m.parentMenu;if(!pm&&!m.allowOtherMenus){hideAll();}else if(pm&&pm.activeChild){pm.activeChild.hide();}} -function onMouseDown(e){if(lastShow.getElapsed()>50&&active.length>0&&!e.getTarget(".x-menu")){hideAll();}} -function onBeforeCheck(mi,state){if(state){var g=groups[mi.group];for(var i=0,l=g.length;i<l;i++){if(g[i]!=mi){g[i].setChecked(false);}}}} -return{hideAll:function(){hideAll();},register:function(menu){if(!menus){init();} -menus[menu.id]=menu;menu.on("beforehide",onBeforeHide);menu.on("hide",onHide);menu.on("beforeshow",onBeforeShow);menu.on("show",onShow);var g=menu.group;if(g&&menu.events["checkchange"]){if(!groups[g]){groups[g]=[];} -groups[g].push(menu);menu.on("checkchange",onCheck);}},get:function(menu){if(typeof menu=="string"){return menus[menu];}else if(menu.events){return menu;}else if(typeof menu.length=='number'){return new Ext.menu.Menu({items:menu});}else{return new Ext.menu.Menu(menu);}},unregister:function(menu){delete menus[menu.id];menu.un("beforehide",onBeforeHide);menu.un("hide",onHide);menu.un("beforeshow",onBeforeShow);menu.un("show",onShow);var g=menu.group;if(g&&menu.events["checkchange"]){groups[g].remove(menu);menu.un("checkchange",onCheck);}},registerCheckable:function(menuItem){var g=menuItem.group;if(g){if(!groups[g]){groups[g]=[];} -groups[g].push(menuItem);menuItem.on("beforecheckchange",onBeforeCheck);}},unregisterCheckable:function(menuItem){var g=menuItem.group;if(g){groups[g].remove(menuItem);menuItem.un("beforecheckchange",onBeforeCheck);}}};}(); - -Ext.menu.BaseItem=function(config){Ext.menu.BaseItem.superclass.constructor.call(this,config);this.addEvents({click:true,activate:true,deactivate:true});if(this.handler){this.on("click",this.handler,this.scope,true);}};Ext.extend(Ext.menu.BaseItem,Ext.Component,{canActivate:false,activeClass:"x-menu-item-active",hideOnClick:true,hideDelay:100,ctype:"Ext.menu.BaseItem",actionMode:"container",render:function(container,parentMenu){this.parentMenu=parentMenu;Ext.menu.BaseItem.superclass.render.call(this,container);this.container.menuItemId=this.id;},onRender:function(container,position){this.el=Ext.get(this.el);container.dom.appendChild(this.el.dom);},onClick:function(e){if(!this.disabled&&this.fireEvent("click",this,e)!==false&&this.parentMenu.fireEvent("itemclick",this,e)!==false){this.handleClick(e);}else{e.stopEvent();}},activate:function(){if(this.disabled){return false;} -var li=this.container;li.addClass(this.activeClass);this.region=li.getRegion().adjust(2,2,-2,-2);this.fireEvent("activate",this);return true;},deactivate:function(){this.container.removeClass(this.activeClass);this.fireEvent("deactivate",this);},shouldDeactivate:function(e){return!this.region||!this.region.contains(e.getPoint());},handleClick:function(e){if(this.hideOnClick){this.parentMenu.hide.defer(this.hideDelay,this.parentMenu,[true]);}},expandMenu:function(autoActivate){},hideMenu:function(){}}); - -Ext.menu.TextItem=function(text){this.text=text;Ext.menu.TextItem.superclass.constructor.call(this);};Ext.extend(Ext.menu.TextItem,Ext.menu.BaseItem,{hideOnClick:false,itemCls:"x-menu-text",onRender:function(){var s=document.createElement("span");s.className=this.itemCls;s.innerHTML=this.text;this.el=s;Ext.menu.TextItem.superclass.onRender.apply(this,arguments);}}); - -Ext.menu.Separator=function(config){Ext.menu.Separator.superclass.constructor.call(this,config);};Ext.extend(Ext.menu.Separator,Ext.menu.BaseItem,{itemCls:"x-menu-sep",hideOnClick:false,onRender:function(li){var s=document.createElement("span");s.className=this.itemCls;s.innerHTML=" ";this.el=s;li.addClass("x-menu-sep-li");Ext.menu.Separator.superclass.onRender.apply(this,arguments);}}); - -Ext.menu.Item=function(config){Ext.menu.Item.superclass.constructor.call(this,config);if(this.menu){this.menu=Ext.menu.MenuMgr.get(this.menu);}};Ext.extend(Ext.menu.Item,Ext.menu.BaseItem,{itemCls:"x-menu-item",canActivate:true,ctype:"Ext.menu.Item",onRender:function(container,position){var el=document.createElement("a");el.hideFocus=true;el.unselectable="on";el.href=this.href||"#";if(this.hrefTarget){el.target=this.hrefTarget;} -el.className=this.itemCls+(this.menu?" x-menu-item-arrow":"")+(this.cls?" "+this.cls:"");el.innerHTML=String.format('<img src="{0}" class="x-menu-item-icon {2}" />{1}',this.icon||Ext.BLANK_IMAGE_URL,this.text,this.iconCls||'');this.el=el;Ext.menu.Item.superclass.onRender.call(this,container,position);},setText:function(text){this.text=text;if(this.rendered){this.el.update(String.format('<img src="{0}" class="x-menu-item-icon {2}">{1}',this.icon||Ext.BLANK_IMAGE_URL,this.text,this.iconCls||''));this.parentMenu.autoWidth();}},handleClick:function(e){if(!this.href){e.stopEvent();} -Ext.menu.Item.superclass.handleClick.apply(this,arguments);},activate:function(autoExpand){if(Ext.menu.Item.superclass.activate.apply(this,arguments)){this.focus();if(autoExpand){this.expandMenu();}} -return true;},shouldDeactivate:function(e){if(Ext.menu.Item.superclass.shouldDeactivate.call(this,e)){if(this.menu&&this.menu.isVisible()){return!this.menu.getEl().getRegion().contains(e.getPoint());} -return true;} -return false;},deactivate:function(){Ext.menu.Item.superclass.deactivate.apply(this,arguments);this.hideMenu();},expandMenu:function(autoActivate){if(!this.disabled&&this.menu){if(!this.menu.isVisible()){this.menu.show(this.container,this.parentMenu.subMenuAlign||"tl-tr?",this.parentMenu);} -if(autoActivate){this.menu.tryActivate(0,1);}}},hideMenu:function(){if(this.menu&&this.menu.isVisible()){this.menu.hide();}}}); - -Ext.menu.CheckItem=function(config){Ext.menu.CheckItem.superclass.constructor.call(this,config);this.addEvents({"beforecheckchange":true,"checkchange":true});if(this.checkHandler){this.on('checkchange',this.checkHandler,this.scope);}};Ext.extend(Ext.menu.CheckItem,Ext.menu.Item,{itemCls:"x-menu-item x-menu-check-item",groupClass:"x-menu-group-item",checked:false,ctype:"Ext.menu.CheckItem",onRender:function(c){Ext.menu.CheckItem.superclass.onRender.apply(this,arguments);if(this.group){this.el.addClass(this.groupClass);} -Ext.menu.MenuMgr.registerCheckable(this);if(this.checked){this.checked=false;this.setChecked(true,true);}},destroy:function(){if(this.rendered){Ext.menu.MenuMgr.unregisterCheckable(this);} -Ext.menu.CheckItem.superclass.destroy.apply(this,arguments);},setChecked:function(state,suppressEvent){if(this.checked!=state&&this.fireEvent("beforecheckchange",this,state)!==false){if(this.container){this.container[state?"addClass":"removeClass"]("x-menu-item-checked");} -this.checked=state;if(suppressEvent!==true){this.fireEvent("checkchange",this,state);}}},handleClick:function(e){if(!this.disabled&&!(this.checked&&this.group)){this.setChecked(!this.checked);} -Ext.menu.CheckItem.superclass.handleClick.apply(this,arguments);}}); - -Ext.menu.Adapter=function(component,config){Ext.menu.Adapter.superclass.constructor.call(this,config);this.component=component;};Ext.extend(Ext.menu.Adapter,Ext.menu.BaseItem,{canActivate:true,onRender:function(container,position){this.component.render(container);this.el=this.component.getEl();},activate:function(){if(this.disabled){return false;} -this.component.focus();this.fireEvent("activate",this);return true;},deactivate:function(){this.fireEvent("deactivate",this);},disable:function(){this.component.disable();Ext.menu.Adapter.superclass.disable.call(this);},enable:function(){this.component.enable();Ext.menu.Adapter.superclass.enable.call(this);}}); - -Ext.menu.DateItem=function(config){Ext.menu.DateItem.superclass.constructor.call(this,new Ext.DatePicker(config),config);this.picker=this.component;this.addEvents({select:true});this.picker.on("render",function(picker){picker.getEl().swallowEvent("click");picker.container.addClass("x-menu-date-item");});this.picker.on("select",this.onSelect,this);};Ext.extend(Ext.menu.DateItem,Ext.menu.Adapter,{onSelect:function(picker,date){this.fireEvent("select",this,date,picker);Ext.menu.DateItem.superclass.handleClick.call(this);}}); - -Ext.menu.ColorItem=function(config){Ext.menu.ColorItem.superclass.constructor.call(this,new Ext.ColorPalette(config),config);this.palette=this.component;this.relayEvents(this.palette,["select"]);if(this.selectHandler){this.on('select',this.selectHandler,this.scope);}};Ext.extend(Ext.menu.ColorItem,Ext.menu.Adapter); - -Ext.menu.DateMenu=function(config){Ext.menu.DateMenu.superclass.constructor.call(this,config);this.plain=true;var di=new Ext.menu.DateItem(config);this.add(di);this.picker=di.picker;this.relayEvents(di,["select"]);this.on('beforeshow',function(){if(this.picker){this.picker.hideMonthPicker(true);}},this);};Ext.extend(Ext.menu.DateMenu,Ext.menu.Menu,{cls:'x-date-menu'}); - -Ext.menu.ColorMenu=function(config){Ext.menu.ColorMenu.superclass.constructor.call(this,config);this.plain=true;var ci=new Ext.menu.ColorItem(config);this.add(ci);this.palette=ci.palette;this.relayEvents(ci,["select"]);};Ext.extend(Ext.menu.ColorMenu,Ext.menu.Menu); - -Ext.form.Field=function(config){Ext.form.Field.superclass.constructor.call(this,config);};Ext.extend(Ext.form.Field,Ext.BoxComponent,{invalidClass:"x-form-invalid",invalidText:"The value in this field is invalid",focusClass:"x-form-focus",validationEvent:"keyup",validateOnBlur:true,validationDelay:250,defaultAutoCreate:{tag:"input",type:"text",size:"20",autocomplete:"off"},fieldClass:"x-form-field",msgTarget:'qtip',msgFx:'normal',inputType:undefined,isFormField:true,hasFocus:false,value:undefined,initComponent:function(){Ext.form.Field.superclass.initComponent.call(this);this.addEvents({focus:true,blur:true,specialkey:true,change:true,invalid:true,valid:true});},getName:function(){return this.rendered&&this.el.dom.name?this.el.dom.name:(this.hiddenName||'');},applyTo:function(target){this.allowDomMove=false;this.el=Ext.get(target);this.render(this.el.dom.parentNode);return this;},onRender:function(ct,position){Ext.form.Field.superclass.onRender.call(this,ct,position);if(!this.el){var cfg=this.getAutoCreate();if(!cfg.name){cfg.name=this.name||this.id;} -if(this.inputType){cfg.type=this.inputType;} -if(this.tabIndex!==undefined){cfg.tabIndex=this.tabIndex;} -this.el=ct.createChild(cfg,position);} -var type=this.el.dom.type;if(type){if(type=='password'){type='text';} -this.el.addClass('x-form-'+type);} -if(this.readOnly){this.el.dom.readOnly=true;} -this.el.addClass([this.fieldClass,this.cls]);this.initValue();},initValue:function(){if(this.value!==undefined){this.setValue(this.value);}else if(this.el.dom.value.length>0){this.setValue(this.el.dom.value);}},isDirty:function(){if(this.disabled){return false;} -return String(this.getValue())!==String(this.originalValue);},afterRender:function(){Ext.form.Field.superclass.afterRender.call(this);this.initEvents();},fireKey:function(e){if(e.isNavKeyPress()){this.fireEvent("specialkey",this,e);}},reset:function(){this.setValue(this.originalValue);this.clearInvalid();},initEvents:function(){this.el.on(Ext.isIE?"keydown":"keypress",this.fireKey,this);this.el.on("focus",this.onFocus,this);this.el.on("blur",this.onBlur,this);this.originalValue=this.getValue();},onFocus:function(){if(!Ext.isOpera){this.el.addClass(this.focusClass);} -this.hasFocus=true;this.startValue=this.getValue();this.fireEvent("focus",this);},onBlur:function(){this.el.removeClass(this.focusClass);this.hasFocus=false;if(this.validationEvent!==false&&this.validateOnBlur&&this.validationEvent!="blur"){this.validate();} -var v=this.getValue();if(v!=this.startValue){this.fireEvent('change',this,v,this.startValue);} -this.fireEvent("blur",this);},isValid:function(preventMark){if(this.disabled){return true;} -var restore=this.preventMark;this.preventMark=preventMark===true;var v=this.validateValue(this.getRawValue());this.preventMark=restore;return v;},validate:function(){if(this.disabled||this.validateValue(this.getRawValue())){this.clearInvalid();return true;} -return false;},validateValue:function(value){return true;},markInvalid:function(msg){if(!this.rendered||this.preventMark){return;} -this.el.addClass(this.invalidClass);msg=msg||this.invalidText;switch(this.msgTarget){case'qtip':this.el.dom.qtip=msg;this.el.dom.qclass='x-form-invalid-tip';break;case'title':this.el.dom.title=msg;break;case'under':if(!this.errorEl){var elp=this.el.findParent('.x-form-element',5,true);this.errorEl=elp.createChild({cls:'x-form-invalid-msg'});this.errorEl.setWidth(elp.getWidth(true)-20);} -this.errorEl.update(msg);Ext.form.Field.msgFx[this.msgFx].show(this.errorEl,this);break;case'side':if(!this.errorIcon){var elp=this.el.findParent('.x-form-element',5,true);this.errorIcon=elp.createChild({cls:'x-form-invalid-icon'});} -this.alignErrorIcon();this.errorIcon.dom.qtip=msg;this.errorIcon.dom.qclass='x-form-invalid-tip';this.errorIcon.show();break;default:var t=Ext.getDom(this.msgTarget);t.innerHTML=msg;t.style.display=this.msgDisplay;break;} -this.fireEvent('invalid',this,msg);},alignErrorIcon:function(){this.errorIcon.alignTo(this.el,'tl-tr',[2,0]);},clearInvalid:function(){if(!this.rendered||this.preventMark){return;} -this.el.removeClass(this.invalidClass);switch(this.msgTarget){case'qtip':this.el.dom.qtip='';break;case'title':this.el.dom.title='';break;case'under':if(this.errorEl){Ext.form.Field.msgFx[this.msgFx].hide(this.errorEl,this);} -break;case'side':if(this.errorIcon){this.errorIcon.dom.qtip='';this.errorIcon.hide();} -break;default:var t=Ext.getDom(this.msgTarget);t.innerHTML='';t.style.display='none';break;} -this.fireEvent('valid',this);},getRawValue:function(){return this.el.getValue();},getValue:function(){var v=this.el.getValue();if(v==this.emptyText||v===undefined){v='';} -return v;},setRawValue:function(v){return this.el.dom.value=(v===null||v===undefined?'':v);},setValue:function(v){this.value=v;if(this.rendered){this.el.dom.value=(v===null||v===undefined?'':v);this.validate();}},adjustSize:function(w,h){var s=Ext.form.Field.superclass.adjustSize.call(this,w,h);s.width=this.adjustWidth(this.el.dom.tagName,s.width);return s;},adjustWidth:function(tag,w){tag=tag.toLowerCase();if(typeof w=='number'&&Ext.isStrict&&!Ext.isSafari){if(Ext.isIE&&(tag=='input'||tag=='textarea')){if(tag=='input'){return w+2;} -if(tag='textarea'){return w-2;}}else if(Ext.isGecko&&tag=='textarea'){return w-6;}else if(Ext.isOpera){if(tag=='input'){return w+2;} -if(tag='textarea'){return w-2;}}} -return w;}});Ext.form.Field.msgFx={normal:{show:function(msgEl,f){msgEl.setDisplayed('block');},hide:function(msgEl,f){msgEl.setDisplayed(false).update('');}},slide:{show:function(msgEl,f){msgEl.slideIn('t',{stopFx:true});},hide:function(msgEl,f){msgEl.slideOut('t',{stopFx:true,useDisplay:true});}},slideRight:{show:function(msgEl,f){msgEl.fixDisplay();msgEl.alignTo(f.el,'tl-tr');msgEl.slideIn('l',{stopFx:true});},hide:function(msgEl,f){msgEl.slideOut('l',{stopFx:true,useDisplay:true});}}}; - -Ext.form.TextField=function(config){Ext.form.TextField.superclass.constructor.call(this,config);this.addEvents({autosize:true});};Ext.extend(Ext.form.TextField,Ext.form.Field,{grow:false,growMin:30,growMax:800,vtype:null,maskRe:null,disableKeyFilter:false,allowBlank:true,minLength:0,maxLength:Number.MAX_VALUE,minLengthText:"The minimum length for this field is {0}",maxLengthText:"The maximum length for this field is {0}",selectOnFocus:false,blankText:"This field is required",validator:null,regex:null,regexText:"",emptyText:null,emptyClass:'x-form-empty-field',initEvents:function(){Ext.form.TextField.superclass.initEvents.call(this);if(this.validationEvent=='keyup'){this.validationTask=new Ext.util.DelayedTask(this.validate,this);this.el.on('keyup',this.filterValidation,this);} -else if(this.validationEvent!==false){this.el.on(this.validationEvent,this.validate,this,{buffer:this.validationDelay});} -if(this.selectOnFocus||this.emptyText){this.on("focus",this.preFocus,this);if(this.emptyText){this.on('blur',this.postBlur,this);this.applyEmptyText();}} -if(this.maskRe||(this.vtype&&this.disableKeyFilter!==true&&(this.maskRe=Ext.form.VTypes[this.vtype+'Mask']))){this.el.on("keypress",this.filterKeys,this);} -if(this.grow){this.el.on("keyup",this.onKeyUp,this,{buffer:50});this.el.on("click",this.autoSize,this);}},filterValidation:function(e){if(!e.isNavKeyPress()){this.validationTask.delay(this.validationDelay);}},onKeyUp:function(e){if(!e.isNavKeyPress()){this.autoSize();}},reset:function(){Ext.form.TextField.superclass.reset.call(this);this.applyEmptyText();},applyEmptyText:function(){if(this.rendered&&this.emptyText&&this.getRawValue().length<1){this.setRawValue(this.emptyText);this.el.addClass(this.emptyClass);}},preFocus:function(){if(this.emptyText){if(this.getRawValue()==this.emptyText){this.setRawValue('');} -this.el.removeClass(this.emptyClass);} -if(this.selectOnFocus){this.el.dom.select();}},postBlur:function(){this.applyEmptyText();},filterKeys:function(e){var k=e.getKey();if(!Ext.isIE&&(e.isNavKeyPress()||k==e.BACKSPACE||(k==e.DELETE&&e.button==-1))){return;} -if(Ext.isIE&&(k==e.BACKSPACE||k==e.DELETE||e.isNavKeyPress()||k==e.HOME||k==e.END)){return;} -var c=e.getCharCode();if(!this.maskRe.test(String.fromCharCode(c)||'')){e.stopEvent();}},setValue:function(v){if(this.emptyText&&v!==undefined&&v!==null&&v!==''){this.el.removeClass(this.emptyClass);} -Ext.form.TextField.superclass.setValue.apply(this,arguments);},validateValue:function(value){if(value.length<1||value===this.emptyText){if(this.allowBlank){this.clearInvalid();return true;}else{this.markInvalid(this.blankText);return false;}} -if(value.length<this.minLength){this.markInvalid(String.format(this.minLengthText,this.minLength));return false;} -if(value.length>this.maxLength){this.markInvalid(String.format(this.maxLengthText,this.maxLength));return false;} -if(this.vtype){var vt=Ext.form.VTypes;if(!vt[this.vtype](value,this)){this.markInvalid(this.vtypeText||vt[this.vtype+'Text']);return false;}} -if(typeof this.validator=="function"){var msg=this.validator(value);if(msg!==true){this.markInvalid(msg);return false;}} -if(this.regex&&!this.regex.test(value)){this.markInvalid(this.regexText);return false;} -return true;},selectText:function(start,end){var v=this.getRawValue();if(v.length>0){start=start===undefined?0:start;end=end===undefined?v.length:end;var d=this.el.dom;if(d.setSelectionRange){d.setSelectionRange(start,end);}else if(d.createTextRange){var range=d.createTextRange();range.moveStart("character",start);range.moveEnd("character",v.length-end);range.select();}}},autoSize:function(){if(!this.grow||!this.rendered){return;} -if(!this.metrics){this.metrics=Ext.util.TextMetrics.createInstance(this.el);} -var el=this.el;var v=el.dom.value+" ";var w=Math.min(this.growMax,Math.max(this.metrics.getWidth(v)+10,this.growMin));this.el.setWidth(w);this.fireEvent("autosize",this,w);}}); - -Ext.form.TriggerField=function(config){Ext.form.TriggerField.superclass.constructor.call(this,config);this.mimicing=false;this.on('disable',this.disableWrapper,this);this.on('enable',this.enableWrapper,this);};Ext.extend(Ext.form.TriggerField,Ext.form.TextField,{defaultAutoCreate:{tag:"input",type:"text",size:"16",autocomplete:"off"},hideTrigger:false,autoSize:Ext.emptyFn,monitorTab:true,deferHeight:true,onResize:function(w,h){Ext.form.TriggerField.superclass.onResize.apply(this,arguments);if(typeof w=='number'){this.el.setWidth(this.adjustWidth('input',w-this.trigger.getWidth()));}},adjustSize:Ext.BoxComponent.prototype.adjustSize,getResizeEl:function(){return this.wrap;},getPositionEl:function(){return this.wrap;},alignErrorIcon:function(){this.errorIcon.alignTo(this.wrap,'tl-tr',[2,0]);},onRender:function(ct,position){Ext.form.TriggerField.superclass.onRender.call(this,ct,position);this.wrap=this.el.wrap({cls:"x-form-field-wrap"});this.trigger=this.wrap.createChild(this.triggerConfig||{tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"x-form-trigger "+this.triggerClass});if(this.hideTrigger){this.trigger.setDisplayed(false);} -this.initTrigger();if(!this.width){this.wrap.setWidth(this.el.getWidth()+this.trigger.getWidth());}},initTrigger:function(){this.trigger.on("click",this.onTriggerClick,this,{preventDefault:true});this.trigger.addClassOnOver('x-form-trigger-over');this.trigger.addClassOnClick('x-form-trigger-click');},onDestroy:function(){if(this.trigger){this.trigger.removeAllListeners();this.trigger.remove();} -if(this.wrap){this.wrap.remove();} -Ext.form.TriggerField.superclass.onDestroy.call(this);},onFocus:function(){Ext.form.TriggerField.superclass.onFocus.call(this);if(!this.mimicing){this.wrap.addClass('x-trigger-wrap-focus');this.mimicing=true;Ext.get(Ext.isIE?document.body:document).on("mousedown",this.mimicBlur,this);if(this.monitorTab){this.el.on("keydown",this.checkTab,this);}}},checkTab:function(e){if(e.getKey()==e.TAB){this.triggerBlur();}},onBlur:function(){},mimicBlur:function(e,t){if(!this.wrap.contains(t)&&this.validateBlur()){this.triggerBlur();}},triggerBlur:function(){this.mimicing=false;Ext.get(Ext.isIE?document.body:document).un("mousedown",this.mimicBlur);if(this.monitorTab){this.el.un("keydown",this.checkTab,this);} -this.beforeBlur();this.wrap.removeClass('x-trigger-wrap-focus');Ext.form.TriggerField.superclass.onBlur.call(this);},beforeBlur:Ext.emptyFn,validateBlur:function(e,t){return true;},disableWrapper:function(){if(this.wrap){this.wrap.addClass('x-item-disabled');}},enableWrapper:function(){if(this.wrap){this.wrap.removeClass('x-item-disabled');}},onShow:function(){if(this.wrap){this.wrap.dom.style.display='';this.wrap.dom.style.visibility='visible';}},onHide:function(){this.wrap.dom.style.display='none';},onTriggerClick:Ext.emptyFn});Ext.form.TwinTriggerField=Ext.extend(Ext.form.TriggerField,{initComponent:function(){Ext.form.TwinTriggerField.superclass.initComponent.call(this);this.triggerConfig={tag:'span',cls:'x-form-twin-triggers',cn:[{tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"x-form-trigger "+this.trigger1Class},{tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"x-form-trigger "+this.trigger2Class}]};},getTrigger:function(index){return this.triggers[index];},initTrigger:function(){var ts=this.trigger.select('.x-form-trigger',true);this.wrap.setStyle('overflow','hidden');var triggerField=this;ts.each(function(t,all,index){t.hide=function(){var w=triggerField.wrap.getWidth();this.dom.style.display='none';triggerField.el.setWidth(w-triggerField.trigger.getWidth());};t.show=function(){var w=triggerField.wrap.getWidth();this.dom.style.display='';triggerField.el.setWidth(w-triggerField.trigger.getWidth());};var triggerIndex='Trigger'+(index+1);if(this['hide'+triggerIndex]){t.dom.style.display='none';} -t.on("click",this['on'+triggerIndex+'Click'],this,{preventDefault:true});t.addClassOnOver('x-form-trigger-over');t.addClassOnClick('x-form-trigger-click');},this);this.triggers=ts.elements;},onTrigger1Click:Ext.emptyFn,onTrigger2Click:Ext.emptyFn}); - -Ext.form.TextArea=function(config){Ext.form.TextArea.superclass.constructor.call(this,config);if(this.minHeight!==undefined){this.growMin=this.minHeight;} -if(this.maxHeight!==undefined){this.growMax=this.maxHeight;}};Ext.extend(Ext.form.TextArea,Ext.form.TextField,{growMin:60,growMax:1000,preventScrollbars:false,onRender:function(ct,position){if(!this.el){this.defaultAutoCreate={tag:"textarea",style:"width:300px;height:60px;",autocomplete:"off"};} -Ext.form.TextArea.superclass.onRender.call(this,ct,position);if(this.grow){this.textSizeEl=Ext.DomHelper.append(document.body,{tag:"pre",cls:"x-form-grow-sizer"});if(this.preventScrollbars){this.el.setStyle("overflow","hidden");} -this.el.setHeight(this.growMin);}},onDestroy:function(){if(this.textSizeEl){this.textSizeEl.remove();} -Ext.form.TextArea.superclass.onDestroy.call(this);},onKeyUp:function(e){if(!e.isNavKeyPress()||e.getKey()==e.ENTER){this.autoSize();}},autoSize:function(){if(!this.grow||!this.textSizeEl){return;} -var el=this.el;var v=el.dom.value;var ts=this.textSizeEl;Ext.fly(ts).setWidth(this.el.getWidth());if(v.length<1){v="  ";}else{if(Ext.isIE){v=v.replace(/\n/g,'<p> </p>');} -v+=" \n ";} -ts.innerHTML=v;var h=Math.min(this.growMax,Math.max(ts.offsetHeight,this.growMin));if(h!=this.lastHeight){this.lastHeight=h;this.el.setHeight(h);this.fireEvent("autosize",this,h);}},setValue:function(v){Ext.form.TextArea.superclass.setValue.call(this,v);this.autoSize();}}); - -Ext.form.NumberField=function(config){Ext.form.NumberField.superclass.constructor.call(this,config);};Ext.extend(Ext.form.NumberField,Ext.form.TextField,{fieldClass:"x-form-field x-form-num-field",allowDecimals:true,decimalSeparator:".",decimalPrecision:2,allowNegative:true,minValue:Number.NEGATIVE_INFINITY,maxValue:Number.MAX_VALUE,minText:"The minimum value for this field is {0}",maxText:"The maximum value for this field is {0}",nanText:"{0} is not a valid number",initEvents:function(){Ext.form.NumberField.superclass.initEvents.call(this);var allowed="0123456789";if(this.allowDecimals){allowed+=this.decimalSeparator;} -if(this.allowNegative){allowed+="-";} -var keyPress=function(e){var k=e.getKey();if(!Ext.isIE&&(e.isNavKeyPress()||k==e.BACKSPACE||(k==e.DELETE&&e.button==-1))){return;} -var c=e.getCharCode();if(allowed.indexOf(String.fromCharCode(c))===-1){e.stopEvent();}};this.el.on("keypress",keyPress,this);},validateValue:function(value){if(!Ext.form.NumberField.superclass.validateValue.call(this,value)){return false;} -if(value.length<1){return true;} -value=String(value).replace(this.decimalSeparator,".");if(isNaN(value)){this.markInvalid(String.format(this.nanText,value));return false;} -var num=this.parseValue(value);if(num<this.minValue){this.markInvalid(String.format(this.minText,this.minValue));return false;} -if(num>this.maxValue){this.markInvalid(String.format(this.maxText,this.maxValue));return false;} -return true;},parseValue:function(value){return parseFloat(String(value).replace(this.decimalSeparator,"."));},fixPrecision:function(value){if(!this.allowDecimals||this.decimalPrecision==-1||isNaN(value)||value==0||!value){return value;} -var scale=Math.pow(10,this.decimalPrecision+1);var fixed=this.decimalPrecisionFcn(value*scale);fixed=this.decimalPrecisionFcn(fixed/10);return fixed/(scale/10);},decimalPrecisionFcn:function(v){return Math.floor(v);}}); - -Ext.form.DateField=function(config){Ext.form.DateField.superclass.constructor.call(this,config);if(typeof this.minValue=="string")this.minValue=this.parseDate(this.minValue);if(typeof this.maxValue=="string")this.maxValue=this.parseDate(this.maxValue);this.ddMatch=null;if(this.disabledDates){var dd=this.disabledDates;var re="(?:";for(var i=0;i<dd.length;i++){re+=dd[i];if(i!=dd.length-1)re+="|";} -this.ddMatch=new RegExp(re+")");}};Ext.extend(Ext.form.DateField,Ext.form.TriggerField,{format:"m/d/y",altFormats:"m/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d",disabledDays:null,disabledDaysText:"Disabled",disabledDates:null,disabledDatesText:"Disabled",minValue:null,maxValue:null,minText:"The date in this field must be after {0}",maxText:"The date in this field must be before {0}",invalidText:"{0} is not a valid date - it must be in the format {1}",triggerClass:'x-form-date-trigger',defaultAutoCreate:{tag:"input",type:"text",size:"10",autocomplete:"off"},validateValue:function(value){value=this.formatDate(value);if(!Ext.form.DateField.superclass.validateValue.call(this,value)){return false;} -if(value.length<1){return true;} -var svalue=value;value=this.parseDate(value);if(!value){this.markInvalid(String.format(this.invalidText,svalue,this.format));return false;} -var time=value.getTime();if(this.minValue&&time<this.minValue.getTime()){this.markInvalid(String.format(this.minText,this.formatDate(this.minValue)));return false;} -if(this.maxValue&&time>this.maxValue.getTime()){this.markInvalid(String.format(this.maxText,this.formatDate(this.maxValue)));return false;} -if(this.disabledDays){var day=value.getDay();for(var i=0;i<this.disabledDays.length;i++){if(day===this.disabledDays[i]){this.markInvalid(this.disabledDaysText);return false;}}} -var fvalue=this.formatDate(value);if(this.ddMatch&&this.ddMatch.test(fvalue)){this.markInvalid(String.format(this.disabledDatesText,fvalue));return false;} -return true;},validateBlur:function(){return!this.menu||!this.menu.isVisible();},getValue:function(){return this.parseDate(Ext.form.DateField.superclass.getValue.call(this))||"";},setValue:function(date){Ext.form.DateField.superclass.setValue.call(this,this.formatDate(this.parseDate(date)));},parseDate:function(value){if(!value||value instanceof Date){return value;} -var v=Date.parseDate(value,this.format);if(!v&&this.altFormats){if(!this.altFormatsArray){this.altFormatsArray=this.altFormats.split("|");} -for(var i=0,len=this.altFormatsArray.length;i<len&&!v;i++){v=Date.parseDate(value,this.altFormatsArray[i]);}} -return v;},formatDate:function(date){return(!date||!(date instanceof Date))?date:date.dateFormat(this.format);},menuListeners:{select:function(m,d){this.setValue(d);},show:function(){this.onFocus();},hide:function(){this.focus.defer(10,this);var ml=this.menuListeners;this.menu.un("select",ml.select,this);this.menu.un("show",ml.show,this);this.menu.un("hide",ml.hide,this);}},onTriggerClick:function(){if(this.disabled){return;} -if(this.menu==null){this.menu=new Ext.menu.DateMenu();} -Ext.apply(this.menu.picker,{minDate:this.minValue,maxDate:this.maxValue,disabledDatesRE:this.ddMatch,disabledDatesText:this.disabledDatesText,disabledDays:this.disabledDays,disabledDaysText:this.disabledDaysText,format:this.format,minText:String.format(this.minText,this.formatDate(this.minValue)),maxText:String.format(this.maxText,this.formatDate(this.maxValue))});this.menu.on(Ext.apply({},this.menuListeners,{scope:this}));this.menu.picker.setValue(this.getValue()||new Date());this.menu.show(this.el,"tl-bl?");},beforeBlur:function(){var v=this.parseDate(this.getRawValue());if(v){this.setValue(v);}}}); - -Ext.form.ComboBox=function(config){Ext.form.ComboBox.superclass.constructor.call(this,config);this.addEvents({'expand':true,'collapse':true,'beforeselect':true,'select':true,'beforequery':true});if(this.transform){var s=Ext.getDom(this.transform);if(!this.hiddenName){this.hiddenName=s.name;} -if(!this.store){this.mode='local';var d=[],opts=s.options;for(var i=0,len=opts.length;i<len;i++){var o=opts[i];var value=(Ext.isIE?o.getAttributeNode('value').specified:o.hasAttribute('value'))?o.value:o.text;if(o.selected){this.value=value;} -d.push([value,o.text]);} -this.store=new Ext.data.SimpleStore({'id':0,fields:['value','text'],data:d});this.valueField='value';this.displayField='text';} -s.name=Ext.id();if(!this.lazyRender){this.target=true;this.el=Ext.DomHelper.insertBefore(s,this.autoCreate||this.defaultAutoCreate);s.parentNode.removeChild(s);this.render(this.el.parentNode);}else{s.parentNode.removeChild(s);}} -this.selectedIndex=-1;if(this.mode=='local'){if(config.queryDelay===undefined){this.queryDelay=10;} -if(config.minChars===undefined){this.minChars=0;}}};Ext.extend(Ext.form.ComboBox,Ext.form.TriggerField,{defaultAutoCreate:{tag:"input",type:"text",size:"24",autocomplete:"off"},listWidth:undefined,displayField:undefined,valueField:undefined,hiddenName:undefined,listClass:'',selectedClass:'x-combo-selected',triggerClass:'x-form-arrow-trigger',shadow:'sides',listAlign:'tl-bl?',maxHeight:300,triggerAction:'query',minChars:4,typeAhead:false,queryDelay:500,pageSize:0,selectOnFocus:false,queryParam:'query',loadingText:'Loading...',resizable:false,handleHeight:8,editable:true,allQuery:'',mode:'remote',minListWidth:70,forceSelection:false,typeAheadDelay:250,valueNotFoundText:undefined,onRender:function(ct,position){Ext.form.ComboBox.superclass.onRender.call(this,ct,position);if(this.hiddenName){this.hiddenField=this.el.insertSibling({tag:'input',type:'hidden',name:this.hiddenName,id:this.hiddenName},'before',true);this.hiddenField.value=this.hiddenValue!==undefined?this.hiddenValue:this.value!==undefined?this.value:'';this.el.dom.removeAttribute('name');} -if(Ext.isGecko){this.el.dom.setAttribute('autocomplete','off');} -var cls='x-combo-list';this.list=new Ext.Layer({shadow:this.shadow,cls:[cls,this.listClass].join(' '),constrain:false});var lw=this.listWidth||Math.max(this.wrap.getWidth(),this.minListWidth);this.list.setWidth(lw);this.list.swallowEvent('mousewheel');this.assetHeight=0;if(this.title){this.header=this.list.createChild({cls:cls+'-hd',html:this.title});this.assetHeight+=this.header.getHeight();} -this.innerList=this.list.createChild({cls:cls+'-inner'});this.innerList.on('mouseover',this.onViewOver,this);this.innerList.on('mousemove',this.onViewMove,this);this.innerList.setWidth(lw-this.list.getFrameWidth('lr')) -if(this.pageSize){this.footer=this.list.createChild({cls:cls+'-ft'});this.pageTb=new Ext.PagingToolbar(this.footer,this.store,{pageSize:this.pageSize});this.assetHeight+=this.footer.getHeight();} -if(!this.tpl){this.tpl='<div class="'+cls+'-item">{'+this.displayField+'}</div>';} -this.view=new Ext.View(this.innerList,this.tpl,{singleSelect:true,store:this.store,selectedClass:this.selectedClass});this.view.on('click',this.onViewClick,this);this.store.on('beforeload',this.onBeforeLoad,this);this.store.on('load',this.onLoad,this);this.store.on('loadexception',this.collapse,this);if(this.resizable){this.resizer=new Ext.Resizable(this.list,{pinned:true,handles:'se'});this.resizer.on('resize',function(r,w,h){this.maxHeight=h-this.handleHeight-this.list.getFrameWidth('tb')-this.assetHeight;this.listWidth=w;this.restrictHeight();},this);this[this.pageSize?'footer':'innerList'].setStyle('margin-bottom',this.handleHeight+'px');} -if(!this.editable){this.editable=true;this.setEditable(false);}},initEvents:function(){Ext.form.ComboBox.superclass.initEvents.call(this);this.keyNav=new Ext.KeyNav(this.el,{"up":function(e){this.inKeyMode=true;this.selectPrev();},"down":function(e){if(!this.isExpanded()){this.onTriggerClick();}else{this.inKeyMode=true;this.selectNext();}},"enter":function(e){this.onViewClick();},"esc":function(e){this.collapse();},"tab":function(e){this.onViewClick(false);return true;},scope:this,doRelay:function(foo,bar,hname){if(hname=='down'||this.scope.isExpanded()){return Ext.KeyNav.prototype.doRelay.apply(this,arguments);} -return true;}});this.queryDelay=Math.max(this.queryDelay||10,this.mode=='local'?10:250);this.dqTask=new Ext.util.DelayedTask(this.initQuery,this);if(this.typeAhead){this.taTask=new Ext.util.DelayedTask(this.onTypeAhead,this);} -if(this.editable!==false){this.el.on("keyup",this.onKeyUp,this);} -if(this.forceSelection){this.on('blur',this.doForce,this);}},onDestroy:function(){if(this.view){this.view.setStore(null);this.view.el.removeAllListeners();this.view.el.remove();this.view.purgeListeners();} -if(this.list){this.list.destroy();} -if(this.store){this.store.un('beforeload',this.onBeforeLoad,this);this.store.un('load',this.onLoad,this);this.store.un('loadexception',this.collapse,this);} -Ext.form.ComboBox.superclass.onDestroy.call(this);},fireKey:function(e){if(e.isNavKeyPress()&&!this.list.isVisible()){this.fireEvent("specialkey",this,e);}},onResize:function(w,h){Ext.form.ComboBox.superclass.onResize.apply(this,arguments);if(this.list&&this.listWidth===undefined){var lw=Math.max(w,this.minListWidth);this.list.setWidth(lw);this.innerList.setWidth(lw-this.list.getFrameWidth('lr'))}},setEditable:function(value){if(value==this.editable){return;} -this.editable=value;if(!value){this.el.dom.setAttribute('readOnly',true);this.el.on('mousedown',this.onTriggerClick,this);this.el.addClass('x-combo-noedit');}else{this.el.dom.setAttribute('readOnly',false);this.el.un('mousedown',this.onTriggerClick,this);this.el.removeClass('x-combo-noedit');}},onBeforeLoad:function(){if(!this.hasFocus){return;} -this.innerList.update(this.loadingText?'<div class="loading-indicator">'+this.loadingText+'</div>':'');this.restrictHeight();this.selectedIndex=-1;},onLoad:function(){if(!this.hasFocus){return;} -if(this.store.getCount()>0){this.expand();this.restrictHeight();if(this.lastQuery==this.allQuery){if(this.editable){this.el.dom.select();} -if(!this.selectByValue(this.value,true)){this.select(0,true);}}else{this.selectNext();if(this.typeAhead&&this.lastKey!=Ext.EventObject.BACKSPACE&&this.lastKey!=Ext.EventObject.DELETE){this.taTask.delay(this.typeAheadDelay);}}}else{this.onEmptyResults();}},onTypeAhead:function(){if(this.store.getCount()>0){var r=this.store.getAt(0);var newValue=r.data[this.displayField];var len=newValue.length;var selStart=this.getRawValue().length;if(selStart!=len){this.setRawValue(newValue);this.selectText(selStart,newValue.length);}}},onSelect:function(record,index){if(this.fireEvent('beforeselect',this,record,index)!==false){this.setValue(record.data[this.valueField||this.displayField]);this.collapse();this.fireEvent('select',this,record,index);}},getValue:function(){if(this.valueField){return typeof this.value!='undefined'?this.value:'';}else{return Ext.form.ComboBox.superclass.getValue.call(this);}},clearValue:function(){if(this.hiddenField){this.hiddenField.value='';} -this.setRawValue('');this.lastSelectionText='';},setValue:function(v){var text=v;if(this.valueField){var r=this.findRecord(this.valueField,v);if(r){text=r.data[this.displayField];}else if(this.valueNotFoundText!==undefined){text=this.valueNotFoundText;}} -this.lastSelectionText=text;if(this.hiddenField){this.hiddenField.value=v;} -Ext.form.ComboBox.superclass.setValue.call(this,text);this.value=v;},findRecord:function(prop,value){var record;if(this.store.getCount()>0){this.store.each(function(r){if(r.data[prop]==value){record=r;return false;}});} -return record;},onViewMove:function(e,t){this.inKeyMode=false;},onViewOver:function(e,t){if(this.inKeyMode){return;} -var item=this.view.findItemFromChild(t);if(item){var index=this.view.indexOf(item);this.select(index,false);}},onViewClick:function(doFocus){var index=this.view.getSelectedIndexes()[0];var r=this.store.getAt(index);if(r){this.onSelect(r,index);} -if(doFocus!==false){this.el.focus();}},restrictHeight:function(){this.innerList.dom.style.height='';var inner=this.innerList.dom;var h=Math.max(inner.clientHeight,inner.offsetHeight,inner.scrollHeight);this.innerList.setHeight(h<this.maxHeight?'auto':this.maxHeight);this.list.beginUpdate();this.list.setHeight(this.innerList.getHeight()+this.list.getFrameWidth('tb')+(this.resizable?this.handleHeight:0)+this.assetHeight);this.list.alignTo(this.el,this.listAlign);this.list.endUpdate();},onEmptyResults:function(){this.collapse();},isExpanded:function(){return this.list.isVisible();},selectByValue:function(v,scrollIntoView){if(v!==undefined&&v!==null){var r=this.findRecord(this.valueField||this.displayField,v);if(r){this.select(this.store.indexOf(r),scrollIntoView);return true;}} -return false;},select:function(index,scrollIntoView){this.selectedIndex=index;this.view.select(index);if(scrollIntoView!==false){var el=this.view.getNode(index);if(el){this.innerList.scrollChildIntoView(el,false);}}},selectNext:function(){var ct=this.store.getCount();if(ct>0){if(this.selectedIndex==-1){this.select(0);}else if(this.selectedIndex<ct-1){this.select(this.selectedIndex+1);}}},selectPrev:function(){var ct=this.store.getCount();if(ct>0){if(this.selectedIndex==-1){this.select(0);}else if(this.selectedIndex!=0){this.select(this.selectedIndex-1);}}},onKeyUp:function(e){if(this.editable!==false&&!e.isSpecialKey()){this.lastKey=e.getKey();this.dqTask.delay(this.queryDelay);}},validateBlur:function(){return!this.list||!this.list.isVisible();},initQuery:function(){this.doQuery(this.getRawValue());},doForce:function(){if(this.el.dom.value.length>0){this.el.dom.value=this.lastSelectionText===undefined?'':this.lastSelectionText;this.applyEmptyText();}},doQuery:function(q,forceAll){if(q===undefined||q===null){q='';} -var qe={query:q,forceAll:forceAll,combo:this,cancel:false};if(this.fireEvent('beforequery',qe)===false||qe.cancel){return false;} -q=qe.query;forceAll=qe.forceAll;if(forceAll===true||(q.length>=this.minChars)){if(this.lastQuery!=q){this.lastQuery=q;if(this.mode=='local'){this.selectedIndex=-1;if(forceAll){this.store.clearFilter();}else{this.store.filter(this.displayField,q);} -this.onLoad();}else{this.store.baseParams[this.queryParam]=q;this.store.load({params:this.getParams(q)});this.expand();}}else{this.selectedIndex=-1;this.onLoad();}}},getParams:function(q){var p={};if(this.pageSize){p.start=0;p.limit=this.pageSize;} -return p;},collapse:function(){if(!this.isExpanded()){return;} -this.list.hide();Ext.get(document).un('mousedown',this.collapseIf,this);this.fireEvent('collapse',this);},collapseIf:function(e){if(!e.within(this.wrap)&&!e.within(this.list)){this.collapse();}},expand:function(){if(this.isExpanded()||!this.hasFocus){return;} -this.list.alignTo(this.el,this.listAlign);this.list.show();Ext.get(document).on('mousedown',this.collapseIf,this);this.fireEvent('expand',this);},onTriggerClick:function(){if(this.disabled){return;} -if(this.isExpanded()){this.collapse();this.el.focus();}else{this.hasFocus=true;if(this.triggerAction=='all'){this.doQuery(this.allQuery,true);}else{this.doQuery(this.getRawValue());} -this.el.focus();}}}); - -Ext.form.Checkbox=function(config){Ext.form.Checkbox.superclass.constructor.call(this,config);this.addEvents({check:true});};Ext.extend(Ext.form.Checkbox,Ext.form.Field,{focusClass:"x-form-check-focus",fieldClass:"x-form-field",checked:false,defaultAutoCreate:{tag:"input",type:'checkbox',autocomplete:"off"},boxLabel:undefined,onResize:function(){Ext.form.Checkbox.superclass.onResize.apply(this,arguments);if(!this.boxLabel){this.el.alignTo(this.wrap,'c-c');}},initEvents:function(){Ext.form.Checkbox.superclass.initEvents.call(this);this.el.on("click",this.onClick,this);this.el.on("change",this.onClick,this);},getResizeEl:function(){return this.wrap;},getPositionEl:function(){return this.wrap;},onRender:function(ct,position){Ext.form.Checkbox.superclass.onRender.call(this,ct,position);if(this.inputValue!==undefined){this.el.dom.value=this.inputValue;} -this.wrap=this.el.wrap({cls:"x-form-check-wrap"});if(this.boxLabel){this.wrap.createChild({tag:'label',htmlFor:this.el.id,cls:'x-form-cb-label',html:this.boxLabel});} -if(this.checked){this.setValue(true);}},initValue:Ext.emptyFn,getValue:function(){if(this.rendered){return this.el.dom.checked;} -return false;},onClick:function(){if(this.el.dom.checked!=this.checked){this.setValue(this.el.dom.checked);}},setValue:function(v){this.checked=(v===true||v==='true'||v=='1');if(this.el&&this.el.dom){this.el.dom.checked=this.checked;} -this.fireEvent("check",this,this.checked);}}); - -Ext.form.Radio=function(){Ext.form.Radio.superclass.constructor.apply(this,arguments);};Ext.extend(Ext.form.Radio,Ext.form.Checkbox,{inputType:'radio',getGroupValue:function(){return this.el.up('form').child('input[name='+this.el.dom.name+']:checked',true).value;}}); - -Ext.form.HtmlEditor=Ext.extend(Ext.form.Field,{enableFormat:true,enableFontSize:true,enableColors:true,enableAlignments:true,enableLists:true,enableSourceEdit:true,validationEvent:false,deferHeight:true,initialized:false,activated:false,sourceEditMode:false,onFocus:Ext.emptyFn,iframePad:3,defaultAutoCreate:{tag:"textarea",style:"width:500px;height:300px;",autocomplete:"off"},initComponent:function(){this.addEvents({initialize:true,beforesync:true,beforepush:true,sync:true,push:true,editmodechange:true})},createToolbar:function(editor){function btn(id,toggle,handler){return{id:id,cls:'x-btn-icon x-edit-'+id,enableToggle:toggle!==false,scope:editor,handler:handler||editor.relayBtnCmd,clickEvent:'mousedown',tooltip:editor.buttonTips[id]||undefined,tabIndex:-1};} -var tb=new Ext.Toolbar(this.wrap.dom.firstChild);tb.el.on('click',function(e){e.preventDefault();});if(this.enableFormat){tb.add(btn('bold'),btn('italic'),btn('underline'));};if(this.enableFontSize){tb.add('-',btn('increasefontsize',false,this.adjustFont),btn('decreasefontsize',false,this.adjustFont));};if(this.enableColors){tb.add('-',{id:'forecolor',cls:'x-btn-icon x-edit-forecolor',clickEvent:'mousedown',tooltip:editor.buttonTips['forecolor']||undefined,tabIndex:-1,menu:new Ext.menu.ColorMenu({allowReselect:true,focus:Ext.emptyFn,value:'000000',plain:true,selectHandler:function(cp,color){this.execCmd('forecolor',Ext.isSafari||Ext.isIE?'#'+color:color);this.deferFocus();},scope:this,clickEvent:'mousedown'})},{id:'backcolor',cls:'x-btn-icon x-edit-backcolor',clickEvent:'mousedown',tooltip:editor.buttonTips['backcolor']||undefined,tabIndex:-1,menu:new Ext.menu.ColorMenu({focus:Ext.emptyFn,value:'FFFFFF',plain:true,allowReselect:true,selectHandler:function(cp,color){if(Ext.isGecko){this.execCmd('useCSS',false);this.execCmd('hilitecolor',color);this.execCmd('useCSS',true);this.deferFocus();}else{this.execCmd(Ext.isOpera?'hilitecolor':'backcolor',Ext.isSafari||Ext.isIE?'#'+color:color);this.deferFocus();}},scope:this,clickEvent:'mousedown'})});};if(this.enableAlignments){tb.add('-',btn('justifyleft'),btn('justifycenter'),btn('justifyright'));};if(!Ext.isSafari){if(this.enableLists){tb.add('-',btn('insertorderedlist'),btn('insertunorderedlist'));} -if(this.enableSourceEdit){tb.add('-',btn('sourceedit',true,function(btn){this.toggleSourceEdit(btn.pressed);}));}} -this.tb=tb;},getDocMarkup:function(){return'<html><head><style type="text/css">body{border:0;margin:0;padding:3px;height:98%;cursor:text;}</style></head><body></body></html>';},onRender:function(ct,position){Ext.form.HtmlEditor.superclass.onRender.call(this,ct,position);this.el.dom.style.border='0 none';this.el.addClass('x-hidden');if(Ext.isIE){this.el.applyStyles('margin-top:-1px;margin-bottom:-1px;')} -this.wrap=this.el.wrap({cls:'x-html-editor-wrap',cn:{cls:'x-html-editor-tb'}});this.createToolbar(this);this.tb.items.each(function(item){if(item.id!='sourceedit'){item.disable();}});var iframe=document.createElement('iframe');iframe.name=Ext.id();iframe.frameBorder='no';iframe.src="javascript:false";this.wrap.dom.appendChild(iframe);this.iframe=iframe;if(Ext.isIE){this.doc=iframe.contentWindow.document;this.win=iframe.contentWindow;}else{this.doc=(iframe.contentDocument||window.frames[iframe.name].document);this.win=window.frames[iframe.name];} -this.doc.designMode='on';this.doc.open();this.doc.write(this.getDocMarkup()) -this.doc.close();var task={run:function(){if(this.doc.body||this.doc.readyState=='complete'){this.doc.designMode="on";Ext.TaskMgr.stop(task);this.initEditor.defer(10,this);}},interval:10,duration:10000,scope:this};Ext.TaskMgr.start(task);if(!this.width){this.setSize(this.el.getSize());}},onResize:function(w,h){Ext.form.HtmlEditor.superclass.onResize.apply(this,arguments);if(this.el&&this.iframe){if(typeof w=='number'){var aw=w-this.wrap.getFrameWidth('lr');this.el.setWidth(this.adjustWidth('textarea',aw));this.iframe.style.width=aw+'px';} -if(typeof h=='number'){var ah=h-this.wrap.getFrameWidth('tb')-this.tb.el.getHeight();this.el.setHeight(this.adjustWidth('textarea',ah));this.iframe.style.height=ah+'px';if(this.doc){(this.doc.body||this.doc.documentElement).style.height=(ah-(this.iframePad*2))+'px';}}}},toggleSourceEdit:function(sourceEditMode){if(sourceEditMode===undefined){sourceEditMode=!this.sourceEditMode;} -this.sourceEditMode=sourceEditMode===true;var btn=this.tb.items.get('sourceedit');if(btn.pressed!==this.sourceEditMode){btn.toggle(this.sourceEditMode);return;} -if(this.sourceEditMode){this.tb.items.each(function(item){if(item.id!='sourceedit'){item.disable();}});this.syncValue();this.iframe.className='x-hidden';this.el.removeClass('x-hidden');this.el.focus();}else{if(this.initialized){this.tb.items.each(function(item){item.enable();});} -this.pushValue();this.iframe.className='';this.el.addClass('x-hidden');this.deferFocus();} -this.setSize(this.wrap.getSize());this.fireEvent('editmodechange',this,this.sourceEditMode);},adjustSize:Ext.BoxComponent.prototype.adjustSize,getResizeEl:function(){return this.wrap;},getPositionEl:function(){return this.wrap;},initEvents:function(){this.originalValue=this.getValue();},markInvalid:Ext.emptyFn,clearInvalid:Ext.emptyFn,setValue:function(v){Ext.form.HtmlEditor.superclass.setValue.call(this,v);this.pushValue();},cleanHtml:function(html){html=String(html);if(html.length>5){if(Ext.isSafari){html=html.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi,'');}} -if(html==' '){html='';} -return html;},syncValue:function(){if(this.initialized){var bd=(this.doc.body||this.doc.documentElement);var html=bd.innerHTML;if(Ext.isSafari){var bs=bd.getAttribute('style');var m=bs.match(/text-align:(.*?);/i);if(m&&m[1]){html='<div style="'+m[0]+'">'+html+'</div>';}} -html=this.cleanHtml(html);if(this.fireEvent('beforesync',this,html)!==false){this.el.dom.value=html;this.fireEvent('sync',this,html);}}},pushValue:function(){if(this.initialized){var v=this.el.dom.value;if(v.length<1){v=' ';} -if(this.fireEvent('beforepush',this,v)!==false){(this.doc.body||this.doc.documentElement).innerHTML=v;this.fireEvent('push',this,v);}}},deferFocus:function(){this.focus.defer(10,this);},focus:function(){if(this.win&&!this.sourceEditMode){this.win.focus();}else{this.el.focus();}},initEditor:function(){var dbody=(this.doc.body||this.doc.documentElement);var ss=this.el.getStyles('font-size','font-family','background-image','background-repeat');ss['background-attachment']='fixed';dbody.bgProperties='fixed';Ext.DomHelper.applyStyles(dbody,ss);Ext.EventManager.on(this.doc,{'mousedown':this.onEditorEvent,'dblclick':this.onEditorEvent,'click':this.onEditorEvent,'keyup':this.onEditorEvent,buffer:100,scope:this});if(Ext.isGecko){Ext.EventManager.on(this.doc,'keypress',this.applyCommand,this);} -if(Ext.isIE||Ext.isSafari||Ext.isOpera){Ext.EventManager.on(this.doc,'keydown',this.fixTab,this);} -this.initialized=true;this.fireEvent('initialize',this);this.pushValue();},onDestroy:function(){if(this.rendered){this.tb.items.each(function(item){if(item.menu){item.menu.removeAll();if(item.menu.el){item.menu.el.destroy();}} -item.destroy();});this.wrap.dom.innerHTML='';this.wrap.remove();}},onFirstFocus:function(){this.activated=true;this.tb.items.each(function(item){item.enable();});if(Ext.isGecko){this.win.focus();var s=this.win.getSelection();if(!s.focusNode||s.focusNode.nodeType!=3){var r=s.getRangeAt(0);r.selectNodeContents((this.doc.body||this.doc.documentElement));r.collapse(true);this.deferFocus();} -try{this.execCmd('useCSS',true);this.execCmd('styleWithCSS',false);}catch(e){}}},adjustFont:function(btn){var adjust=btn.id=='increasefontsize'?1:-1;if(Ext.isSafari){adjust*=2;} -var v=parseInt(this.doc.queryCommandValue('FontSize')||3,10);v=Math.max(1,v+adjust);this.execCmd('FontSize',v+(Ext.isSafari?'px':0));},onEditorEvent:function(e){this.updateToolbar();},updateToolbar:function(){if(!this.activated){this.onFirstFocus();return;} -var btns=this.tb.items.map,doc=this.doc;if(this.enableFormat){btns.bold.toggle(doc.queryCommandState('bold'));btns.italic.toggle(doc.queryCommandState('italic'));btns.underline.toggle(doc.queryCommandState('underline'));} -if(this.enableAlignments){btns.justifyleft.toggle(doc.queryCommandState('justifyleft'));btns.justifycenter.toggle(doc.queryCommandState('justifycenter'));btns.justifyright.toggle(doc.queryCommandState('justifyright'));} -if(!Ext.isSafari&&this.enableLists){btns.insertorderedlist.toggle(doc.queryCommandState('insertorderedlist'));btns.insertunorderedlist.toggle(doc.queryCommandState('insertunorderedlist'));} -if(this.enableColors){btns.forecolor.menu.hide();btns.backcolor.menu.hide();} -this.syncValue();},relayBtnCmd:function(btn){this.relayCmd(btn.id);},relayCmd:function(cmd,value){this.win.focus();this.execCmd(cmd,value);this.updateToolbar();this.deferFocus();},execCmd:function(cmd,value){this.doc.execCommand(cmd,false,value===undefined?null:value);},applyCommand:function(e){if(e.ctrlKey){var c=e.getCharCode(),cmd;if(c>0){c=String.fromCharCode(c);switch(c){case'b':cmd='bold';break;case'i':cmd='italic';break;case'u':cmd='underline';break;} -if(cmd){this.win.focus();this.execCmd(cmd);this.deferFocus();e.preventDefault();}}}},fixTab:function(e){if(e.getKey()==e.TAB){e.stopEvent();if(Ext.isIE){var r=this.doc.selection.createRange();if(r){r.collapse(true);r.pasteHTML(' ');this.deferFocus();}}else if(Ext.isOpera){this.win.focus();this.execCmd('InsertHTML',' ');this.deferFocus();}else{this.execCmd('InsertText','\t');this.deferFocus();}}},getToolbar:function(){return this.tb;},buttonTips:{bold:{title:'Bold (Ctrl+B)',text:'Make the selected text bold.',cls:'x-html-editor-tip'},italic:{title:'Italic (Ctrl+I)',text:'Make the selected text italic.',cls:'x-html-editor-tip'},underline:{title:'Underline (Ctrl+U)',text:'Underline the selected text.',cls:'x-html-editor-tip'},increasefontsize:{title:'Grow Text',text:'Increase the font size.',cls:'x-html-editor-tip'},decreasefontsize:{title:'Shrink Text',text:'Decrease the font size.',cls:'x-html-editor-tip'},backcolor:{title:'Text Highlight Color',text:'Change the background color of the selected text.',cls:'x-html-editor-tip'},forecolor:{title:'Font Color',text:'Change the color of the selected text.',cls:'x-html-editor-tip'},justifyleft:{title:'Align Text Left',text:'Align text to the left.',cls:'x-html-editor-tip'},justifycenter:{title:'Center Text',text:'Center text in the editor.',cls:'x-html-editor-tip'},justifyright:{title:'Align Text Right',text:'Align text to the right.',cls:'x-html-editor-tip'},insertunorderedlist:{title:'Bullet List',text:'Start a bulleted list.',cls:'x-html-editor-tip'},insertorderedlist:{title:'Numbered List',text:'Start a numbered list.',cls:'x-html-editor-tip'},sourceedit:{title:'Source Edit',text:'Switch to source editing mode.',cls:'x-html-editor-tip'}}}); - -Ext.form.BasicForm=function(el,config){Ext.apply(this,config);this.items=new Ext.util.MixedCollection(false,function(o){return o.id||(o.id=Ext.id());});this.addEvents({beforeaction:true,actionfailed:true,actioncomplete:true});if(el){this.initEl(el);} -Ext.form.BasicForm.superclass.constructor.call(this);};Ext.extend(Ext.form.BasicForm,Ext.util.Observable,{timeout:30,activeAction:null,trackResetOnLoad:false,waitMsgTarget:undefined,initEl:function(el){this.el=Ext.get(el);this.id=this.el.id||Ext.id();this.el.on('submit',this.onSubmit,this);this.el.addClass('x-form');},onSubmit:function(e){e.stopEvent();},isValid:function(){var valid=true;this.items.each(function(f){if(!f.validate()){valid=false;}});return valid;},isDirty:function(){var dirty=false;this.items.each(function(f){if(f.isDirty()){dirty=true;return false;}});return dirty;},doAction:function(action,options){if(typeof action=='string'){action=new Ext.form.Action.ACTION_TYPES[action](this,options);} -if(this.fireEvent('beforeaction',this,action)!==false){this.beforeAction(action);action.run.defer(100,action);} -return this;},submit:function(options){this.doAction('submit',options);return this;},load:function(options){this.doAction('load',options);return this;},updateRecord:function(record){record.beginEdit();var fs=record.fields;fs.each(function(f){var field=this.findField(f.name);if(field){record.set(f.name,field.getValue());}},this);record.endEdit();return this;},loadRecord:function(record){this.setValues(record.data);return this;},beforeAction:function(action){var o=action.options;if(o.waitMsg){if(this.waitMsgTarget===true){this.el.mask(o.waitMsg,'x-mask-loading');}else if(this.waitMsgTarget){this.waitMsgTarget=Ext.get(this.waitMsgTarget);this.waitMsgTarget.mask(o.waitMsg,'x-mask-loading');}else{Ext.MessageBox.wait(o.waitMsg,o.waitTitle||this.waitTitle||'Please Wait...');}}},afterAction:function(action,success){this.activeAction=null;var o=action.options;if(o.waitMsg){if(this.waitMsgTarget===true){this.el.unmask();}else if(this.waitMsgTarget){this.waitMsgTarget.unmask();}else{Ext.MessageBox.updateProgress(1);Ext.MessageBox.hide();}} -if(success){if(o.reset){this.reset();} -Ext.callback(o.success,o.scope,[this,action]);this.fireEvent('actioncomplete',this,action);}else{Ext.callback(o.failure,o.scope,[this,action]);this.fireEvent('actionfailed',this,action);}},findField:function(id){var field=this.items.get(id);if(!field){this.items.each(function(f){if(f.isFormField&&(f.dataIndex==id||f.id==id||f.getName()==id)){field=f;return false;}});} -return field||null;},markInvalid:function(errors){if(errors instanceof Array){for(var i=0,len=errors.length;i<len;i++){var fieldError=errors[i];var f=this.findField(fieldError.id);if(f){f.markInvalid(fieldError.msg);}}}else{var field,id;for(id in errors){if(typeof errors[id]!='function'&&(field=this.findField(id))){field.markInvalid(errors[id]);}}} -return this;},setValues:function(values){if(values instanceof Array){for(var i=0,len=values.length;i<len;i++){var v=values[i];var f=this.findField(v.id);if(f){f.setValue(v.value);if(this.trackResetOnLoad){f.originalValue=f.getValue();}}}}else{var field,id;for(id in values){if(typeof values[id]!='function'&&(field=this.findField(id))){field.setValue(values[id]);if(this.trackResetOnLoad){field.originalValue=field.getValue();}}}} -return this;},getValues:function(asString){var fs=Ext.lib.Ajax.serializeForm(this.el.dom);if(asString===true){return fs;} -return Ext.urlDecode(fs);},clearInvalid:function(){this.items.each(function(f){f.clearInvalid();});return this;},reset:function(){this.items.each(function(f){f.reset();});return this;},add:function(){this.items.addAll(Array.prototype.slice.call(arguments,0));return this;},remove:function(field){this.items.remove(field);return this;},render:function(){this.items.each(function(f){if(f.isFormField&&!f.rendered&&document.getElementById(f.id)){f.applyTo(f.id);}});return this;},applyToFields:function(o){this.items.each(function(f){Ext.apply(f,o);});return this;},applyIfToFields:function(o){this.items.each(function(f){Ext.applyIf(f,o);});return this;}});Ext.BasicForm=Ext.form.BasicForm; - -Ext.form.Form=function(config){Ext.form.Form.superclass.constructor.call(this,null,config);this.url=this.url||this.action;if(!this.root){this.root=new Ext.form.Layout(Ext.applyIf({id:Ext.id()},config));} -this.active=this.root;this.buttons=[];this.addEvents({clientvalidation:true});};Ext.extend(Ext.form.Form,Ext.form.BasicForm,{buttonAlign:'center',minButtonWidth:75,labelAlign:'left',monitorValid:false,monitorPoll:200,column:function(c){var col=new Ext.form.Column(c);this.start(col);if(arguments.length>1){this.add.apply(this,Array.prototype.slice.call(arguments,1));this.end();} -return col;},fieldset:function(c){var fs=new Ext.form.FieldSet(c);this.start(fs);if(arguments.length>1){this.add.apply(this,Array.prototype.slice.call(arguments,1));this.end();} -return fs;},container:function(c){var l=new Ext.form.Layout(c);this.start(l);if(arguments.length>1){this.add.apply(this,Array.prototype.slice.call(arguments,1));this.end();} -return l;},start:function(c){Ext.applyIf(c,{'labelAlign':this.active.labelAlign,'labelWidth':this.active.labelWidth,'itemCls':this.active.itemCls});this.active.stack.push(c);c.ownerCt=this.active;this.active=c;return this;},end:function(){if(this.active==this.root){return this;} -this.active=this.active.ownerCt;return this;},add:function(){this.active.stack.push.apply(this.active.stack,arguments);var r=[];for(var i=0,a=arguments,len=a.length;i<len;i++){if(a[i].isFormField){r.push(a[i]);}} -if(r.length>0){Ext.form.Form.superclass.add.apply(this,r);} -return this;},render:function(ct){ct=Ext.get(ct);var o=this.autoCreate||{tag:'form',method:this.method||'POST',id:this.id||Ext.id()};this.initEl(ct.createChild(o));this.root.render(this.el);this.items.each(function(f){f.render('x-form-el-'+f.id);});if(this.buttons.length>0){var tb=this.el.createChild({cls:'x-form-btns-ct',cn:{cls:"x-form-btns x-form-btns-"+this.buttonAlign,html:'<table cellspacing="0"><tbody><tr></tr></tbody></table><div class="x-clear"></div>'}},null,true);var tr=tb.getElementsByTagName('tr')[0];for(var i=0,len=this.buttons.length;i<len;i++){var b=this.buttons[i];var td=document.createElement('td');td.className='x-form-btn-td';b.render(tr.appendChild(td));}} -if(this.monitorValid){this.startMonitoring();} -return this;},addButton:function(config,handler,scope){var bc={handler:handler,scope:scope,minWidth:this.minButtonWidth,hideParent:true};if(typeof config=="string"){bc.text=config;}else{Ext.apply(bc,config);} -var btn=new Ext.Button(null,bc);this.buttons.push(btn);return btn;},startMonitoring:function(){if(!this.bound){this.bound=true;Ext.TaskMgr.start({run:this.bindHandler,interval:this.monitorPoll||200,scope:this});}},stopMonitoring:function(){this.bound=false;},bindHandler:function(){if(!this.bound){return false;} -var valid=true;this.items.each(function(f){if(!f.isValid(true)){valid=false;return false;}});for(var i=0,len=this.buttons.length;i<len;i++){var btn=this.buttons[i];if(btn.formBind===true&&btn.disabled===valid){btn.setDisabled(!valid);}} -this.fireEvent('clientvalidation',this,valid);}});Ext.Form=Ext.form.Form; - -Ext.form.Action=function(form,options){this.form=form;this.options=options||{};};Ext.form.Action.CLIENT_INVALID='client';Ext.form.Action.SERVER_INVALID='server';Ext.form.Action.CONNECT_FAILURE='connect';Ext.form.Action.LOAD_FAILURE='load';Ext.form.Action.prototype={type:'default',failureType:undefined,response:undefined,result:undefined,run:function(options){},success:function(response){},handleResponse:function(response){},failure:function(response){this.response=response;this.failureType=Ext.form.Action.CONNECT_FAILURE;this.form.afterAction(this,false);},processResponse:function(response){this.response=response;if(!response.responseText){return true;} -this.result=this.handleResponse(response);return this.result;},getUrl:function(appendParams){var url=this.options.url||this.form.url||this.form.el.dom.action;if(appendParams){var p=this.getParams();if(p){url+=(url.indexOf('?')!=-1?'&':'?')+p;}} -return url;},getMethod:function(){return(this.options.method||this.form.method||this.form.el.dom.method||'POST').toUpperCase();},getParams:function(){var bp=this.form.baseParams;var p=this.options.params;if(p){if(typeof p=="object"){p=Ext.urlEncode(Ext.applyIf(p,bp));}else if(typeof p=='string'&&bp){p+='&'+Ext.urlEncode(bp);}}else if(bp){p=Ext.urlEncode(bp);} -return p;},createCallback:function(){return{success:this.success,failure:this.failure,scope:this,timeout:(this.form.timeout*1000),upload:this.form.fileUpload?this.success:undefined};}};Ext.form.Action.Submit=function(form,options){Ext.form.Action.Submit.superclass.constructor.call(this,form,options);};Ext.extend(Ext.form.Action.Submit,Ext.form.Action,{type:'submit',run:function(){var o=this.options;var isPost=this.getMethod()=='POST';if(o.clientValidation===false||this.form.isValid()){Ext.lib.Ajax.formRequest(this.form.el.dom,this.getUrl(!isPost),this.createCallback(),isPost?this.getParams():null,this.form.fileUpload,Ext.SSL_SECURE_URL);}else if(o.clientValidation!==false){this.failureType=Ext.form.Action.CLIENT_INVALID;this.form.afterAction(this,false);}},success:function(response){var result=this.processResponse(response);if(result===true||result.success){this.form.afterAction(this,true);return;} -if(result.errors){this.form.markInvalid(result.errors);this.failureType=Ext.form.Action.SERVER_INVALID;} -this.form.afterAction(this,false);},handleResponse:function(response){if(this.form.errorReader){var rs=this.form.errorReader.read(response);var errors=[];if(rs.records){for(var i=0,len=rs.records.length;i<len;i++){var r=rs.records[i];errors[i]=r.data;}} -if(errors.length<1){errors=null;} -return{success:rs.success,errors:errors};} -return Ext.decode(response.responseText);}});Ext.form.Action.Load=function(form,options){Ext.form.Action.Load.superclass.constructor.call(this,form,options);this.reader=this.form.reader;};Ext.extend(Ext.form.Action.Load,Ext.form.Action,{type:'load',run:function(){Ext.lib.Ajax.request(this.getMethod(),this.getUrl(false),this.createCallback(),this.getParams());},success:function(response){var result=this.processResponse(response);if(result===true||!result.success||!result.data){this.failureType=Ext.form.Action.LOAD_FAILURE;this.form.afterAction(this,false);return;} -this.form.clearInvalid();this.form.setValues(result.data);this.form.afterAction(this,true);},handleResponse:function(response){if(this.form.reader){var rs=this.form.reader.read(response);var data=rs.records&&rs.records[0]?rs.records[0].data:null;return{success:rs.success,data:data};} -return Ext.decode(response.responseText);}});Ext.form.Action.ACTION_TYPES={'load':Ext.form.Action.Load,'submit':Ext.form.Action.Submit}; - -Ext.form.Layout=function(config){Ext.form.Layout.superclass.constructor.call(this,config);this.stack=[];};Ext.extend(Ext.form.Layout,Ext.Component,{clear:true,labelSeparator:':',hideLabels:false,defaultAutoCreate:{tag:'div',cls:'x-form-ct'},onRender:function(ct,position){if(this.el){this.el=Ext.get(this.el);}else{var cfg=this.getAutoCreate();this.el=ct.createChild(cfg,position);} -if(this.style){this.el.applyStyles(this.style);} -if(this.labelAlign){this.el.addClass('x-form-label-'+this.labelAlign);} -if(this.hideLabels){this.labelStyle="display:none";this.elementStyle="padding-left:0;";}else{if(typeof this.labelWidth=='number'){this.labelStyle="width:"+this.labelWidth+"px;";this.elementStyle="padding-left:"+((this.labelWidth+(typeof this.labelPad=='number'?this.labelPad:5))+'px')+";";} -if(this.labelAlign=='top'){this.labelStyle="width:auto;";this.elementStyle="padding-left:0;";}} -var stack=this.stack;var slen=stack.length;if(slen>0){if(!this.fieldTpl){var t=new Ext.Template('<div class="x-form-item {5}">','<label for="{0}" style="{2}">{1}{4}</label>','<div class="x-form-element" id="x-form-el-{0}" style="{3}">','</div>','</div><div class="x-form-clear-left"></div>');t.disableFormats=true;t.compile();Ext.form.Layout.prototype.fieldTpl=t;} -for(var i=0;i<slen;i++){if(stack[i].isFormField){this.renderField(stack[i]);}else{this.renderComponent(stack[i]);}}} -if(this.clear){this.el.createChild({cls:'x-form-clear'});}},renderField:function(f){this.fieldTpl.append(this.el,[f.id,f.fieldLabel,f.labelStyle||this.labelStyle||'',this.elementStyle||'',typeof f.labelSeparator=='undefined'?this.labelSeparator:f.labelSeparator,f.itemCls||this.itemCls||'']);},renderComponent:function(c){c.render(this.el);}});Ext.form.Column=function(config){Ext.form.Column.superclass.constructor.call(this,config);};Ext.extend(Ext.form.Column,Ext.form.Layout,{defaultAutoCreate:{tag:'div',cls:'x-form-ct x-form-column'},onRender:function(ct,position){Ext.form.Column.superclass.onRender.call(this,ct,position);if(this.width){this.el.setWidth(this.width);}}});Ext.form.FieldSet=function(config){Ext.form.FieldSet.superclass.constructor.call(this,config);};Ext.extend(Ext.form.FieldSet,Ext.form.Layout,{defaultAutoCreate:{tag:'fieldset',cn:{tag:'legend'}},onRender:function(ct,position){Ext.form.FieldSet.superclass.onRender.call(this,ct,position);if(this.legend){this.setLegend(this.legend);}},setLegend:function(text){if(this.rendered){this.el.child('legend').update(text);}}}); - -Ext.form.VTypes=function(){var alpha=/^[a-zA-Z_]+$/;var alphanum=/^[a-zA-Z0-9_]+$/;var email=/^([\w]+)(.[\w]+)*@([\w-]+\.){1,5}([A-Za-z]){2,4}$/;var url=/(((https?)|(ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i;return{'email':function(v){return email.test(v);},'emailText':'This field should be an e-mail address in the format "user@domain.com"','emailMask':/[a-z0-9_\.\-@]/i,'url':function(v){return url.test(v);},'urlText':'This field should be a URL in the format "http:/'+'/www.domain.com"','alpha':function(v){return alpha.test(v);},'alphaText':'This field should only contain letters and _','alphaMask':/[a-z_]/i,'alphanum':function(v){return alphanum.test(v);},'alphanumText':'This field should only contain letters, numbers and _','alphanumMask':/[a-z0-9_]/i};}(); - -Ext.LayoutManager=function(container,config){Ext.LayoutManager.superclass.constructor.call(this);this.el=Ext.get(container);if(this.el.dom==document.body&&Ext.isIE&&!config.allowScroll){document.body.scroll="no";}else if(this.el.dom!=document.body&&this.el.getStyle('position')=='static'){this.el.position('relative');} -this.id=this.el.id;this.el.addClass("x-layout-container");this.monitorWindowResize=true;this.regions={};this.addEvents({"layout":true,"regionresized":true,"regioncollapsed":true,"regionexpanded":true});this.updating=false;Ext.EventManager.onWindowResize(this.onWindowResize,this,true);};Ext.extend(Ext.LayoutManager,Ext.util.Observable,{isUpdating:function(){return this.updating;},beginUpdate:function(){this.updating=true;},endUpdate:function(noLayout){this.updating=false;if(!noLayout){this.layout();}},layout:function(){},onRegionResized:function(region,newSize){this.fireEvent("regionresized",region,newSize);this.layout();},onRegionCollapsed:function(region){this.fireEvent("regioncollapsed",region);},onRegionExpanded:function(region){this.fireEvent("regionexpanded",region);},getViewSize:function(){var size;if(this.el.dom!=document.body){size=this.el.getSize();}else{size={width:Ext.lib.Dom.getViewWidth(),height:Ext.lib.Dom.getViewHeight()};} -size.width-=this.el.getBorderWidth("lr")-this.el.getPadding("lr");size.height-=this.el.getBorderWidth("tb")-this.el.getPadding("tb");return size;},getEl:function(){return this.el;},getRegion:function(target){return this.regions[target.toLowerCase()];},onWindowResize:function(){if(this.monitorWindowResize){this.layout();}}}); - -Ext.BorderLayout=function(container,config){config=config||{};Ext.BorderLayout.superclass.constructor.call(this,container,config);this.factory=config.factory||Ext.BorderLayout.RegionFactory;for(var i=0,len=this.factory.validRegions.length;i<len;i++){var target=this.factory.validRegions[i];if(config[target]){this.addRegion(target,config[target]);}}};Ext.extend(Ext.BorderLayout,Ext.LayoutManager,{addRegion:function(target,config){if(!this.regions[target]){var r=this.factory.create(target,this,config);this.bindRegion(target,r);} -return this.regions[target];},bindRegion:function(name,r){this.regions[name]=r;r.on("visibilitychange",this.layout,this);r.on("paneladded",this.layout,this);r.on("panelremoved",this.layout,this);r.on("invalidated",this.layout,this);r.on("resized",this.onRegionResized,this);r.on("collapsed",this.onRegionCollapsed,this);r.on("expanded",this.onRegionExpanded,this);},layout:function(){if(this.updating)return;var size=this.getViewSize();var w=size.width,h=size.height;var centerW=w,centerH=h,centerY=0,centerX=0;var rs=this.regions;var n=rs["north"],s=rs["south"],west=rs["west"],e=rs["east"],c=rs["center"];if(n&&n.isVisible()){var b=n.getBox();var m=n.getMargins();b.width=w-(m.left+m.right);b.x=m.left;b.y=m.top;centerY=b.height+b.y+m.bottom;centerH-=centerY;n.updateBox(this.safeBox(b));} -if(s&&s.isVisible()){var b=s.getBox();var m=s.getMargins();b.width=w-(m.left+m.right);b.x=m.left;var totalHeight=(b.height+m.top+m.bottom);b.y=h-totalHeight+m.top;centerH-=totalHeight;s.updateBox(this.safeBox(b));} -if(west&&west.isVisible()){var b=west.getBox();var m=west.getMargins();b.height=centerH-(m.top+m.bottom);b.x=m.left;b.y=centerY+m.top;var totalWidth=(b.width+m.left+m.right);centerX+=totalWidth;centerW-=totalWidth;west.updateBox(this.safeBox(b));} -if(e&&e.isVisible()){var b=e.getBox();var m=e.getMargins();b.height=centerH-(m.top+m.bottom);var totalWidth=(b.width+m.left+m.right);b.x=w-totalWidth+m.left;b.y=centerY+m.top;centerW-=totalWidth;e.updateBox(this.safeBox(b));} -if(c){var m=c.getMargins();var centerBox={x:centerX+m.left,y:centerY+m.top,width:centerW-(m.left+m.right),height:centerH-(m.top+m.bottom)};c.updateBox(this.safeBox(centerBox));} -this.el.repaint();this.fireEvent("layout",this);},safeBox:function(box){box.width=Math.max(0,box.width);box.height=Math.max(0,box.height);return box;},add:function(target,panel){target=target.toLowerCase();return this.regions[target].add(panel);},remove:function(target,panel){target=target.toLowerCase();return this.regions[target].remove(panel);},findPanel:function(panelId){var rs=this.regions;for(var target in rs){if(typeof rs[target]!="function"){var p=rs[target].getPanel(panelId);if(p){return p;}}} -return null;},showPanel:function(panelId){var rs=this.regions;for(var target in rs){var r=rs[target];if(typeof r!="function"){if(r.hasPanel(panelId)){return r.showPanel(panelId);}}} -return null;},restoreState:function(provider){if(!provider){provider=Ext.state.Manager;} -var sm=new Ext.LayoutStateManager();sm.init(this,provider);},batchAdd:function(regions){this.beginUpdate();for(var rname in regions){var lr=this.regions[rname];if(lr){this.addTypedPanels(lr,regions[rname]);}} -this.endUpdate();},addTypedPanels:function(lr,ps){if(typeof ps=='string'){lr.add(new Ext.ContentPanel(ps));} -else if(ps instanceof Array){for(var i=0,len=ps.length;i<len;i++){this.addTypedPanels(lr,ps[i]);}} -else if(!ps.events){var el=ps.el;delete ps.el;lr.add(new Ext.ContentPanel(el||Ext.id(),ps));} -else{lr.add(ps);}}});Ext.BorderLayout.create=function(config,targetEl){var layout=new Ext.BorderLayout(targetEl||document.body,config);layout.beginUpdate();var regions=Ext.BorderLayout.RegionFactory.validRegions;for(var j=0,jlen=regions.length;j<jlen;j++){var lr=regions[j];if(layout.regions[lr]&&config[lr].panels){var r=layout.regions[lr];var ps=config[lr].panels;layout.addTypedPanels(r,ps);}} -layout.endUpdate();return layout;};Ext.BorderLayout.RegionFactory={validRegions:["north","south","east","west","center"],create:function(target,mgr,config){target=target.toLowerCase();if(config.lightweight||config.basic){return new Ext.BasicLayoutRegion(mgr,config,target);} -switch(target){case"north":return new Ext.NorthLayoutRegion(mgr,config);case"south":return new Ext.SouthLayoutRegion(mgr,config);case"east":return new Ext.EastLayoutRegion(mgr,config);case"west":return new Ext.WestLayoutRegion(mgr,config);case"center":return new Ext.CenterLayoutRegion(mgr,config);} -throw'Layout region "'+target+'" not supported.';}}; - -Ext.BasicLayoutRegion=function(mgr,config,pos,skipConfig){this.mgr=mgr;this.position=pos;this.events={"beforeremove":true,"invalidated":true,"visibilitychange":true,"paneladded":true,"panelremoved":true,"collapsed":true,"expanded":true,"slideshow":true,"slidehide":true,"panelactivated":true,"resized":true};this.panels=new Ext.util.MixedCollection();this.panels.getKey=this.getPanelId.createDelegate(this);this.box=null;this.activePanel=null;if(skipConfig!==true){this.applyConfig(config);}};Ext.extend(Ext.BasicLayoutRegion,Ext.util.Observable,{getPanelId:function(p){return p.getId();},applyConfig:function(config){this.margins=config.margins||this.margins||{top:0,left:0,right:0,bottom:0};this.config=config;},resizeTo:function(newSize){var el=this.el?this.el:(this.activePanel?this.activePanel.getEl():null);if(el){switch(this.position){case"east":case"west":el.setWidth(newSize);this.fireEvent("resized",this,newSize);break;case"north":case"south":el.setHeight(newSize);this.fireEvent("resized",this,newSize);break;}}},getBox:function(){return this.activePanel?this.activePanel.getEl().getBox(false,true):null;},getMargins:function(){return this.margins;},updateBox:function(box){this.box=box;var el=this.activePanel.getEl();el.dom.style.left=box.x+"px";el.dom.style.top=box.y+"px";this.activePanel.setSize(box.width,box.height);},getEl:function(){return this.activePanel;},isVisible:function(){return this.activePanel?true:false;},setActivePanel:function(panel){panel=this.getPanel(panel);if(this.activePanel&&this.activePanel!=panel){this.activePanel.setActiveState(false);this.activePanel.getEl().setLeftTop(-10000,-10000);} -this.activePanel=panel;panel.setActiveState(true);if(this.box){panel.setSize(this.box.width,this.box.height);} -this.fireEvent("panelactivated",this,panel);this.fireEvent("invalidated");},showPanel:function(panel){if(panel=this.getPanel(panel)){this.setActivePanel(panel);} -return panel;},getActivePanel:function(){return this.activePanel;},add:function(panel){if(arguments.length>1){for(var i=0,len=arguments.length;i<len;i++){this.add(arguments[i]);} -return null;} -if(this.hasPanel(panel)){this.showPanel(panel);return panel;} -var el=panel.getEl();if(el.dom.parentNode!=this.mgr.el.dom){this.mgr.el.dom.appendChild(el.dom);} -if(panel.setRegion){panel.setRegion(this);} -this.panels.add(panel);el.setStyle("position","absolute");if(!panel.background){this.setActivePanel(panel);if(this.config.initialSize&&this.panels.getCount()==1){this.resizeTo(this.config.initialSize);}} -this.fireEvent("paneladded",this,panel);return panel;},hasPanel:function(panel){if(typeof panel=="object"){panel=panel.getId();} -return this.getPanel(panel)?true:false;},remove:function(panel,preservePanel){panel=this.getPanel(panel);if(!panel){return null;} -var e={};this.fireEvent("beforeremove",this,panel,e);if(e.cancel===true){return null;} -var panelId=panel.getId();this.panels.removeKey(panelId);return panel;},getPanel:function(id){if(typeof id=="object"){return id;} -return this.panels.get(id);},getPosition:function(){return this.position;}}); - -Ext.LayoutRegion=function(mgr,config,pos){Ext.LayoutRegion.superclass.constructor.call(this,mgr,config,pos,true);var dh=Ext.DomHelper;this.el=dh.append(mgr.el.dom,{tag:"div",cls:"x-layout-panel x-layout-panel-"+this.position},true);this.titleEl=dh.append(this.el.dom,{tag:"div",unselectable:"on",cls:"x-unselectable x-layout-panel-hd x-layout-title-"+this.position,children:[{tag:"span",cls:"x-unselectable x-layout-panel-hd-text",unselectable:"on",html:" "},{tag:"div",cls:"x-unselectable x-layout-panel-hd-tools",unselectable:"on"}]},true);this.titleEl.enableDisplayMode();this.titleTextEl=this.titleEl.dom.firstChild;this.tools=Ext.get(this.titleEl.dom.childNodes[1],true);this.closeBtn=this.createTool(this.tools.dom,"x-layout-close");this.closeBtn.enableDisplayMode();this.closeBtn.on("click",this.closeClicked,this);this.closeBtn.hide();this.createBody(config);this.visible=true;this.collapsed=false;if(config.hideWhenEmpty){this.hide();this.on("paneladded",this.validateVisibility,this);this.on("panelremoved",this.validateVisibility,this);} -this.applyConfig(config);};Ext.extend(Ext.LayoutRegion,Ext.BasicLayoutRegion,{createBody:function(){this.bodyEl=this.el.createChild({tag:"div",cls:"x-layout-panel-body"});},applyConfig:function(c){if(c.collapsible&&this.position!="center"&&!this.collapsedEl){var dh=Ext.DomHelper;if(c.titlebar!==false){this.collapseBtn=this.createTool(this.tools.dom,"x-layout-collapse-"+this.position);this.collapseBtn.on("click",this.collapse,this);this.collapseBtn.enableDisplayMode();if(c.showPin===true||this.showPin){this.stickBtn=this.createTool(this.tools.dom,"x-layout-stick");this.stickBtn.enableDisplayMode();this.stickBtn.on("click",this.expand,this);this.stickBtn.hide();}} -this.collapsedEl=dh.append(this.mgr.el.dom,{cls:"x-layout-collapsed x-layout-collapsed-"+this.position,children:[{cls:"x-layout-collapsed-tools",children:[{cls:"x-layout-ctools-inner"}]}]},true);if(c.floatable!==false){this.collapsedEl.addClassOnOver("x-layout-collapsed-over");this.collapsedEl.on("click",this.collapseClick,this);} -if(c.collapsedTitle&&(this.position=="north"||this.position=="south")){this.collapsedTitleTextEl=dh.append(this.collapsedEl.dom,{tag:"div",cls:"x-unselectable x-layout-panel-hd-text",id:"message",unselectable:"on",style:{"float":"left"}});this.collapsedTitleTextEl.innerHTML=c.collapsedTitle;} -this.expandBtn=this.createTool(this.collapsedEl.dom.firstChild.firstChild,"x-layout-expand-"+this.position);this.expandBtn.on("click",this.expand,this);} -if(this.collapseBtn){this.collapseBtn.setVisible(c.collapsible==true);} -this.cmargins=c.cmargins||this.cmargins||(this.position=="west"||this.position=="east"?{top:0,left:2,right:2,bottom:0}:{top:2,left:0,right:0,bottom:2});this.margins=c.margins||this.margins||{top:0,left:0,right:0,bottom:0};this.bottomTabs=c.tabPosition!="top";this.autoScroll=c.autoScroll||false;if(this.autoScroll){this.bodyEl.setStyle("overflow","auto");}else{this.bodyEl.setStyle("overflow","hidden");} -if((!c.titlebar&&!c.title)||c.titlebar===false){this.titleEl.hide();}else{this.titleEl.show();if(c.title){this.titleTextEl.innerHTML=c.title;}} -this.duration=c.duration||.30;this.slideDuration=c.slideDuration||.45;this.config=c;if(c.collapsed){this.collapse(true);} -if(c.hidden){this.hide();}},isVisible:function(){return this.visible;},setCollapsedTitle:function(title){title=title||" ";if(this.collapsedTitleTextEl){this.collapsedTitleTextEl.innerHTML=title;}},getBox:function(){var b;if(!this.collapsed){b=this.el.getBox(false,true);}else{b=this.collapsedEl.getBox(false,true);} -return b;},getMargins:function(){return this.collapsed?this.cmargins:this.margins;},highlight:function(){this.el.addClass("x-layout-panel-dragover");},unhighlight:function(){this.el.removeClass("x-layout-panel-dragover");},updateBox:function(box){this.box=box;if(!this.collapsed){this.el.dom.style.left=box.x+"px";this.el.dom.style.top=box.y+"px";this.updateBody(box.width,box.height);}else{this.collapsedEl.dom.style.left=box.x+"px";this.collapsedEl.dom.style.top=box.y+"px";this.collapsedEl.setSize(box.width,box.height);} -if(this.tabs){this.tabs.autoSizeTabs();}},updateBody:function(w,h){if(w!==null){this.el.setWidth(w);w-=this.el.getBorderWidth("rl");if(this.config.adjustments){w+=this.config.adjustments[0];}} -if(h!==null){this.el.setHeight(h);h=this.titleEl&&this.titleEl.isDisplayed()?h-(this.titleEl.getHeight()||0):h;h-=this.el.getBorderWidth("tb");if(this.config.adjustments){h+=this.config.adjustments[1];} -this.bodyEl.setHeight(h);if(this.tabs){h=this.tabs.syncHeight(h);}} -if(this.panelSize){w=w!==null?w:this.panelSize.width;h=h!==null?h:this.panelSize.height;} -if(this.activePanel){var el=this.activePanel.getEl();w=w!==null?w:el.getWidth();h=h!==null?h:el.getHeight();this.panelSize={width:w,height:h};this.activePanel.setSize(w,h);} -if(Ext.isIE&&this.tabs){this.tabs.el.repaint();}},getEl:function(){return this.el;},hide:function(){if(!this.collapsed){this.el.dom.style.left="-2000px";this.el.hide();}else{this.collapsedEl.dom.style.left="-2000px";this.collapsedEl.hide();} -this.visible=false;this.fireEvent("visibilitychange",this,false);},show:function(){if(!this.collapsed){this.el.show();}else{this.collapsedEl.show();} -this.visible=true;this.fireEvent("visibilitychange",this,true);},closeClicked:function(){if(this.activePanel){this.remove(this.activePanel);}},collapseClick:function(e){if(this.isSlid){e.stopPropagation();this.slideIn();}else{e.stopPropagation();this.slideOut();}},collapse:function(skipAnim){if(this.collapsed)return;this.collapsed=true;if(this.split){this.split.el.hide();} -if(this.config.animate&&skipAnim!==true){this.fireEvent("invalidated",this);this.animateCollapse();}else{this.el.setLocation(-20000,-20000);this.el.hide();this.collapsedEl.show();this.fireEvent("collapsed",this);this.fireEvent("invalidated",this);}},animateCollapse:function(){},expand:function(e,skipAnim){if(e)e.stopPropagation();if(!this.collapsed||this.el.hasActiveFx())return;if(this.isSlid){this.afterSlideIn();skipAnim=true;} -this.collapsed=false;if(this.config.animate&&skipAnim!==true){this.animateExpand();}else{this.el.show();if(this.split){this.split.el.show();} -this.collapsedEl.setLocation(-2000,-2000);this.collapsedEl.hide();this.fireEvent("invalidated",this);this.fireEvent("expanded",this);}},animateExpand:function(){},initTabs:function(){this.bodyEl.setStyle("overflow","hidden");var ts=new Ext.TabPanel(this.bodyEl.dom,{tabPosition:this.bottomTabs?'bottom':'top',disableTooltips:this.config.disableTabTips});if(this.config.hideTabs){ts.stripWrap.setDisplayed(false);} -this.tabs=ts;ts.resizeTabs=this.config.resizeTabs===true;ts.minTabWidth=this.config.minTabWidth||40;ts.maxTabWidth=this.config.maxTabWidth||250;ts.preferredTabWidth=this.config.preferredTabWidth||150;ts.monitorResize=false;ts.bodyEl.setStyle("overflow",this.config.autoScroll?"auto":"hidden");ts.bodyEl.addClass('x-layout-tabs-body');this.panels.each(this.initPanelAsTab,this);},initPanelAsTab:function(panel){var ti=this.tabs.addTab(panel.getEl().id,panel.getTitle(),null,this.config.closeOnTab&&panel.isClosable());if(panel.tabTip!==undefined){ti.setTooltip(panel.tabTip);} -ti.on("activate",function(){this.setActivePanel(panel);},this);if(this.config.closeOnTab){ti.on("beforeclose",function(t,e){e.cancel=true;this.remove(panel);},this);} -return ti;},updatePanelTitle:function(panel,title){if(this.activePanel==panel){this.updateTitle(title);} -if(this.tabs){var ti=this.tabs.getTab(panel.getEl().id);ti.setText(title);if(panel.tabTip!==undefined){ti.setTooltip(panel.tabTip);}}},updateTitle:function(title){if(this.titleTextEl&&!this.config.title){this.titleTextEl.innerHTML=(typeof title!="undefined"&&title.length>0?title:" ");}},setActivePanel:function(panel){panel=this.getPanel(panel);if(this.activePanel&&this.activePanel!=panel){this.activePanel.setActiveState(false);} -this.activePanel=panel;panel.setActiveState(true);if(this.panelSize){panel.setSize(this.panelSize.width,this.panelSize.height);} -if(this.closeBtn){this.closeBtn.setVisible(!this.config.closeOnTab&&!this.isSlid&&panel.isClosable());} -this.updateTitle(panel.getTitle());if(this.tabs){this.fireEvent("invalidated",this);} -this.fireEvent("panelactivated",this,panel);},showPanel:function(panel){if(panel=this.getPanel(panel)){if(this.tabs){var tab=this.tabs.getTab(panel.getEl().id);if(tab.isHidden()){this.tabs.unhideTab(tab.id);} -tab.activate();}else{this.setActivePanel(panel);}} -return panel;},getActivePanel:function(){return this.activePanel;},validateVisibility:function(){if(this.panels.getCount()<1){this.updateTitle(" ");this.closeBtn.hide();this.hide();}else{if(!this.isVisible()){this.show();}}},add:function(panel){if(arguments.length>1){for(var i=0,len=arguments.length;i<len;i++){this.add(arguments[i]);} -return null;} -if(this.hasPanel(panel)){this.showPanel(panel);return panel;} -panel.setRegion(this);this.panels.add(panel);if(this.panels.getCount()==1&&!this.config.alwaysShowTabs){this.bodyEl.dom.appendChild(panel.getEl().dom);if(panel.background!==true){this.setActivePanel(panel);} -this.fireEvent("paneladded",this,panel);return panel;} -if(!this.tabs){this.initTabs();}else{this.initPanelAsTab(panel);} -if(panel.background!==true){this.tabs.activate(panel.getEl().id);} -this.fireEvent("paneladded",this,panel);return panel;},hidePanel:function(panel){if(this.tabs&&(panel=this.getPanel(panel))){this.tabs.hideTab(panel.getEl().id);}},unhidePanel:function(panel){if(this.tabs&&(panel=this.getPanel(panel))){this.tabs.unhideTab(panel.getEl().id);}},clearPanels:function(){while(this.panels.getCount()>0){this.remove(this.panels.first());}},remove:function(panel,preservePanel){panel=this.getPanel(panel);if(!panel){return null;} -var e={};this.fireEvent("beforeremove",this,panel,e);if(e.cancel===true){return null;} -preservePanel=(typeof preservePanel!="undefined"?preservePanel:(this.config.preservePanels===true||panel.preserve===true));var panelId=panel.getId();this.panels.removeKey(panelId);if(preservePanel){document.body.appendChild(panel.getEl().dom);} -if(this.tabs){this.tabs.removeTab(panel.getEl().id);}else if(!preservePanel){this.bodyEl.dom.removeChild(panel.getEl().dom);} -if(this.panels.getCount()==1&&this.tabs&&!this.config.alwaysShowTabs){var p=this.panels.first();var tempEl=document.createElement("div");tempEl.appendChild(p.getEl().dom);this.bodyEl.update("");this.bodyEl.dom.appendChild(p.getEl().dom);tempEl=null;this.updateTitle(p.getTitle());this.tabs=null;this.bodyEl.setStyle("overflow",this.config.autoScroll?"auto":"hidden");this.setActivePanel(p);} -panel.setRegion(null);if(this.activePanel==panel){this.activePanel=null;} -if(this.config.autoDestroy!==false&&preservePanel!==true){try{panel.destroy();}catch(e){}} -this.fireEvent("panelremoved",this,panel);return panel;},getTabs:function(){return this.tabs;},createTool:function(parentEl,className){var btn=Ext.DomHelper.append(parentEl,{tag:"div",cls:"x-layout-tools-button",children:[{tag:"div",cls:"x-layout-tools-button-inner "+className,html:" "}]},true);btn.addClassOnOver("x-layout-tools-button-over");return btn;}}); - -Ext.SplitLayoutRegion=function(mgr,config,pos,cursor){this.cursor=cursor;Ext.SplitLayoutRegion.superclass.constructor.call(this,mgr,config,pos);};Ext.extend(Ext.SplitLayoutRegion,Ext.LayoutRegion,{splitTip:"Drag to resize.",collapsibleSplitTip:"Drag to resize. Double click to hide.",useSplitTips:false,applyConfig:function(config){Ext.SplitLayoutRegion.superclass.applyConfig.call(this,config);if(config.split){if(!this.split){var splitEl=Ext.DomHelper.append(this.mgr.el.dom,{tag:"div",id:this.el.id+"-split",cls:"x-layout-split x-layout-split-"+this.position,html:" "});this.split=new Ext.SplitBar(splitEl,this.el,this.orientation);this.split.on("moved",this.onSplitMove,this);this.split.useShim=config.useShim===true;this.split.getMaximumSize=this[this.position=='north'||this.position=='south'?'getVMaxSize':'getHMaxSize'].createDelegate(this);if(this.useSplitTips){this.split.el.dom.title=config.collapsible?this.collapsibleSplitTip:this.splitTip;} -if(config.collapsible){this.split.el.on("dblclick",this.collapse,this);}} -if(typeof config.minSize!="undefined"){this.split.minSize=config.minSize;} -if(typeof config.maxSize!="undefined"){this.split.maxSize=config.maxSize;} -if(config.hideWhenEmpty||config.hidden){this.hideSplitter();}}},getHMaxSize:function(){var cmax=this.config.maxSize||10000;var center=this.mgr.getRegion("center");return Math.min(cmax,(this.el.getWidth()+center.getEl().getWidth())-center.getMinWidth());},getVMaxSize:function(){var cmax=this.config.maxSize||10000;var center=this.mgr.getRegion("center");return Math.min(cmax,(this.el.getHeight()+center.getEl().getHeight())-center.getMinHeight());},onSplitMove:function(split,newSize){this.fireEvent("resized",this,newSize);},getSplitBar:function(){return this.split;},hide:function(){this.hideSplitter();Ext.SplitLayoutRegion.superclass.hide.call(this);},hideSplitter:function(){if(this.split){this.split.el.setLocation(-2000,-2000);this.split.el.hide();}},show:function(){if(this.split){this.split.el.show();} -Ext.SplitLayoutRegion.superclass.show.call(this);},beforeSlide:function(){if(Ext.isGecko){this.bodyEl.clip();if(this.tabs)this.tabs.bodyEl.clip();if(this.activePanel){this.activePanel.getEl().clip();if(this.activePanel.beforeSlide){this.activePanel.beforeSlide();}}}},afterSlide:function(){if(Ext.isGecko){this.bodyEl.unclip();if(this.tabs)this.tabs.bodyEl.unclip();if(this.activePanel){this.activePanel.getEl().unclip();if(this.activePanel.afterSlide){this.activePanel.afterSlide();}}}},initAutoHide:function(){if(this.autoHide!==false){if(!this.autoHideHd){var st=new Ext.util.DelayedTask(this.slideIn,this);this.autoHideHd={"mouseout":function(e){if(!e.within(this.el,true)){st.delay(500);}},"mouseover":function(e){st.cancel();},scope:this};} -this.el.on(this.autoHideHd);}},clearAutoHide:function(){if(this.autoHide!==false){this.el.un("mouseout",this.autoHideHd.mouseout);this.el.un("mouseover",this.autoHideHd.mouseover);}},clearMonitor:function(){Ext.get(document).un("click",this.slideInIf,this);},slideOut:function(){if(this.isSlid||this.el.hasActiveFx()){return;} -this.isSlid=true;if(this.collapseBtn){this.collapseBtn.hide();} -this.closeBtnState=this.closeBtn.getStyle('display');this.closeBtn.hide();if(this.stickBtn){this.stickBtn.show();} -this.el.show();this.el.alignTo(this.collapsedEl,this.getCollapseAnchor());this.beforeSlide();this.el.setStyle("z-index",10001);this.el.slideIn(this.getSlideAnchor(),{callback:function(){this.afterSlide();this.initAutoHide();Ext.get(document).on("click",this.slideInIf,this);this.fireEvent("slideshow",this);},scope:this,block:true});},afterSlideIn:function(){this.clearAutoHide();this.isSlid=false;this.clearMonitor();this.el.setStyle("z-index","");if(this.collapseBtn){this.collapseBtn.show();} -this.closeBtn.setStyle('display',this.closeBtnState);if(this.stickBtn){this.stickBtn.hide();} -this.fireEvent("slidehide",this);},slideIn:function(cb){if(!this.isSlid||this.el.hasActiveFx()){Ext.callback(cb);return;} -this.isSlid=false;this.beforeSlide();this.el.slideOut(this.getSlideAnchor(),{callback:function(){this.el.setLeftTop(-10000,-10000);this.afterSlide();this.afterSlideIn();Ext.callback(cb);},scope:this,block:true});},slideInIf:function(e){if(!e.within(this.el)){this.slideIn();}},animateCollapse:function(){this.beforeSlide();this.el.setStyle("z-index",20000);var anchor=this.getSlideAnchor();this.el.slideOut(anchor,{callback:function(){this.el.setStyle("z-index","");this.collapsedEl.slideIn(anchor,{duration:.3});this.afterSlide();this.el.setLocation(-10000,-10000);this.el.hide();this.fireEvent("collapsed",this);},scope:this,block:true});},animateExpand:function(){this.beforeSlide();this.el.alignTo(this.collapsedEl,this.getCollapseAnchor(),this.getExpandAdj());this.el.setStyle("z-index",20000);this.collapsedEl.hide({duration:.1});this.el.slideIn(this.getSlideAnchor(),{callback:function(){this.el.setStyle("z-index","");this.afterSlide();if(this.split){this.split.el.show();} -this.fireEvent("invalidated",this);this.fireEvent("expanded",this);},scope:this,block:true});},anchors:{"west":"left","east":"right","north":"top","south":"bottom"},sanchors:{"west":"l","east":"r","north":"t","south":"b"},canchors:{"west":"tl-tr","east":"tr-tl","north":"tl-bl","south":"bl-tl"},getAnchor:function(){return this.anchors[this.position];},getCollapseAnchor:function(){return this.canchors[this.position];},getSlideAnchor:function(){return this.sanchors[this.position];},getAlignAdj:function(){var cm=this.cmargins;switch(this.position){case"west":return[0,0];break;case"east":return[0,0];break;case"north":return[0,0];break;case"south":return[0,0];break;}},getExpandAdj:function(){var c=this.collapsedEl,cm=this.cmargins;switch(this.position){case"west":return[-(cm.right+c.getWidth()+cm.left),0];break;case"east":return[cm.right+c.getWidth()+cm.left,0];break;case"north":return[0,-(cm.top+cm.bottom+c.getHeight())];break;case"south":return[0,cm.top+cm.bottom+c.getHeight()];break;}}}); - -Ext.CenterLayoutRegion=function(mgr,config){Ext.CenterLayoutRegion.superclass.constructor.call(this,mgr,config,"center");this.visible=true;this.minWidth=config.minWidth||20;this.minHeight=config.minHeight||20;};Ext.extend(Ext.CenterLayoutRegion,Ext.LayoutRegion,{hide:function(){},show:function(){},getMinWidth:function(){return this.minWidth;},getMinHeight:function(){return this.minHeight;}});Ext.NorthLayoutRegion=function(mgr,config){Ext.NorthLayoutRegion.superclass.constructor.call(this,mgr,config,"north","n-resize");if(this.split){this.split.placement=Ext.SplitBar.TOP;this.split.orientation=Ext.SplitBar.VERTICAL;this.split.el.addClass("x-layout-split-v");} -var size=config.initialSize||config.height;if(typeof size!="undefined"){this.el.setHeight(size);}};Ext.extend(Ext.NorthLayoutRegion,Ext.SplitLayoutRegion,{orientation:Ext.SplitBar.VERTICAL,getBox:function(){if(this.collapsed){return this.collapsedEl.getBox();} -var box=this.el.getBox();if(this.split){box.height+=this.split.el.getHeight();} -return box;},updateBox:function(box){if(this.split&&!this.collapsed){box.height-=this.split.el.getHeight();this.split.el.setLeft(box.x);this.split.el.setTop(box.y+box.height);this.split.el.setWidth(box.width);} -if(this.collapsed){this.updateBody(box.width,null);} -Ext.NorthLayoutRegion.superclass.updateBox.call(this,box);}});Ext.SouthLayoutRegion=function(mgr,config){Ext.SouthLayoutRegion.superclass.constructor.call(this,mgr,config,"south","s-resize");if(this.split){this.split.placement=Ext.SplitBar.BOTTOM;this.split.orientation=Ext.SplitBar.VERTICAL;this.split.el.addClass("x-layout-split-v");} -var size=config.initialSize||config.height;if(typeof size!="undefined"){this.el.setHeight(size);}};Ext.extend(Ext.SouthLayoutRegion,Ext.SplitLayoutRegion,{orientation:Ext.SplitBar.VERTICAL,getBox:function(){if(this.collapsed){return this.collapsedEl.getBox();} -var box=this.el.getBox();if(this.split){var sh=this.split.el.getHeight();box.height+=sh;box.y-=sh;} -return box;},updateBox:function(box){if(this.split&&!this.collapsed){var sh=this.split.el.getHeight();box.height-=sh;box.y+=sh;this.split.el.setLeft(box.x);this.split.el.setTop(box.y-sh);this.split.el.setWidth(box.width);} -if(this.collapsed){this.updateBody(box.width,null);} -Ext.SouthLayoutRegion.superclass.updateBox.call(this,box);}});Ext.EastLayoutRegion=function(mgr,config){Ext.EastLayoutRegion.superclass.constructor.call(this,mgr,config,"east","e-resize");if(this.split){this.split.placement=Ext.SplitBar.RIGHT;this.split.orientation=Ext.SplitBar.HORIZONTAL;this.split.el.addClass("x-layout-split-h");} -var size=config.initialSize||config.width;if(typeof size!="undefined"){this.el.setWidth(size);}};Ext.extend(Ext.EastLayoutRegion,Ext.SplitLayoutRegion,{orientation:Ext.SplitBar.HORIZONTAL,getBox:function(){if(this.collapsed){return this.collapsedEl.getBox();} -var box=this.el.getBox();if(this.split){var sw=this.split.el.getWidth();box.width+=sw;box.x-=sw;} -return box;},updateBox:function(box){if(this.split&&!this.collapsed){var sw=this.split.el.getWidth();box.width-=sw;this.split.el.setLeft(box.x);this.split.el.setTop(box.y);this.split.el.setHeight(box.height);box.x+=sw;} -if(this.collapsed){this.updateBody(null,box.height);} -Ext.EastLayoutRegion.superclass.updateBox.call(this,box);}});Ext.WestLayoutRegion=function(mgr,config){Ext.WestLayoutRegion.superclass.constructor.call(this,mgr,config,"west","w-resize");if(this.split){this.split.placement=Ext.SplitBar.LEFT;this.split.orientation=Ext.SplitBar.HORIZONTAL;this.split.el.addClass("x-layout-split-h");} -var size=config.initialSize||config.width;if(typeof size!="undefined"){this.el.setWidth(size);}};Ext.extend(Ext.WestLayoutRegion,Ext.SplitLayoutRegion,{orientation:Ext.SplitBar.HORIZONTAL,getBox:function(){if(this.collapsed){return this.collapsedEl.getBox();} -var box=this.el.getBox();if(this.split){box.width+=this.split.el.getWidth();} -return box;},updateBox:function(box){if(this.split&&!this.collapsed){var sw=this.split.el.getWidth();box.width-=sw;this.split.el.setLeft(box.x+box.width);this.split.el.setTop(box.y);this.split.el.setHeight(box.height);} -if(this.collapsed){this.updateBody(null,box.height);} -Ext.WestLayoutRegion.superclass.updateBox.call(this,box);}}); - -Ext.LayoutStateManager=function(layout){this.state={north:{},south:{},east:{},west:{}};};Ext.LayoutStateManager.prototype={init:function(layout,provider){this.provider=provider;var state=provider.get(layout.id+"-layout-state");if(state){var wasUpdating=layout.isUpdating();if(!wasUpdating){layout.beginUpdate();} -for(var key in state){if(typeof state[key]!="function"){var rstate=state[key];var r=layout.getRegion(key);if(r&&rstate){if(rstate.size){r.resizeTo(rstate.size);} -if(rstate.collapsed==true){r.collapse(true);}else{r.expand(null,true);}}}} -if(!wasUpdating){layout.endUpdate();} -this.state=state;} -this.layout=layout;layout.on("regionresized",this.onRegionResized,this);layout.on("regioncollapsed",this.onRegionCollapsed,this);layout.on("regionexpanded",this.onRegionExpanded,this);},storeState:function(){this.provider.set(this.layout.id+"-layout-state",this.state);},onRegionResized:function(region,newSize){this.state[region.getPosition()].size=newSize;this.storeState();},onRegionCollapsed:function(region){this.state[region.getPosition()].collapsed=true;this.storeState();},onRegionExpanded:function(region){this.state[region.getPosition()].collapsed=false;this.storeState();}}; - -Ext.ContentPanel=function(el,config,content){if(el.autoCreate){config=el;el=Ext.id();} -this.el=Ext.get(el);if(!this.el&&config&&config.autoCreate){if(typeof config.autoCreate=="object"){if(!config.autoCreate.id){config.autoCreate.id=config.id||el;} -this.el=Ext.DomHelper.append(document.body,config.autoCreate,true);}else{this.el=Ext.DomHelper.append(document.body,{tag:"div",cls:"x-layout-inactive-content",id:config.id||el},true);}} -this.closable=false;this.loaded=false;this.active=false;if(typeof config=="string"){this.title=config;}else{Ext.apply(this,config);} -if(this.resizeEl){this.resizeEl=Ext.get(this.resizeEl,true);}else{this.resizeEl=this.el;} -this.addEvents({"activate":true,"deactivate":true,"resize":true});if(this.autoScroll){this.resizeEl.setStyle("overflow","auto");} -content=content||this.content;if(content){this.setContent(content);} -if(config&&config.url){this.setUrl(this.url,this.params,this.loadOnce);} -Ext.ContentPanel.superclass.constructor.call(this);};Ext.extend(Ext.ContentPanel,Ext.util.Observable,{tabTip:'',setRegion:function(region){this.region=region;if(region){this.el.replaceClass("x-layout-inactive-content","x-layout-active-content");}else{this.el.replaceClass("x-layout-active-content","x-layout-inactive-content");}},getToolbar:function(){return this.toolbar;},setActiveState:function(active){this.active=active;if(!active){this.fireEvent("deactivate",this);}else{this.fireEvent("activate",this);}},setContent:function(content,loadScripts){this.el.update(content,loadScripts);},ignoreResize:function(w,h){if(this.lastSize&&this.lastSize.width==w&&this.lastSize.height==h){return true;}else{this.lastSize={width:w,height:h};return false;}},getUpdateManager:function(){return this.el.getUpdateManager();},load:function(){var um=this.el.getUpdateManager();um.update.apply(um,arguments);return this;},setUrl:function(url,params,loadOnce){if(this.refreshDelegate){this.removeListener("activate",this.refreshDelegate);} -this.refreshDelegate=this._handleRefresh.createDelegate(this,[url,params,loadOnce]);this.on("activate",this.refreshDelegate);return this.el.getUpdateManager();},_handleRefresh:function(url,params,loadOnce){if(!loadOnce||!this.loaded){var updater=this.el.getUpdateManager();updater.update(url,params,this._setLoaded.createDelegate(this));}},_setLoaded:function(){this.loaded=true;},getId:function(){return this.el.id;},getEl:function(){return this.el;},adjustForComponents:function(width,height){if(this.resizeEl!=this.el){width-=this.el.getFrameWidth('lr');height-=this.el.getFrameWidth('tb');} -if(this.toolbar){var te=this.toolbar.getEl();height-=te.getHeight();te.setWidth(width);} -if(this.adjustments){width+=this.adjustments[0];height+=this.adjustments[1];} -return{"width":width,"height":height};},setSize:function(width,height){if(this.fitToFrame&&!this.ignoreResize(width,height)){if(this.fitContainer&&this.resizeEl!=this.el){this.el.setSize(width,height);} -var size=this.adjustForComponents(width,height);this.resizeEl.setSize(this.autoWidth?"auto":size.width,this.autoHeight?"auto":size.height);this.fireEvent('resize',this,size.width,size.height);}},getTitle:function(){return this.title;},setTitle:function(title){this.title=title;if(this.region){this.region.updatePanelTitle(this,title);}},isClosable:function(){return this.closable;},beforeSlide:function(){this.el.clip();this.resizeEl.clip();},afterSlide:function(){this.el.unclip();this.resizeEl.unclip();},refresh:function(){if(this.refreshDelegate){this.loaded=false;this.refreshDelegate();}},destroy:function(){this.el.removeAllListeners();var tempEl=document.createElement("span");tempEl.appendChild(this.el.dom);tempEl.innerHTML="";this.el.remove();this.el=null;}});Ext.GridPanel=function(grid,config){this.wrapper=Ext.DomHelper.append(document.body,{tag:"div",cls:"x-layout-grid-wrapper x-layout-inactive-content"},true);this.wrapper.dom.appendChild(grid.getGridEl().dom);Ext.GridPanel.superclass.constructor.call(this,this.wrapper,config);if(this.toolbar){this.toolbar.el.insertBefore(this.wrapper.dom.firstChild);} -grid.monitorWindowResize=false;grid.autoHeight=false;grid.autoWidth=false;this.grid=grid;this.grid.getGridEl().replaceClass("x-layout-inactive-content","x-layout-component-panel");};Ext.extend(Ext.GridPanel,Ext.ContentPanel,{getId:function(){return this.grid.id;},getGrid:function(){return this.grid;},setSize:function(width,height){if(!this.ignoreResize(width,height)){var grid=this.grid;var size=this.adjustForComponents(width,height);grid.getGridEl().setSize(size.width,size.height);grid.autoSize();}},beforeSlide:function(){this.grid.getView().scroller.clip();},afterSlide:function(){this.grid.getView().scroller.unclip();},destroy:function(){this.grid.destroy();delete this.grid;Ext.GridPanel.superclass.destroy.call(this);}});Ext.NestedLayoutPanel=function(layout,config){Ext.NestedLayoutPanel.superclass.constructor.call(this,layout.getEl(),config);layout.monitorWindowResize=false;this.layout=layout;this.layout.getEl().addClass("x-layout-nested-layout");};Ext.extend(Ext.NestedLayoutPanel,Ext.ContentPanel,{setSize:function(width,height){if(!this.ignoreResize(width,height)){var size=this.adjustForComponents(width,height);var el=this.layout.getEl();el.setSize(size.width,size.height);var touch=el.dom.offsetWidth;this.layout.layout();if(Ext.isIE&&!this.initialized){this.initialized=true;this.layout.layout();}}},getLayout:function(){return this.layout;}});Ext.ScrollPanel=function(el,config,content){config=config||{};config.fitToFrame=true;Ext.ScrollPanel.superclass.constructor.call(this,el,config,content);this.el.dom.style.overflow="hidden";var wrap=this.el.wrap({cls:"x-scroller x-layout-inactive-content"});this.el.removeClass("x-layout-inactive-content");this.el.on("mousewheel",this.onWheel,this);var up=wrap.createChild({cls:"x-scroller-up",html:" "},this.el.dom);var down=wrap.createChild({cls:"x-scroller-down",html:" "});up.unselectable();down.unselectable();up.on("click",this.scrollUp,this);down.on("click",this.scrollDown,this);up.addClassOnOver("x-scroller-btn-over");down.addClassOnOver("x-scroller-btn-over");up.addClassOnClick("x-scroller-btn-click");down.addClassOnClick("x-scroller-btn-click");this.adjustments=[0,-(up.getHeight()+down.getHeight())];this.resizeEl=this.el;this.el=wrap;this.up=up;this.down=down;};Ext.extend(Ext.ScrollPanel,Ext.ContentPanel,{increment:100,wheelIncrement:5,scrollUp:function(){this.resizeEl.scroll("up",this.increment,{callback:this.afterScroll,scope:this});},scrollDown:function(){this.resizeEl.scroll("down",this.increment,{callback:this.afterScroll,scope:this});},afterScroll:function(){var el=this.resizeEl;var t=el.dom.scrollTop,h=el.dom.scrollHeight,ch=el.dom.clientHeight;this.up[t==0?"addClass":"removeClass"]("x-scroller-btn-disabled");this.down[h-t<=ch?"addClass":"removeClass"]("x-scroller-btn-disabled");},setSize:function(){Ext.ScrollPanel.superclass.setSize.apply(this,arguments);this.afterScroll();},onWheel:function(e){var d=e.getWheelDelta();this.resizeEl.dom.scrollTop-=(d*this.wheelIncrement);this.afterScroll();e.stopEvent();},setContent:function(content,loadScripts){this.resizeEl.update(content,loadScripts);}}); - -Ext.ReaderLayout=function(config,renderTo){var c=config||{size:{}};Ext.ReaderLayout.superclass.constructor.call(this,renderTo||document.body,{north:c.north!==false?Ext.apply({split:false,initialSize:32,titlebar:false},c.north):false,west:c.west!==false?Ext.apply({split:true,initialSize:200,minSize:175,maxSize:400,titlebar:true,collapsible:true,animate:true,margins:{left:5,right:0,bottom:5,top:5},cmargins:{left:5,right:5,bottom:5,top:5}},c.west):false,east:c.east!==false?Ext.apply({split:true,initialSize:200,minSize:175,maxSize:400,titlebar:true,collapsible:true,animate:true,margins:{left:0,right:5,bottom:5,top:5},cmargins:{left:5,right:5,bottom:5,top:5}},c.east):false,center:Ext.apply({tabPosition:'top',autoScroll:false,closeOnTab:true,titlebar:false,margins:{left:c.west!==false?0:5,right:c.east!==false?0:5,bottom:5,top:2}},c.center)});this.el.addClass('x-reader');this.beginUpdate();var inner=new Ext.BorderLayout(Ext.get(document.body).createChild(),{south:c.preview!==false?Ext.apply({split:true,initialSize:200,minSize:100,autoScroll:true,collapsible:true,titlebar:true,cmargins:{top:5,left:0,right:0,bottom:0}},c.preview):false,center:Ext.apply({autoScroll:false,titlebar:false,minHeight:200},c.listView)});this.add('center',new Ext.NestedLayoutPanel(inner,Ext.apply({title:c.mainTitle||'',tabTip:''},c.innerPanelCfg)));this.endUpdate();this.regions.preview=inner.getRegion('south');this.regions.listView=inner.getRegion('center');};Ext.extend(Ext.ReaderLayout,Ext.BorderLayout); - -Ext.grid.Grid=function(container,config){this.container=Ext.get(container);this.container.update("");this.container.setStyle("overflow","hidden");this.container.addClass('x-grid-container');this.id=this.container.id;Ext.apply(this,config);if(this.ds){this.dataSource=this.ds;delete this.ds;} -if(this.cm){this.colModel=this.cm;delete this.cm;} -if(this.sm){this.selModel=this.sm;delete this.sm;} -if(this.width){this.container.setWidth(this.width);} -if(this.height){this.container.setHeight(this.height);} -this.addEvents({"click":true,"dblclick":true,"contextmenu":true,"mousedown":true,"mouseup":true,"mouseover":true,"mouseout":true,"keypress":true,"keydown":true,"cellclick":true,"celldblclick":true,"rowclick":true,"rowdblclick":true,"headerclick":true,"headerdblclick":true,"rowcontextmenu":true,"cellcontextmenu":true,"headercontextmenu":true,"bodyscroll":true,"columnresize":true,"columnmove":true,"startdrag":true,"enddrag":true,"dragdrop":true,"dragover":true,"dragenter":true,"dragout":true,render:true});Ext.grid.Grid.superclass.constructor.call(this);};Ext.extend(Ext.grid.Grid,Ext.util.Observable,{minColumnWidth:25,autoSizeColumns:false,autoSizeHeaders:true,monitorWindowResize:true,maxRowsToMeasure:0,trackMouseOver:true,enableDragDrop:false,enableColumnMove:true,enableColumnHide:true,enableRowHeightSync:false,stripeRows:true,autoHeight:false,autoExpandColumn:false,autoExpandMin:50,autoExpandMax:1000,view:null,loadMask:false,rendered:false,render:function(){var c=this.container;if((!c.dom.offsetHeight||c.dom.offsetHeight<20)||c.getStyle("height")=="auto"){this.autoHeight=true;} -var view=this.getView();view.init(this);c.on("click",this.onClick,this);c.on("dblclick",this.onDblClick,this);c.on("contextmenu",this.onContextMenu,this);c.on("keydown",this.onKeyDown,this);this.relayEvents(c,["mousedown","mouseup","mouseover","mouseout","keypress"]);this.getSelectionModel().init(this);view.render();if(this.loadMask){this.loadMask=new Ext.LoadMask(this.container,Ext.apply({store:this.dataSource},this.loadMask));} -this.rendered=true;this.fireEvent('render',this);return this;},reconfigure:function(dataSource,colModel){if(this.loadMask){this.loadMask.destroy();this.loadMask=new Ext.LoadMask(this.container,Ext.apply({store:dataSource},this.loadMask));} -this.view.bind(dataSource,colModel);this.dataSource=dataSource;this.colModel=colModel;this.view.refresh(true);},onKeyDown:function(e){this.fireEvent("keydown",e);},destroy:function(removeEl,keepListeners){if(this.loadMask){this.loadMask.destroy();} -var c=this.container;c.removeAllListeners();this.view.destroy();this.colModel.purgeListeners();if(!keepListeners){this.purgeListeners();} -c.update("");if(removeEl===true){c.remove();}},processEvent:function(name,e){this.fireEvent(name,e);var t=e.getTarget();var v=this.view;var header=v.findHeaderIndex(t);if(header!==false){this.fireEvent("header"+name,this,header,e);}else{var row=v.findRowIndex(t);var cell=v.findCellIndex(t);if(row!==false){this.fireEvent("row"+name,this,row,e);if(cell!==false){this.fireEvent("cell"+name,this,row,cell,e);}}}},onClick:function(e){this.processEvent("click",e);},onContextMenu:function(e,t){this.processEvent("contextmenu",e);},onDblClick:function(e){this.processEvent("dblclick",e);},walkCells:function(row,col,step,fn,scope){var cm=this.colModel,clen=cm.getColumnCount();var ds=this.dataSource,rlen=ds.getCount(),first=true;if(step<0){if(col<0){row--;first=false;} -while(row>=0){if(!first){col=clen-1;} -first=false;while(col>=0){if(fn.call(scope||this,row,col,cm)===true){return[row,col];} -col--;} -row--;}}else{if(col>=clen){row++;first=false;} -while(row<rlen){if(!first){col=0;} -first=false;while(col<clen){if(fn.call(scope||this,row,col,cm)===true){return[row,col];} -col++;} -row++;}} -return null;},getSelections:function(){return this.selModel.getSelections();},autoSize:function(){if(this.rendered){this.view.layout();if(this.view.adjustForScroll){this.view.adjustForScroll();}}},getGridEl:function(){return this.container;},stopEditing:function(){},getSelectionModel:function(){if(!this.selModel){this.selModel=new Ext.grid.RowSelectionModel();} -return this.selModel;},getDataSource:function(){return this.dataSource;},getColumnModel:function(){return this.colModel;},getView:function(){if(!this.view){this.view=new Ext.grid.GridView(this.viewConfig);} -return this.view;},getDragDropText:function(){var count=this.selModel.getCount();return String.format(this.ddText,count,count==1?'':'s');}});Ext.grid.Grid.prototype.ddText="{0} selected row{1}"; - -Ext.grid.AbstractGridView=function(){this.grid=null;this.events={"beforerowremoved":true,"beforerowsinserted":true,"beforerefresh":true,"rowremoved":true,"rowsinserted":true,"rowupdated":true,"refresh":true};Ext.grid.AbstractGridView.superclass.constructor.call(this);};Ext.extend(Ext.grid.AbstractGridView,Ext.util.Observable,{rowClass:"x-grid-row",cellClass:"x-grid-cell",tdClass:"x-grid-td",hdClass:"x-grid-hd",splitClass:"x-grid-hd-split",init:function(grid){this.grid=grid;var cid=this.grid.getGridEl().id;this.colSelector="#"+cid+" ."+this.cellClass+"-";this.tdSelector="#"+cid+" ."+this.tdClass+"-";this.hdSelector="#"+cid+" ."+this.hdClass+"-";this.splitSelector="#"+cid+" ."+this.splitClass+"-";},getColumnRenderers:function(){var renderers=[];var cm=this.grid.colModel;var colCount=cm.getColumnCount();for(var i=0;i<colCount;i++){renderers[i]=cm.getRenderer(i);} -return renderers;},getColumnIds:function(){var ids=[];var cm=this.grid.colModel;var colCount=cm.getColumnCount();for(var i=0;i<colCount;i++){ids[i]=cm.getColumnId(i);} -return ids;},getDataIndexes:function(){if(!this.indexMap){this.indexMap=this.buildIndexMap();} -return this.indexMap.colToData;},getColumnIndexByDataIndex:function(dataIndex){if(!this.indexMap){this.indexMap=this.buildIndexMap();} -return this.indexMap.dataToCol[dataIndex];},setCSSStyle:function(colIndex,name,value){var selector="#"+this.grid.id+" .x-grid-col-"+colIndex;Ext.util.CSS.updateRule(selector,name,value);},generateRules:function(cm){var ruleBuf=[];for(var i=0,len=cm.getColumnCount();i<len;i++){var cid=cm.getColumnId(i);ruleBuf.push(this.colSelector,cid," {\n",cm.config[i].css,"}\n",this.tdSelector,cid," {\n}\n",this.hdSelector,cid," {\n}\n",this.splitSelector,cid," {\n}\n");} -return Ext.util.CSS.createStyleSheet(ruleBuf.join(""));}}); - -Ext.grid.GridView=function(config){Ext.grid.GridView.superclass.constructor.call(this);this.el=null;Ext.apply(this,config);};Ext.extend(Ext.grid.GridView,Ext.grid.AbstractGridView,{rowClass:"x-grid-row",cellClass:"x-grid-col",tdClass:"x-grid-td",hdClass:"x-grid-hd",splitClass:"x-grid-split",sortClasses:["sort-asc","sort-desc"],enableMoveAnim:false,hlColor:"C3DAF9",dh:Ext.DomHelper,fly:Ext.Element.fly,css:Ext.util.CSS,borderWidth:1,splitOffset:3,scrollIncrement:22,cellRE:/(?:.*?)x-grid-(?:hd|cell|csplit)-(?:[\d]+)-([\d]+)(?:.*?)/,findRE:/\s?(?:x-grid-hd|x-grid-col|x-grid-csplit)\s/,bind:function(ds,cm){if(this.ds){this.ds.un("load",this.onLoad,this);this.ds.un("datachanged",this.onDataChange);this.ds.un("add",this.onAdd);this.ds.un("remove",this.onRemove);this.ds.un("update",this.onUpdate);this.ds.un("clear",this.onClear);} -if(ds){ds.on("load",this.onLoad,this);ds.on("datachanged",this.onDataChange,this);ds.on("add",this.onAdd,this);ds.on("remove",this.onRemove,this);ds.on("update",this.onUpdate,this);ds.on("clear",this.onClear,this);} -this.ds=ds;if(this.cm){this.cm.un("widthchange",this.onColWidthChange,this);this.cm.un("headerchange",this.onHeaderChange,this);this.cm.un("hiddenchange",this.onHiddenChange,this);this.cm.un("columnmoved",this.onColumnMove,this);this.cm.un("columnlockchange",this.onColumnLock,this);} -if(cm){this.generateRules(cm);cm.on("widthchange",this.onColWidthChange,this);cm.on("headerchange",this.onHeaderChange,this);cm.on("hiddenchange",this.onHiddenChange,this);cm.on("columnmoved",this.onColumnMove,this);cm.on("columnlockchange",this.onColumnLock,this);} -this.cm=cm;},init:function(grid){Ext.grid.GridView.superclass.init.call(this,grid);this.bind(grid.dataSource,grid.colModel);grid.on("headerclick",this.handleHeaderClick,this);if(grid.trackMouseOver){grid.on("mouseover",this.onRowOver,this);grid.on("mouseout",this.onRowOut,this);} -grid.cancelTextSelection=function(){};this.gridId=grid.id;var tpls=this.templates||{};if(!tpls.master){tpls.master=new Ext.Template('<div class="x-grid" hidefocus="true">','<div class="x-grid-topbar"></div>','<div class="x-grid-scroller"><div></div></div>','<div class="x-grid-locked">','<div class="x-grid-header">{lockedHeader}</div>','<div class="x-grid-body">{lockedBody}</div>',"</div>",'<div class="x-grid-viewport">','<div class="x-grid-header">{header}</div>','<div class="x-grid-body">{body}</div>',"</div>",'<div class="x-grid-bottombar"></div>','<a href="#" class="x-grid-focus" tabIndex="-1"></a>','<div class="x-grid-resize-proxy"> </div>',"</div>");tpls.master.disableformats=true;} -if(!tpls.header){tpls.header=new Ext.Template('<table border="0" cellspacing="0" cellpadding="0">','<tbody><tr class="x-grid-hd-row">{cells}</tr></tbody>',"</table>{splits}");tpls.header.disableformats=true;} -tpls.header.compile();if(!tpls.hcell){tpls.hcell=new Ext.Template('<td class="x-grid-hd x-grid-td-{id} {cellId}"><div title="{title}" class="x-grid-hd-inner x-grid-hd-{id}">','<div class="x-grid-hd-text" unselectable="on">{value}<img class="x-grid-sort-icon" src="',Ext.BLANK_IMAGE_URL,'" /></div>',"</div></td>");tpls.hcell.disableFormats=true;} -tpls.hcell.compile();if(!tpls.hsplit){tpls.hsplit=new Ext.Template('<div class="x-grid-split {splitId} x-grid-split-{id}" style="{style}" unselectable="on"> </div>');tpls.hsplit.disableFormats=true;} -tpls.hsplit.compile();if(!tpls.body){tpls.body=new Ext.Template('<table border="0" cellspacing="0" cellpadding="0">',"<tbody>{rows}</tbody>","</table>");tpls.body.disableFormats=true;} -tpls.body.compile();if(!tpls.row){tpls.row=new Ext.Template('<tr class="x-grid-row {alt}">{cells}</tr>');tpls.row.disableFormats=true;} -tpls.row.compile();if(!tpls.cell){tpls.cell=new Ext.Template('<td class="x-grid-col x-grid-td-{id} {cellId} {css}" tabIndex="0">','<div class="x-grid-col-{id} x-grid-cell-inner"><div class="x-grid-cell-text" unselectable="on" {attr}>{value}</div></div>',"</td>");tpls.cell.disableFormats=true;} -tpls.cell.compile();this.templates=tpls;},onColWidthChange:function(){this.updateColumns.apply(this,arguments);},onHeaderChange:function(){this.updateHeaders.apply(this,arguments);},onHiddenChange:function(){this.handleHiddenChange.apply(this,arguments);},onColumnMove:function(){this.handleColumnMove.apply(this,arguments);},onColumnLock:function(){this.handleLockChange.apply(this,arguments);},onDataChange:function(){this.refresh();this.updateHeaderSortState();},onClear:function(){this.refresh();},onUpdate:function(ds,record){this.refreshRow(record);},refreshRow:function(record){var ds=this.ds,index;if(typeof record=='number'){index=record;record=ds.getAt(index);}else{index=ds.indexOf(record);} -var rows=this.getRowComposite(index);var cls=[];this.insertRows(ds,index,index,true);this.onRemove(ds,record,index+1,true);this.syncRowHeights(index,index);this.layout();this.fireEvent("rowupdated",this,index,record);},onAdd:function(ds,records,index){this.insertRows(ds,index,index+(records.length-1));},onRemove:function(ds,record,index,isUpdate){if(isUpdate!==true){this.fireEvent("beforerowremoved",this,index,record);} -var bt=this.getBodyTable(),lt=this.getLockedTable();if(bt.rows[index]){bt.firstChild.removeChild(bt.rows[index]);} -if(lt.rows[index]){lt.firstChild.removeChild(lt.rows[index]);} -if(isUpdate!==true){this.stripeRows(index);this.syncRowHeights(index,index);this.layout();this.fireEvent("rowremoved",this,index,record);}},onLoad:function(){this.scrollToTop();},scrollToTop:function(){if(this.scroller){this.scroller.dom.scrollTop=0;this.syncScroll();}},getHeaderPanel:function(doShow){if(doShow){this.headerPanel.show();} -return this.headerPanel;},getFooterPanel:function(doShow){if(doShow){this.footerPanel.show();} -return this.footerPanel;},initElements:function(){var E=Ext.Element;var el=this.grid.getGridEl().dom.firstChild;var cs=el.childNodes;this.el=new E(el);this.headerPanel=new E(el.firstChild);this.headerPanel.enableDisplayMode("block");this.scroller=new E(cs[1]);this.scrollSizer=new E(this.scroller.dom.firstChild);this.lockedWrap=new E(cs[2]);this.lockedHd=new E(this.lockedWrap.dom.firstChild);this.lockedBody=new E(this.lockedWrap.dom.childNodes[1]);this.mainWrap=new E(cs[3]);this.mainHd=new E(this.mainWrap.dom.firstChild);this.mainBody=new E(this.mainWrap.dom.childNodes[1]);this.footerPanel=new E(cs[4]);this.footerPanel.enableDisplayMode("block");this.focusEl=new E(cs[5]);this.focusEl.swallowEvent("click",true);this.resizeProxy=new E(cs[6]);this.headerSelector=String.format('#{0} td.x-grid-hd, #{1} td.x-grid-hd',this.lockedHd.id,this.mainHd.id);this.splitterSelector=String.format('#{0} div.x-grid-split, #{1} div.x-grid-split',this.lockedHd.id,this.mainHd.id);},getHeaderCell:function(index){return Ext.DomQuery.select(this.headerSelector)[index];},getHeaderCellMeasure:function(index){return this.getHeaderCell(index).firstChild;},getHeaderCellText:function(index){return this.getHeaderCell(index).firstChild.firstChild;},getLockedTable:function(){return this.lockedBody.dom.firstChild;},getBodyTable:function(){return this.mainBody.dom.firstChild;},getLockedRow:function(index){return this.getLockedTable().rows[index];},getRow:function(index){return this.getBodyTable().rows[index];},getRowComposite:function(index){if(!this.rowEl){this.rowEl=new Ext.CompositeElementLite();} -var els=[],lrow,mrow;if(lrow=this.getLockedRow(index)){els.push(lrow);} -if(mrow=this.getRow(index)){els.push(mrow);} -this.rowEl.elements=els;return this.rowEl;},getCell:function(rowIndex,colIndex){var locked=this.cm.getLockedCount();var source;if(colIndex<locked){source=this.lockedBody.dom.firstChild;}else{source=this.mainBody.dom.firstChild;colIndex-=locked;} -return source.rows[rowIndex].childNodes[colIndex];},getCellText:function(rowIndex,colIndex){return this.getCell(rowIndex,colIndex).firstChild.firstChild;},getCellBox:function(cell){var b=this.fly(cell).getBox();if(Ext.isOpera){b.y=cell.offsetTop+this.mainBody.getY();} -return b;},getCellIndex:function(cell){var id=String(cell.className).match(this.cellRE);if(id){return parseInt(id[1],10);} -return 0;},findHeaderIndex:function(n){var r=Ext.fly(n).findParent("td."+this.hdClass,6);return r?this.getCellIndex(r):false;},findHeaderCell:function(n){var r=Ext.fly(n).findParent("td."+this.hdClass,6);return r?r:false;},findRowIndex:function(n){if(!n){return false;} -var r=Ext.fly(n).findParent("tr."+this.rowClass,6);return r?r.rowIndex:false;},findCellIndex:function(node){var stop=this.el.dom;while(node&&node!=stop){if(this.findRE.test(node.className)){return this.getCellIndex(node);} -node=node.parentNode;} -return false;},getColumnId:function(index){return this.cm.getColumnId(index);},getSplitters:function(){if(this.splitterSelector){return Ext.DomQuery.select(this.splitterSelector);}else{return null;}},getSplitter:function(index){return this.getSplitters()[index];},onRowOver:function(e,t){var row;if((row=this.findRowIndex(t))!==false){this.getRowComposite(row).addClass("x-grid-row-over");}},onRowOut:function(e,t){var row;if((row=this.findRowIndex(t))!==false&&row!==this.findRowIndex(e.getRelatedTarget())){this.getRowComposite(row).removeClass("x-grid-row-over");}},renderHeaders:function(){var cm=this.cm;var ct=this.templates.hcell,ht=this.templates.header,st=this.templates.hsplit;var cb=[],lb=[],sb=[],lsb=[],p={};for(var i=0,len=cm.getColumnCount();i<len;i++){p.cellId="x-grid-hd-0-"+i;p.splitId="x-grid-csplit-0-"+i;p.id=cm.getColumnId(i);p.title=cm.getColumnTooltip(i)||"";p.value=cm.getColumnHeader(i)||"";p.style=(this.grid.enableColumnResize===false||!cm.isResizable(i)||cm.isFixed(i))?'cursor:default':'';if(!cm.isLocked(i)){cb[cb.length]=ct.apply(p);sb[sb.length]=st.apply(p);}else{lb[lb.length]=ct.apply(p);lsb[lsb.length]=st.apply(p);}} -return[ht.apply({cells:lb.join(""),splits:lsb.join("")}),ht.apply({cells:cb.join(""),splits:sb.join("")})];},updateHeaders:function(){var html=this.renderHeaders();this.lockedHd.update(html[0]);this.mainHd.update(html[1]);},focusRow:function(row){var x=this.scroller.dom.scrollLeft;this.focusCell(row,0,false);this.scroller.dom.scrollLeft=x;},focusCell:function(row,col,hscroll){var el=this.ensureVisible(row,col,hscroll);this.focusEl.alignTo(el,"tl-tl");if(Ext.isGecko){this.focusEl.focus();}else{this.focusEl.focus.defer(1,this.focusEl);}},ensureVisible:function(row,col,hscroll){if(typeof row!="number"){row=row.rowIndex;} -if(row<0&&row>=this.ds.getCount()){return;} -col=(col!==undefined?col:0);var cm=this.grid.colModel;while(cm.isHidden(col)){col++;} -var el=this.getCell(row,col);if(!el){return;} -var c=this.scroller.dom;var ctop=parseInt(el.offsetTop,10);var cleft=parseInt(el.offsetLeft,10);var cbot=ctop+el.offsetHeight;var cright=cleft+el.offsetWidth;var ch=c.clientHeight-this.mainHd.dom.offsetHeight;var stop=parseInt(c.scrollTop,10);var sleft=parseInt(c.scrollLeft,10);var sbot=stop+ch;var sright=sleft+c.clientWidth;if(ctop<stop){c.scrollTop=ctop;}else if(cbot>sbot){c.scrollTop=cbot-ch;} -if(hscroll!==false){if(cleft<sleft){c.scrollLeft=cleft;}else if(cright>sright){c.scrollLeft=cright-c.clientWidth;}} -return el;},updateColumns:function(){this.grid.stopEditing();var cm=this.grid.colModel,colIds=this.getColumnIds();var pos=0;for(var i=0,len=cm.getColumnCount();i<len;i++){var w=cm.getColumnWidth(i);this.css.updateRule(this.colSelector+colIds[i],"width",(w-this.borderWidth)+"px");this.css.updateRule(this.hdSelector+colIds[i],"width",(w-this.borderWidth)+"px");} -this.updateSplitters();},generateRules:function(cm){var ruleBuf=[];for(var i=0,len=cm.getColumnCount();i<len;i++){var cid=cm.getColumnId(i);var align='';if(cm.config[i].align){align='text-align:'+cm.config[i].align+';';} -var hidden='';if(cm.isHidden(i)){hidden='display:none;';} -var width="width:"+(cm.getColumnWidth(i)-this.borderWidth)+"px;";ruleBuf.push(this.colSelector,cid," {\n",cm.config[i].css,align,width,"\n}\n",this.hdSelector,cid," {\n",align,width,"}\n",this.tdSelector,cid," {\n",hidden,"\n}\n",this.splitSelector,cid," {\n",hidden,"\n}\n");} -return Ext.util.CSS.createStyleSheet(ruleBuf.join(""));},updateSplitters:function(){var cm=this.cm,s=this.getSplitters();if(s){var pos=0,locked=true;for(var i=0,len=cm.getColumnCount();i<len;i++){if(cm.isHidden(i))continue;var w=cm.getColumnWidth(i);if(!cm.isLocked(i)&&locked){pos=0;locked=false;} -pos+=w;s[i].style.left=(pos-this.splitOffset)+"px";}}},handleHiddenChange:function(colModel,colIndex,hidden){if(hidden){this.hideColumn(colIndex);}else{this.unhideColumn(colIndex);}},hideColumn:function(colIndex){var cid=this.getColumnId(colIndex);this.css.updateRule(this.tdSelector+cid,"display","none");this.css.updateRule(this.splitSelector+cid,"display","none");if(Ext.isSafari){this.updateHeaders();} -this.updateSplitters();this.layout();},unhideColumn:function(colIndex){var cid=this.getColumnId(colIndex);this.css.updateRule(this.tdSelector+cid,"display","");this.css.updateRule(this.splitSelector+cid,"display","");if(Ext.isSafari){this.updateHeaders();} -this.updateSplitters();this.layout();},insertRows:function(dm,firstRow,lastRow,isUpdate){if(firstRow==0&&lastRow==dm.getCount()-1){this.refresh();}else{if(!isUpdate){this.fireEvent("beforerowsinserted",this,firstRow,lastRow);} -var s=this.getScrollState();var markup=this.renderRows(firstRow,lastRow);this.bufferRows(markup[0],this.getLockedTable(),firstRow);this.bufferRows(markup[1],this.getBodyTable(),firstRow);this.restoreScroll(s);if(!isUpdate){this.fireEvent("rowsinserted",this,firstRow,lastRow);this.syncRowHeights(firstRow,lastRow);this.stripeRows(firstRow);this.layout();}}},bufferRows:function(markup,target,index){var before=null,trows=target.rows,tbody=target.tBodies[0];if(index<trows.length){before=trows[index];} -var b=document.createElement("div");b.innerHTML="<table><tbody>"+markup+"</tbody></table>";var rows=b.firstChild.rows;for(var i=0,len=rows.length;i<len;i++){if(before){tbody.insertBefore(rows[0],before);}else{tbody.appendChild(rows[0]);}} -b.innerHTML="";b=null;},deleteRows:function(dm,firstRow,lastRow){if(dm.getRowCount()<1){this.fireEvent("beforerefresh",this);this.mainBody.update("");this.lockedBody.update("");this.fireEvent("refresh",this);}else{this.fireEvent("beforerowsdeleted",this,firstRow,lastRow);var bt=this.getBodyTable();var tbody=bt.firstChild;var rows=bt.rows;for(var rowIndex=firstRow;rowIndex<=lastRow;rowIndex++){tbody.removeChild(rows[firstRow]);} -this.stripeRows(firstRow);this.fireEvent("rowsdeleted",this,firstRow,lastRow);}},updateRows:function(dataSource,firstRow,lastRow){var s=this.getScrollState();this.refresh();this.restoreScroll(s);},handleSort:function(dataSource,sortColumnIndex,sortDir,noRefresh){if(!noRefresh){this.refresh();} -this.updateHeaderSortState();},getScrollState:function(){var sb=this.scroller.dom;return{left:sb.scrollLeft,top:sb.scrollTop};},stripeRows:function(startRow){if(!this.grid.stripeRows||this.ds.getCount()<1){return;} -startRow=startRow||0;var rows=this.getBodyTable().rows;var lrows=this.getLockedTable().rows;var cls=' x-grid-row-alt ';for(var i=startRow,len=rows.length;i<len;i++){var row=rows[i],lrow=lrows[i];var isAlt=((i+1)%2==0);var hasAlt=(' '+row.className+' ').indexOf(cls)!=-1;if(isAlt==hasAlt){continue;} -if(isAlt){row.className+=" x-grid-row-alt";}else{row.className=row.className.replace("x-grid-row-alt","");} -if(lrow){lrow.className=row.className;}}},restoreScroll:function(state){var sb=this.scroller.dom;sb.scrollLeft=state.left;sb.scrollTop=state.top;this.syncScroll();},syncScroll:function(){var sb=this.scroller.dom;var sh=this.mainHd.dom;var bs=this.mainBody.dom;var lv=this.lockedBody.dom;sh.scrollLeft=bs.scrollLeft=sb.scrollLeft;lv.scrollTop=bs.scrollTop=sb.scrollTop;},handleScroll:function(e){this.syncScroll();var sb=this.scroller.dom;this.grid.fireEvent("bodyscroll",sb.scrollLeft,sb.scrollTop);e.stopEvent();},handleWheel:function(e){var d=e.getWheelDelta();this.scroller.dom.scrollTop-=d*22;this.lockedBody.dom.scrollTop=this.mainBody.dom.scrollTop=this.scroller.dom.scrollTop;e.stopEvent();},renderRows:function(startRow,endRow){var g=this.grid,cm=g.colModel,ds=g.dataSource,stripe=g.stripeRows;var colCount=cm.getColumnCount();if(ds.getCount()<1){return["",""];} -var cs=[];for(var i=0;i<colCount;i++){var name=cm.getDataIndex(i);cs[i]={name:typeof name=='undefined'?ds.fields.get(i).name:name,renderer:cm.getRenderer(i),id:cm.getColumnId(i),locked:cm.isLocked(i)};} -startRow=startRow||0;endRow=typeof endRow=="undefined"?ds.getCount()-1:endRow;var rs=ds.getRange(startRow,endRow);return this.doRender(cs,rs,ds,startRow,colCount,stripe);},doRender:Ext.isGecko?function(cs,rs,ds,startRow,colCount,stripe){var ts=this.templates,ct=ts.cell,rt=ts.row;var buf="",lbuf="",cb,lcb,c,p={},rp={},r,rowIndex;for(var j=0,len=rs.length;j<len;j++){r=rs[j];cb="";lcb="";rowIndex=(j+startRow);for(var i=0;i<colCount;i++){c=cs[i];p.cellId="x-grid-cell-"+rowIndex+"-"+i;p.id=c.id;p.css=p.attr="";p.value=c.renderer(r.data[c.name],p,r,rowIndex,i,ds);if(p.value==undefined||p.value==="")p.value=" ";if(r.dirty&&typeof r.modified[c.name]!=='undefined'){p.css+=p.css?' x-grid-dirty-cell':'x-grid-dirty-cell';} -var markup=ct.apply(p);if(!c.locked){cb+=markup;}else{lcb+=markup;}} -var alt=[];if(stripe&&((rowIndex+1)%2==0)){alt[0]="x-grid-row-alt";} -if(r.dirty){alt[1]=" x-grid-dirty-row";} -rp.cells=lcb;if(this.getRowClass){alt[2]=this.getRowClass(r,rowIndex);} -rp.alt=alt.join(" ");lbuf+=rt.apply(rp);rp.cells=cb;buf+=rt.apply(rp);} -return[lbuf,buf];}:function(cs,rs,ds,startRow,colCount,stripe){var ts=this.templates,ct=ts.cell,rt=ts.row;var buf=[],lbuf=[],cb,lcb,c,p={},rp={},r,rowIndex;for(var j=0,len=rs.length;j<len;j++){r=rs[j];cb=[];lcb=[];rowIndex=(j+startRow);for(var i=0;i<colCount;i++){c=cs[i];p.cellId="x-grid-cell-"+rowIndex+"-"+i;p.id=c.id;p.css=p.attr="";p.value=c.renderer(r.data[c.name],p,r,rowIndex,i,ds);if(p.value==undefined||p.value==="")p.value=" ";if(r.dirty&&typeof r.modified[c.name]!=='undefined'){p.css+=p.css?' x-grid-dirty-cell':'x-grid-dirty-cell';} -var markup=ct.apply(p);if(!c.locked){cb[cb.length]=markup;}else{lcb[lcb.length]=markup;}} -var alt=[];if(stripe&&((rowIndex+1)%2==0)){alt[0]="x-grid-row-alt";} -if(r.dirty){alt[1]=" x-grid-dirty-row";} -rp.cells=lcb;if(this.getRowClass){alt[2]=this.getRowClass(r,rowIndex);} -rp.alt=alt.join(" ");rp.cells=lcb.join("");lbuf[lbuf.length]=rt.apply(rp);rp.cells=cb.join("");buf[buf.length]=rt.apply(rp);} -return[lbuf.join(""),buf.join("")];},renderBody:function(){var markup=this.renderRows();var bt=this.templates.body;return[bt.apply({rows:markup[0]}),bt.apply({rows:markup[1]})];},refresh:function(headersToo){this.fireEvent("beforerefresh",this);this.grid.stopEditing();var result=this.renderBody();this.lockedBody.update(result[0]);this.mainBody.update(result[1]);if(headersToo===true){this.updateHeaders();this.updateColumns();this.updateSplitters();this.updateHeaderSortState();} -this.syncRowHeights();this.layout();this.fireEvent("refresh",this);},handleColumnMove:function(cm,oldIndex,newIndex){this.indexMap=null;var s=this.getScrollState();this.refresh(true);this.restoreScroll(s);this.afterMove(newIndex);},afterMove:function(colIndex){if(this.enableMoveAnim&&Ext.enableFx){this.fly(this.getHeaderCell(colIndex).firstChild).highlight(this.hlColor);}},updateCell:function(dm,rowIndex,dataIndex){var colIndex=this.getColumnIndexByDataIndex(dataIndex);if(typeof colIndex=="undefined"){return;} -var cm=this.grid.colModel;var cell=this.getCell(rowIndex,colIndex);var cellText=this.getCellText(rowIndex,colIndex);var p={cellId:"x-grid-cell-"+rowIndex+"-"+colIndex,id:cm.getColumnId(colIndex),css:colIndex==cm.getColumnCount()-1?"x-grid-col-last":""};var renderer=cm.getRenderer(colIndex);var val=renderer(dm.getValueAt(rowIndex,dataIndex),p,rowIndex,colIndex,dm);if(typeof val=="undefined"||val==="")val=" ";cellText.innerHTML=val;cell.className=this.cellClass+" "+p.cellId+" "+p.css;this.syncRowHeights(rowIndex,rowIndex);},calcColumnWidth:function(colIndex,maxRowsToMeasure){var maxWidth=0;if(this.grid.autoSizeHeaders){var h=this.getHeaderCellMeasure(colIndex);maxWidth=Math.max(maxWidth,h.scrollWidth);} -var tb,index;if(this.cm.isLocked(colIndex)){tb=this.getLockedTable();index=colIndex;}else{tb=this.getBodyTable();index=colIndex-this.cm.getLockedCount();} -if(tb&&tb.rows){var rows=tb.rows;var stopIndex=Math.min(maxRowsToMeasure||rows.length,rows.length);for(var i=0;i<stopIndex;i++){var cell=rows[i].childNodes[index].firstChild;maxWidth=Math.max(maxWidth,cell.scrollWidth);}} -return maxWidth+5;},autoSizeColumn:function(colIndex,forceMinSize,suppressEvent){if(this.cm.isHidden(colIndex)){return;} -if(forceMinSize){var cid=this.cm.getColumnId(colIndex);this.css.updateRule(this.colSelector+cid,"width",this.grid.minColumnWidth+"px");if(this.grid.autoSizeHeaders){this.css.updateRule(this.hdSelector+cid,"width",this.grid.minColumnWidth+"px");}} -var newWidth=this.calcColumnWidth(colIndex);this.cm.setColumnWidth(colIndex,Math.max(this.grid.minColumnWidth,newWidth),suppressEvent);if(!suppressEvent){this.grid.fireEvent("columnresize",colIndex,newWidth);}},autoSizeColumns:function(){var cm=this.grid.colModel;var colCount=cm.getColumnCount();for(var i=0;i<colCount;i++){this.autoSizeColumn(i,true,true);} -if(cm.getTotalWidth()<this.scroller.dom.clientWidth){this.fitColumns();}else{this.updateColumns();this.layout();}},fitColumns:function(reserveScrollSpace){var cm=this.grid.colModel;var colCount=cm.getColumnCount();var cols=[];var width=0;var i,w;for(i=0;i<colCount;i++){if(!cm.isHidden(i)&&!cm.isFixed(i)){w=cm.getColumnWidth(i);cols.push(i);cols.push(w);width+=w;}} -var avail=Math.min(this.scroller.dom.clientWidth,this.el.getWidth());if(reserveScrollSpace){avail-=17;} -var frac=(avail-cm.getTotalWidth())/width;while(cols.length){w=cols.pop();i=cols.pop();cm.setColumnWidth(i,Math.floor(w+w*frac),true);} -this.updateColumns();this.layout();},onRowSelect:function(rowIndex){var row=this.getRowComposite(rowIndex);row.addClass("x-grid-row-selected");},onRowDeselect:function(rowIndex){var row=this.getRowComposite(rowIndex);row.removeClass("x-grid-row-selected");},onCellSelect:function(row,col){var cell=this.getCell(row,col);if(cell){Ext.fly(cell).addClass("x-grid-cell-selected");}},onCellDeselect:function(row,col){var cell=this.getCell(row,col);if(cell){Ext.fly(cell).removeClass("x-grid-cell-selected");}},updateHeaderSortState:function(){var state=this.ds.getSortState();if(!state){return;} -this.sortState=state;var sortColumn=this.cm.findColumnIndex(state.field);if(sortColumn!=-1){var sortDir=state.direction;var sc=this.sortClasses;var hds=this.el.select(this.headerSelector).removeClass(sc);hds.item(sortColumn).addClass(sc[sortDir=="DESC"?1:0]);}},handleHeaderClick:function(g,index){if(this.headersDisabled){return;} -var dm=g.dataSource,cm=g.colModel;if(!cm.isSortable(index)){return;} -g.stopEditing();dm.sort(cm.getDataIndex(index));},destroy:function(){if(this.colMenu){this.colMenu.removeAll();Ext.menu.MenuMgr.unregister(this.colMenu);this.colMenu.getEl().remove();delete this.colMenu;} -if(this.hmenu){this.hmenu.removeAll();Ext.menu.MenuMgr.unregister(this.hmenu);this.hmenu.getEl().remove();delete this.hmenu;} -if(this.grid.enableColumnMove){var dds=Ext.dd.DDM.ids['gridHeader'+this.grid.getGridEl().id];if(dds){for(var dd in dds){if(!dds[dd].config.isTarget&&dds[dd].dragElId){var elid=dds[dd].dragElId;dds[dd].unreg();Ext.get(elid).remove();}else if(dds[dd].config.isTarget){dds[dd].proxyTop.remove();dds[dd].proxyBottom.remove();dds[dd].unreg();} -if(Ext.dd.DDM.locationCache[dd]){delete Ext.dd.DDM.locationCache[dd];}} -delete Ext.dd.DDM.ids['gridHeader'+this.grid.getGridEl().id];}} -this.bind(null,null);Ext.EventManager.removeResizeListener(this.onWindowResize,this);},handleLockChange:function(){this.refresh(true);},onDenyColumnLock:function(){},onDenyColumnHide:function(){},handleHdMenuClick:function(item){var index=this.hdCtxIndex;var cm=this.cm,ds=this.ds;switch(item.id){case"asc":ds.sort(cm.getDataIndex(index),"ASC");break;case"desc":ds.sort(cm.getDataIndex(index),"DESC");break;case"lock":var lc=cm.getLockedCount();if(cm.getColumnCount(true)<=lc+1){this.onDenyColumnLock();return;} -if(lc!=index){cm.setLocked(index,true,true);cm.moveColumn(index,lc);this.grid.fireEvent("columnmove",index,lc);}else{cm.setLocked(index,true);} -break;case"unlock":var lc=cm.getLockedCount();if((lc-1)!=index){cm.setLocked(index,false,true);cm.moveColumn(index,lc-1);this.grid.fireEvent("columnmove",index,lc-1);}else{cm.setLocked(index,false);} -break;default:index=cm.getIndexById(item.id.substr(4));if(index!=-1){if(item.checked&&cm.getColumnCount(true)<=1){this.onDenyColumnHide();return false;} -cm.setHidden(index,item.checked);}} -return true;},beforeColMenuShow:function(){var cm=this.cm,colCount=cm.getColumnCount();this.colMenu.removeAll();for(var i=0;i<colCount;i++){this.colMenu.add(new Ext.menu.CheckItem({id:"col-"+cm.getColumnId(i),text:cm.getColumnHeader(i),checked:!cm.isHidden(i),hideOnClick:false}));}},handleHdCtx:function(g,index,e){e.stopEvent();var hd=this.getHeaderCell(index);this.hdCtxIndex=index;var ms=this.hmenu.items,cm=this.cm;ms.get("asc").setDisabled(!cm.isSortable(index));ms.get("desc").setDisabled(!cm.isSortable(index));if(this.grid.enableColLock!==false){ms.get("lock").setDisabled(cm.isLocked(index));ms.get("unlock").setDisabled(!cm.isLocked(index));} -this.hmenu.show(hd,"tl-bl");},handleHdOver:function(e){var hd=this.findHeaderCell(e.getTarget());if(hd&&!this.headersDisabled){if(this.grid.colModel.isSortable(this.getCellIndex(hd))){this.fly(hd).addClass("x-grid-hd-over");}}},handleHdOut:function(e){var hd=this.findHeaderCell(e.getTarget());if(hd){this.fly(hd).removeClass("x-grid-hd-over");}},handleSplitDblClick:function(e,t){var i=this.getCellIndex(t);if(this.grid.enableColumnResize!==false&&this.cm.isResizable(i)&&!this.cm.isFixed(i)){this.autoSizeColumn(i,true);this.layout();}},render:function(){var cm=this.cm;var colCount=cm.getColumnCount();if(this.grid.monitorWindowResize===true){Ext.EventManager.onWindowResize(this.onWindowResize,this,true);} -var header=this.renderHeaders();var body=this.templates.body.apply({rows:""});var html=this.templates.master.apply({lockedBody:body,body:body,lockedHeader:header[0],header:header[1]});this.grid.getGridEl().dom.innerHTML=html;this.initElements();this.scroller.on("scroll",this.handleScroll,this);this.lockedBody.on("mousewheel",this.handleWheel,this);this.mainBody.on("mousewheel",this.handleWheel,this);this.mainHd.on("mouseover",this.handleHdOver,this);this.mainHd.on("mouseout",this.handleHdOut,this);this.mainHd.on("dblclick",this.handleSplitDblClick,this,{delegate:"."+this.splitClass});this.lockedHd.on("mouseover",this.handleHdOver,this);this.lockedHd.on("mouseout",this.handleHdOut,this);this.lockedHd.on("dblclick",this.handleSplitDblClick,this,{delegate:"."+this.splitClass});if(this.grid.enableColumnResize!==false&&Ext.grid.SplitDragZone){new Ext.grid.SplitDragZone(this.grid,this.lockedHd.dom,this.mainHd.dom);} -this.updateSplitters();if(this.grid.enableColumnMove&&Ext.grid.HeaderDragZone){new Ext.grid.HeaderDragZone(this.grid,this.lockedHd.dom,this.mainHd.dom);new Ext.grid.HeaderDropZone(this.grid,this.lockedHd.dom,this.mainHd.dom);} -if(this.grid.enableCtxMenu!==false&&Ext.menu.Menu){this.hmenu=new Ext.menu.Menu({id:this.grid.id+"-hctx"});this.hmenu.add({id:"asc",text:this.sortAscText,cls:"xg-hmenu-sort-asc"},{id:"desc",text:this.sortDescText,cls:"xg-hmenu-sort-desc"});if(this.grid.enableColLock!==false){this.hmenu.add('-',{id:"lock",text:this.lockText,cls:"xg-hmenu-lock"},{id:"unlock",text:this.unlockText,cls:"xg-hmenu-unlock"});} -if(this.grid.enableColumnHide!==false){this.colMenu=new Ext.menu.Menu({id:this.grid.id+"-hcols-menu"});this.colMenu.on("beforeshow",this.beforeColMenuShow,this);this.colMenu.on("itemclick",this.handleHdMenuClick,this);this.hmenu.add('-',{id:"columns",text:this.columnsText,menu:this.colMenu});} -this.hmenu.on("itemclick",this.handleHdMenuClick,this);this.grid.on("headercontextmenu",this.handleHdCtx,this);} -if((this.grid.enableDragDrop||this.grid.enableDrag)&&Ext.grid.GridDragZone){this.dd=new Ext.grid.GridDragZone(this.grid,{ddGroup:this.grid.ddGroup||'GridDD'});} -this.updateHeaderSortState();this.beforeInitialResize();this.layout(true);this.renderPhase2.defer(1,this);},renderPhase2:function(){this.refresh();if(this.grid.autoSizeColumns){this.autoSizeColumns();}},beforeInitialResize:function(){},onColumnSplitterMoved:function(i,w){this.userResized=true;var cm=this.grid.colModel;cm.setColumnWidth(i,w,true);var cid=cm.getColumnId(i);this.css.updateRule(this.colSelector+cid,"width",(w-this.borderWidth)+"px");this.css.updateRule(this.hdSelector+cid,"width",(w-this.borderWidth)+"px");this.updateSplitters();this.layout();this.grid.fireEvent("columnresize",i,w);},syncRowHeights:function(startIndex,endIndex){if(this.grid.enableRowHeightSync===true&&this.cm.getLockedCount()>0){startIndex=startIndex||0;var mrows=this.getBodyTable().rows;var lrows=this.getLockedTable().rows;var len=mrows.length-1;endIndex=Math.min(endIndex||len,len);for(var i=startIndex;i<=endIndex;i++){var m=mrows[i],l=lrows[i];var h=Math.max(m.offsetHeight,l.offsetHeight);m.style.height=l.style.height=h+"px";}}},layout:function(initialRender,is2ndPass){var g=this.grid;var auto=g.autoHeight;var scrollOffset=16;var c=g.getGridEl(),cm=this.cm,expandCol=g.autoExpandColumn,gv=this;if(!c.dom.offsetWidth){if(initialRender){this.lockedWrap.show();this.mainWrap.show();} -return;} -var hasLock=this.cm.isLocked(0);var tbh=this.headerPanel.getHeight();var bbh=this.footerPanel.getHeight();if(auto){var ch=this.getBodyTable().offsetHeight+tbh+bbh+this.mainHd.getHeight();var newHeight=ch+c.getBorderWidth("tb");if(g.maxHeight){newHeight=Math.min(g.maxHeight,newHeight);} -c.setHeight(newHeight);} -if(g.autoWidth){c.setWidth(cm.getTotalWidth()+c.getBorderWidth('lr'));} -var s=this.scroller;var csize=c.getSize(true);this.el.setSize(csize.width,csize.height);this.headerPanel.setWidth(csize.width);this.footerPanel.setWidth(csize.width);var hdHeight=this.mainHd.getHeight();var vw=csize.width;var vh=csize.height-(tbh+bbh);s.setSize(vw,vh);var bt=this.getBodyTable();var ltWidth=hasLock?Math.max(this.getLockedTable().offsetWidth,this.lockedHd.dom.firstChild.offsetWidth):0;var scrollHeight=bt.offsetHeight;var scrollWidth=ltWidth+bt.offsetWidth;var vscroll=false,hscroll=false;this.scrollSizer.setSize(scrollWidth,scrollHeight+hdHeight);var lw=this.lockedWrap,mw=this.mainWrap;var lb=this.lockedBody,mb=this.mainBody;setTimeout(function(){var t=s.dom.offsetTop;var w=s.dom.clientWidth,h=s.dom.clientHeight;lw.setTop(t);lw.setSize(ltWidth,h);mw.setLeftTop(ltWidth,t);mw.setSize(w-ltWidth,h);lb.setHeight(h-hdHeight);mb.setHeight(h-hdHeight);if(is2ndPass!==true&&!gv.userResized&&expandCol){var ci=cm.getIndexById(expandCol);var tw=cm.getTotalWidth(false);var currentWidth=cm.getColumnWidth(ci);var cw=Math.min(Math.max(((w-tw)+currentWidth-2)-(w<=s.dom.offsetWidth?0:18),g.autoExpandMin),g.autoExpandMax);if(currentWidth!=cw){cm.setColumnWidth(ci,cw,true);gv.css.updateRule(gv.colSelector+expandCol,"width",(cw-gv.borderWidth)+"px");gv.css.updateRule(gv.hdSelector+expandCol,"width",(cw-gv.borderWidth)+"px");gv.updateSplitters();gv.layout(false,true);}} -if(initialRender){lw.show();mw.show();}},10);},onWindowResize:function(){if(!this.grid.monitorWindowResize||this.grid.autoHeight){return;} -this.layout();},appendFooter:function(parentEl){return null;},sortAscText:"Sort Ascending",sortDescText:"Sort Descending",lockText:"Lock Column",unlockText:"Unlock Column",columnsText:"Columns"}); - -Ext.grid.HeaderDragZone=function(grid,hd,hd2){this.grid=grid;this.view=grid.getView();this.ddGroup="gridHeader"+this.grid.getGridEl().id;Ext.grid.HeaderDragZone.superclass.constructor.call(this,hd);if(hd2){this.setHandleElId(Ext.id(hd));this.setOuterHandleElId(Ext.id(hd2));} -this.scroll=false;};Ext.extend(Ext.grid.HeaderDragZone,Ext.dd.DragZone,{maxDragWidth:120,getDragData:function(e){var t=Ext.lib.Event.getTarget(e);var h=this.view.findHeaderCell(t);if(h){return{ddel:h.firstChild,header:h};} -return false;},onInitDrag:function(e){this.view.headersDisabled=true;var clone=this.dragData.ddel.cloneNode(true);clone.id=Ext.id();clone.style.width=Math.min(this.dragData.header.offsetWidth,this.maxDragWidth)+"px";this.proxy.update(clone);return true;},afterValidDrop:function(){var v=this.view;setTimeout(function(){v.headersDisabled=false;},50);},afterInvalidDrop:function(){var v=this.view;setTimeout(function(){v.headersDisabled=false;},50);}});Ext.grid.HeaderDropZone=function(grid,hd,hd2){this.grid=grid;this.view=grid.getView();this.proxyTop=Ext.DomHelper.append(document.body,{tag:"div",cls:"col-move-top",html:" "},true);this.proxyBottom=Ext.DomHelper.append(document.body,{tag:"div",cls:"col-move-bottom",html:" "},true);this.proxyTop.hide=this.proxyBottom.hide=function(){this.setLeftTop(-100,-100);this.setStyle("visibility","hidden");};this.ddGroup="gridHeader"+this.grid.getGridEl().id;Ext.grid.HeaderDropZone.superclass.constructor.call(this,grid.getGridEl().dom);};Ext.extend(Ext.grid.HeaderDropZone,Ext.dd.DropZone,{proxyOffsets:[-4,-9],fly:Ext.Element.fly,getTargetFromEvent:function(e){var t=Ext.lib.Event.getTarget(e);var cindex=this.view.findCellIndex(t);if(cindex!==false){return this.view.getHeaderCell(cindex);}},nextVisible:function(h){var v=this.view,cm=this.grid.colModel;h=h.nextSibling;while(h){if(!cm.isHidden(v.getCellIndex(h))){return h;} -h=h.nextSibling;} -return null;},prevVisible:function(h){var v=this.view,cm=this.grid.colModel;h=h.prevSibling;while(h){if(!cm.isHidden(v.getCellIndex(h))){return h;} -h=h.prevSibling;} -return null;},positionIndicator:function(h,n,e){var x=Ext.lib.Event.getPageX(e);var r=Ext.lib.Dom.getRegion(n.firstChild);var px,pt,py=r.top+this.proxyOffsets[1];if((r.right-x)<=(r.right-r.left)/2){px=r.right+this.view.borderWidth;pt="after";}else{px=r.left;pt="before";} -var oldIndex=this.view.getCellIndex(h);var newIndex=this.view.getCellIndex(n);if(this.grid.colModel.isFixed(newIndex)){return false;} -var locked=this.grid.colModel.isLocked(newIndex);if(pt=="after"){newIndex++;} -if(oldIndex<newIndex){newIndex--;} -if(oldIndex==newIndex&&(locked==this.grid.colModel.isLocked(oldIndex))){return false;} -px+=this.proxyOffsets[0];this.proxyTop.setLeftTop(px,py);this.proxyTop.show();if(!this.bottomOffset){this.bottomOffset=this.view.mainHd.getHeight();} -this.proxyBottom.setLeftTop(px,py+this.proxyTop.dom.offsetHeight+this.bottomOffset);this.proxyBottom.show();return pt;},onNodeEnter:function(n,dd,e,data){if(data.header!=n){this.positionIndicator(data.header,n,e);}},onNodeOver:function(n,dd,e,data){var result=false;if(data.header!=n){result=this.positionIndicator(data.header,n,e);} -if(!result){this.proxyTop.hide();this.proxyBottom.hide();} -return result?this.dropAllowed:this.dropNotAllowed;},onNodeOut:function(n,dd,e,data){this.proxyTop.hide();this.proxyBottom.hide();},onNodeDrop:function(n,dd,e,data){var h=data.header;if(h!=n){var cm=this.grid.colModel;var x=Ext.lib.Event.getPageX(e);var r=Ext.lib.Dom.getRegion(n.firstChild);var pt=(r.right-x)<=((r.right-r.left)/2)?"after":"before";var oldIndex=this.view.getCellIndex(h);var newIndex=this.view.getCellIndex(n);var locked=cm.isLocked(newIndex);if(pt=="after"){newIndex++;} -if(oldIndex<newIndex){newIndex--;} -if(oldIndex==newIndex&&(locked==cm.isLocked(oldIndex))){return false;} -cm.setLocked(oldIndex,locked,true);cm.moveColumn(oldIndex,newIndex);this.grid.fireEvent("columnmove",oldIndex,newIndex);return true;} -return false;}});Ext.grid.GridView.ColumnDragZone=function(grid,hd){Ext.grid.GridView.ColumnDragZone.superclass.constructor.call(this,grid,hd,null);this.proxy.el.addClass('x-grid3-col-dd');};Ext.extend(Ext.grid.GridView.ColumnDragZone,Ext.grid.HeaderDragZone,{handleMouseDown:function(e){},callHandleMouseDown:function(e){Ext.grid.GridView.ColumnDragZone.superclass.handleMouseDown.call(this,e);}}); - -Ext.grid.SplitDragZone=function(grid,hd,hd2){this.grid=grid;this.view=grid.getView();this.proxy=this.view.resizeProxy;Ext.grid.SplitDragZone.superclass.constructor.call(this,hd,"gridSplitters"+this.grid.getGridEl().id,{dragElId:Ext.id(this.proxy.dom),resizeFrame:false});this.setHandleElId(Ext.id(hd));this.setOuterHandleElId(Ext.id(hd2));this.scroll=false;};Ext.extend(Ext.grid.SplitDragZone,Ext.dd.DDProxy,{fly:Ext.Element.fly,b4StartDrag:function(x,y){this.view.headersDisabled=true;this.proxy.setHeight(this.view.mainWrap.getHeight());var w=this.cm.getColumnWidth(this.cellIndex);var minw=Math.max(w-this.grid.minColumnWidth,0);this.resetConstraints();this.setXConstraint(minw,1000);this.setYConstraint(0,0);this.minX=x-minw;this.maxX=x+1000;this.startPos=x;Ext.dd.DDProxy.prototype.b4StartDrag.call(this,x,y);},handleMouseDown:function(e){ev=Ext.EventObject.setEvent(e);var t=this.fly(ev.getTarget());if(t.hasClass("x-grid-split")){this.cellIndex=this.view.getCellIndex(t.dom);this.split=t.dom;this.cm=this.grid.colModel;if(this.cm.isResizable(this.cellIndex)&&!this.cm.isFixed(this.cellIndex)){Ext.grid.SplitDragZone.superclass.handleMouseDown.apply(this,arguments);}}},endDrag:function(e){this.view.headersDisabled=false;var endX=Math.max(this.minX,Ext.lib.Event.getPageX(e));var diff=endX-this.startPos;this.view.onColumnSplitterMoved(this.cellIndex,this.cm.getColumnWidth(this.cellIndex)+diff);},autoOffset:function(){this.setDelta(0,0);}}); - -Ext.grid.GridDragZone=function(grid,config){this.view=grid.getView();Ext.grid.GridDragZone.superclass.constructor.call(this,this.view.mainBody.dom,config);if(this.view.lockedBody){this.setHandleElId(Ext.id(this.view.mainBody.dom));this.setOuterHandleElId(Ext.id(this.view.lockedBody.dom));} -this.scroll=false;this.grid=grid;this.ddel=document.createElement('div');this.ddel.className='x-grid-dd-wrap';};Ext.extend(Ext.grid.GridDragZone,Ext.dd.DragZone,{ddGroup:"GridDD",getDragData:function(e){var t=Ext.lib.Event.getTarget(e);var rowIndex=this.view.findRowIndex(t);if(rowIndex!==false){var sm=this.grid.selModel;if(!sm.isSelected(rowIndex)||e.hasModifier()){sm.handleMouseDown(e,t);} -return{grid:this.grid,ddel:this.ddel,rowIndex:rowIndex,selections:sm.getSelections()};} -return false;},onInitDrag:function(e){var data=this.dragData;this.ddel.innerHTML=this.grid.getDragDropText();this.proxy.update(this.ddel);},afterRepair:function(){this.dragging=false;},getRepairXY:function(e,data){return false;},onEndDrag:function(data,e){},onValidDrop:function(dd,e,id){this.hideProxy();},beforeInvalidDrop:function(e,id){}}); - -Ext.grid.ColumnModel=function(config){Ext.grid.ColumnModel.superclass.constructor.call(this);this.config=config;this.lookup={};for(var i=0,len=config.length;i<len;i++){if(typeof config[i].dataIndex=="undefined"){config[i].dataIndex=i;} -if(typeof config[i].renderer=="string"){config[i].renderer=Ext.util.Format[config[i].renderer];} -if(typeof config[i].id=="undefined"){config[i].id=i;} -this.lookup[config[i].id]=config[i];} -this.defaultWidth=100;this.defaultSortable=false;this.addEvents({"widthchange":true,"headerchange":true,"hiddenchange":true,"columnmoved":true,"columnlockchange":true});Ext.grid.ColumnModel.superclass.constructor.call(this);};Ext.extend(Ext.grid.ColumnModel,Ext.util.Observable,{getColumnId:function(index){return this.config[index].id;},getColumnById:function(id){return this.lookup[id];},getIndexById:function(id){for(var i=0,len=this.config.length;i<len;i++){if(this.config[i].id==id){return i;}} -return-1;},moveColumn:function(oldIndex,newIndex){var c=this.config[oldIndex];this.config.splice(oldIndex,1);this.config.splice(newIndex,0,c);this.dataMap=null;this.fireEvent("columnmoved",this,oldIndex,newIndex);},isLocked:function(colIndex){return this.config[colIndex].locked===true;},setLocked:function(colIndex,value,suppressEvent){if(this.isLocked(colIndex)==value){return;} -this.config[colIndex].locked=value;if(!suppressEvent){this.fireEvent("columnlockchange",this,colIndex,value);}},getTotalLockedWidth:function(){var totalWidth=0;for(var i=0;i<this.config.length;i++){if(this.isLocked(i)&&!this.isHidden(i)){this.totalWidth+=this.getColumnWidth(i);}} -return totalWidth;},getLockedCount:function(){for(var i=0,len=this.config.length;i<len;i++){if(!this.isLocked(i)){return i;}}},getColumnCount:function(visibleOnly){if(visibleOnly===true){var c=0;for(var i=0,len=this.config.length;i<len;i++){if(!this.isHidden(i)){c++;}} -return c;} -return this.config.length;},getColumnsBy:function(fn,scope){var r=[];for(var i=0,len=this.config.length;i<len;i++){var c=this.config[i];if(fn.call(scope||this,c,i)===true){r[r.length]=c;}} -return r;},isSortable:function(col){if(typeof this.config[col].sortable=="undefined"){return this.defaultSortable;} -return this.config[col].sortable;},getRenderer:function(col){if(!this.config[col].renderer){return Ext.grid.ColumnModel.defaultRenderer;} -return this.config[col].renderer;},setRenderer:function(col,fn){this.config[col].renderer=fn;},getColumnWidth:function(col){return this.config[col].width||this.defaultWidth;},setColumnWidth:function(col,width,suppressEvent){this.config[col].width=width;this.totalWidth=null;if(!suppressEvent){this.fireEvent("widthchange",this,col,width);}},getTotalWidth:function(includeHidden){if(!this.totalWidth){this.totalWidth=0;for(var i=0,len=this.config.length;i<len;i++){if(includeHidden||!this.isHidden(i)){this.totalWidth+=this.getColumnWidth(i);}}} -return this.totalWidth;},getColumnHeader:function(col){return this.config[col].header;},setColumnHeader:function(col,header){this.config[col].header=header;this.fireEvent("headerchange",this,col,header);},getColumnTooltip:function(col){return this.config[col].tooltip;},setColumnTooltip:function(col,tooltip){this.config[col].tooltip=tooltip;},getDataIndex:function(col){return this.config[col].dataIndex;},setDataIndex:function(col,dataIndex){this.config[col].dataIndex=dataIndex;},findColumnIndex:function(dataIndex){var c=this.config;for(var i=0,len=c.length;i<len;i++){if(c[i].dataIndex==dataIndex){return i;}} -return-1;},isCellEditable:function(colIndex,rowIndex){return(this.config[colIndex].editable||(typeof this.config[colIndex].editable=="undefined"&&this.config[colIndex].editor))?true:false;},getCellEditor:function(colIndex,rowIndex){return this.config[colIndex].editor;},setEditable:function(col,editable){this.config[col].editable=editable;},isHidden:function(colIndex){return this.config[colIndex].hidden;},isFixed:function(colIndex){return this.config[colIndex].fixed;},isResizable:function(colIndex){return colIndex>=0&&this.config[colIndex].resizable!==false&&this.config[colIndex].fixed!==true;},setHidden:function(colIndex,hidden){this.config[colIndex].hidden=hidden;this.totalWidth=null;this.fireEvent("hiddenchange",this,colIndex,hidden);},setEditor:function(col,editor){this.config[col].editor=editor;}});Ext.grid.ColumnModel.defaultRenderer=function(value){if(typeof value=="string"&&value.length<1){return" ";} -return value;};Ext.grid.DefaultColumnModel=Ext.grid.ColumnModel; - -Ext.grid.AbstractSelectionModel=function(){this.locked=false;Ext.grid.AbstractSelectionModel.superclass.constructor.call(this);};Ext.extend(Ext.grid.AbstractSelectionModel,Ext.util.Observable,{init:function(grid){this.grid=grid;this.initEvents();},lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isLocked:function(){return this.locked;}}); - -Ext.grid.RowSelectionModel=function(config){Ext.apply(this,config);this.selections=new Ext.util.MixedCollection(false,function(o){return o.id;});this.last=false;this.lastActive=false;this.addEvents({"selectionchange":true,"beforerowselect":true,"rowselect":true,"rowdeselect":true});this.locked=false;};Ext.extend(Ext.grid.RowSelectionModel,Ext.grid.AbstractSelectionModel,{singleSelect:false,initEvents:function(){if(!this.grid.enableDragDrop&&!this.grid.enableDrag){this.grid.on("mousedown",this.handleMouseDown,this);} -this.rowNav=new Ext.KeyNav(this.grid.getGridEl(),{"up":function(e){if(!e.shiftKey){this.selectPrevious(e.shiftKey);}else if(this.last!==false&&this.lastActive!==false){var last=this.last;this.selectRange(this.last,this.lastActive-1);this.grid.getView().focusRow(this.lastActive);if(last!==false){this.last=last;}}else{this.selectFirstRow();}},"down":function(e){if(!e.shiftKey){this.selectNext(e.shiftKey);}else if(this.last!==false&&this.lastActive!==false){var last=this.last;this.selectRange(this.last,this.lastActive+1);this.grid.getView().focusRow(this.lastActive);if(last!==false){this.last=last;}}else{this.selectFirstRow();}},scope:this});var view=this.grid.view;view.on("refresh",this.onRefresh,this);view.on("rowupdated",this.onRowUpdated,this);view.on("rowremoved",this.onRemove,this);},onRefresh:function(){var ds=this.grid.dataSource,i,v=this.grid.view;var s=this.selections;s.each(function(r){if((i=ds.indexOfId(r.id))!=-1){v.onRowSelect(i);}else{s.remove(r);}});},onRemove:function(v,index,r){this.selections.remove(r);},onRowUpdated:function(v,index,r){if(this.isSelected(r)){v.onRowSelect(index);}},selectRecords:function(records,keepExisting){if(!keepExisting){this.clearSelections();} -var ds=this.grid.dataSource;for(var i=0,len=records.length;i<len;i++){this.selectRow(ds.indexOf(records[i]),true);}},getCount:function(){return this.selections.length;},selectFirstRow:function(){this.selectRow(0);},selectLastRow:function(keepExisting){this.selectRow(this.grid.dataSource.getCount()-1,keepExisting);},selectNext:function(keepExisting){if(this.last!==false&&(this.last+1)<this.grid.dataSource.getCount()){this.selectRow(this.last+1,keepExisting);this.grid.getView().focusRow(this.last);}},selectPrevious:function(keepExisting){if(this.last){this.selectRow(this.last-1,keepExisting);this.grid.getView().focusRow(this.last);}},getSelections:function(){return[].concat(this.selections.items);},getSelected:function(){return this.selections.itemAt(0);},clearSelections:function(fast){if(this.locked)return;if(fast!==true){var ds=this.grid.dataSource;var s=this.selections;s.each(function(r){this.deselectRow(ds.indexOfId(r.id));},this);s.clear();}else{this.selections.clear();} -this.last=false;},selectAll:function(){if(this.locked)return;this.selections.clear();for(var i=0,len=this.grid.dataSource.getCount();i<len;i++){this.selectRow(i,true);}},hasSelection:function(){return this.selections.length>0;},isSelected:function(index){var r=typeof index=="number"?this.grid.dataSource.getAt(index):index;return(r&&this.selections.key(r.id)?true:false);},isIdSelected:function(id){return(this.selections.key(id)?true:false);},handleMouseDown:function(e,t){var view=this.grid.getView(),rowIndex;if(this.isLocked()||(rowIndex=view.findRowIndex(t))===false){return;};if(e.shiftKey&&this.last!==false){var last=this.last;this.selectRange(last,rowIndex,e.ctrlKey);this.last=last;view.focusRow(rowIndex);}else{var isSelected=this.isSelected(rowIndex);if(e.button!=0&&isSelected){view.focusRow(rowIndex);}else if(e.ctrlKey&&isSelected){this.deselectRow(rowIndex);}else{this.selectRow(rowIndex,e.button==0&&(e.ctrlKey||e.shiftKey));view.focusRow(rowIndex);}}},selectRows:function(rows,keepExisting){if(!keepExisting){this.clearSelections();} -for(var i=0,len=rows.length;i<len;i++){this.selectRow(rows[i],true);}},selectRange:function(startRow,endRow,keepExisting){if(this.locked)return;if(!keepExisting){this.clearSelections();} -if(startRow<=endRow){for(var i=startRow;i<=endRow;i++){this.selectRow(i,true);}}else{for(var i=startRow;i>=endRow;i--){this.selectRow(i,true);}}},deselectRange:function(startRow,endRow,preventViewNotify){if(this.locked)return;for(var i=startRow;i<=endRow;i++){this.deselectRow(i,preventViewNotify);}},selectRow:function(index,keepExisting,preventViewNotify){if(this.locked||(index<0||index>=this.grid.dataSource.getCount()))return;if(this.fireEvent("beforerowselect",this,index,keepExisting)!==false){if(!keepExisting||this.singleSelect){this.clearSelections();} -var r=this.grid.dataSource.getAt(index);this.selections.add(r);this.last=this.lastActive=index;if(!preventViewNotify){this.grid.getView().onRowSelect(index);} -this.fireEvent("rowselect",this,index,r);this.fireEvent("selectionchange",this);}},deselectRow:function(index,preventViewNotify){if(this.locked)return;if(this.last==index){this.last=false;} -if(this.lastActive==index){this.lastActive=false;} -var r=this.grid.dataSource.getAt(index);this.selections.remove(r);if(!preventViewNotify){this.grid.getView().onRowDeselect(index);} -this.fireEvent("rowdeselect",this,index);this.fireEvent("selectionchange",this);},restoreLast:function(){if(this._last){this.last=this._last;}},acceptsNav:function(row,col,cm){return!cm.isHidden(col)&&cm.isCellEditable(col,row);},onEditorKey:function(field,e){var k=e.getKey(),newCell,g=this.grid,ed=g.activeEditor;if(k==e.TAB){e.stopEvent();ed.completeEdit();if(e.shiftKey){newCell=g.walkCells(ed.row,ed.col-1,-1,this.acceptsNav,this);}else{newCell=g.walkCells(ed.row,ed.col+1,1,this.acceptsNav,this);}}else if(k==e.ENTER&&!e.ctrlKey){e.stopEvent();ed.completeEdit();if(e.shiftKey){newCell=g.walkCells(ed.row-1,ed.col,-1,this.acceptsNav,this);}else{newCell=g.walkCells(ed.row+1,ed.col,1,this.acceptsNav,this);}}else if(k==e.ESC){ed.cancelEdit();} -if(newCell){g.startEditing(newCell[0],newCell[1]);}}}); - -Ext.grid.CellSelectionModel=function(config){Ext.apply(this,config);this.selection=null;this.addEvents({"beforecellselect":true,"cellselect":true,"selectionchange":true});};Ext.extend(Ext.grid.CellSelectionModel,Ext.grid.AbstractSelectionModel,{initEvents:function(){this.grid.on("mousedown",this.handleMouseDown,this);this.grid.getGridEl().on(Ext.isIE?"keydown":"keypress",this.handleKeyDown,this);var view=this.grid.view;view.on("refresh",this.onViewChange,this);view.on("rowupdated",this.onRowUpdated,this);view.on("beforerowremoved",this.clearSelections,this);view.on("beforerowsinserted",this.clearSelections,this);if(this.grid.isEditor){this.grid.on("beforeedit",this.beforeEdit,this);}},beforeEdit:function(e){this.select(e.row,e.column,false,true,e.record);},onRowUpdated:function(v,index,r){if(this.selection&&this.selection.record==r){v.onCellSelect(index,this.selection.cell[1]);}},onViewChange:function(){this.clearSelections(true);},getSelectedCell:function(){return this.selection?this.selection.cell:null;},clearSelections:function(preventNotify){var s=this.selection;if(s){if(preventNotify!==true){this.grid.view.onCellDeselect(s.cell[0],s.cell[1]);} -this.selection=null;this.fireEvent("selectionchange",this,null);}},hasSelection:function(){return this.selection?true:false;},handleMouseDown:function(e,t){var v=this.grid.getView();if(this.isLocked()){return;};var row=v.findRowIndex(t);var cell=v.findCellIndex(t);if(row!==false&&cell!==false){this.select(row,cell);}},select:function(rowIndex,colIndex,preventViewNotify,preventFocus,r){if(this.fireEvent("beforecellselect",this,rowIndex,colIndex)!==false){this.clearSelections();r=r||this.grid.dataSource.getAt(rowIndex);this.selection={record:r,cell:[rowIndex,colIndex]};if(!preventViewNotify){var v=this.grid.getView();v.onCellSelect(rowIndex,colIndex);if(preventFocus!==true){v.focusCell(rowIndex,colIndex);}} -this.fireEvent("cellselect",this,rowIndex,colIndex);this.fireEvent("selectionchange",this,this.selection);}},isSelectable:function(rowIndex,colIndex,cm){return!cm.isHidden(colIndex);},handleKeyDown:function(e){if(!e.isNavKeyPress()){return;} -var g=this.grid,s=this.selection;if(!s){e.stopEvent();var cell=g.walkCells(0,0,1,this.isSelectable,this);if(cell){this.select(cell[0],cell[1]);} -return;} -var sm=this;var walk=function(row,col,step){return g.walkCells(row,col,step,sm.isSelectable,sm);};var k=e.getKey(),r=s.cell[0],c=s.cell[1];var newCell;switch(k){case e.TAB:if(e.shiftKey){newCell=walk(r,c-1,-1);}else{newCell=walk(r,c+1,1);} -break;case e.DOWN:newCell=walk(r+1,c,1);break;case e.UP:newCell=walk(r-1,c,-1);break;case e.RIGHT:newCell=walk(r,c+1,1);break;case e.LEFT:newCell=walk(r,c-1,-1);break;case e.ENTER:if(g.isEditor&&!g.editing){g.startEditing(r,c);e.stopEvent();return;} -break;};if(newCell){this.select(newCell[0],newCell[1]);e.stopEvent();}},acceptsNav:function(row,col,cm){return!cm.isHidden(col)&&cm.isCellEditable(col,row);},onEditorKey:function(field,e){var k=e.getKey(),newCell,g=this.grid,ed=g.activeEditor;if(k==e.TAB){if(e.shiftKey){newCell=g.walkCells(ed.row,ed.col-1,-1,this.acceptsNav,this);}else{newCell=g.walkCells(ed.row,ed.col+1,1,this.acceptsNav,this);} -e.stopEvent();}else if(k==e.ENTER&&!e.ctrlKey){ed.completeEdit();e.stopEvent();}else if(k==e.ESC){ed.cancelEdit();} -if(newCell){g.startEditing(newCell[0],newCell[1]);}}}); - -Ext.grid.EditorGrid=function(container,config){Ext.grid.EditorGrid.superclass.constructor.call(this,container,config);this.getGridEl().addClass("xedit-grid");if(!this.selModel){this.selModel=new Ext.grid.CellSelectionModel();} -this.activeEditor=null;this.addEvents({"beforeedit":true,"afteredit":true,"validateedit":true});this.on("bodyscroll",this.stopEditing,this);this.on(this.clicksToEdit==1?"cellclick":"celldblclick",this.onCellDblClick,this);};Ext.extend(Ext.grid.EditorGrid,Ext.grid.Grid,{isEditor:true,clicksToEdit:2,trackMouseOver:false,onCellDblClick:function(g,row,col){this.startEditing(row,col);},onEditComplete:function(ed,value,startValue){this.editing=false;this.activeEditor=null;ed.un("specialkey",this.selModel.onEditorKey,this.selModel);if(String(value)!=String(startValue)){var r=ed.record;var field=this.colModel.getDataIndex(ed.col);var e={grid:this,record:r,field:field,originalValue:startValue,value:value,row:ed.row,column:ed.col,cancel:false};if(this.fireEvent("validateedit",e)!==false&&!e.cancel){r.set(field,e.value);delete e.cancel;this.fireEvent("afteredit",e);}} -this.view.focusCell(ed.row,ed.col);},startEditing:function(row,col){this.stopEditing();if(this.colModel.isCellEditable(col,row)){this.view.ensureVisible(row,col,true);var r=this.dataSource.getAt(row);var field=this.colModel.getDataIndex(col);var e={grid:this,record:r,field:field,value:r.data[field],row:row,column:col,cancel:false};if(this.fireEvent("beforeedit",e)!==false&&!e.cancel){this.editing=true;var ed=this.colModel.getCellEditor(col,row);if(!ed.rendered){ed.render(ed.parentEl||document.body);} -(function(){ed.row=row;ed.col=col;ed.record=r;ed.on("complete",this.onEditComplete,this,{single:true});ed.on("specialkey",this.selModel.onEditorKey,this.selModel);this.activeEditor=ed;var v=r.data[field];ed.startEdit(this.view.getCell(row,col),v);}).defer(50,this);}}},stopEditing:function(){if(this.activeEditor){this.activeEditor.completeEdit();} -this.activeEditor=null;}}); - -Ext.grid.GridEditor=function(field,config){Ext.grid.GridEditor.superclass.constructor.call(this,field,config);field.monitorTab=false;};Ext.extend(Ext.grid.GridEditor,Ext.Editor,{alignment:"tl-tl",autoSize:"width",hideEl:false,cls:"x-small-editor x-grid-editor",shim:false,shadow:"frame"}); - -Ext.grid.PropertyRecord=Ext.data.Record.create([{name:'name',type:'string'},'value']);Ext.grid.PropertyStore=function(grid,source){this.grid=grid;this.store=new Ext.data.Store({recordType:Ext.grid.PropertyRecord});this.store.on('update',this.onUpdate,this);if(source){this.setSource(source);} -Ext.grid.PropertyStore.superclass.constructor.call(this);};Ext.extend(Ext.grid.PropertyStore,Ext.util.Observable,{setSource:function(o){this.source=o;this.store.removeAll();var data=[];for(var k in o){if(this.isEditableValue(o[k])){data.push(new Ext.grid.PropertyRecord({name:k,value:o[k]},k));}} -this.store.loadRecords({records:data},{},true);},onUpdate:function(ds,record,type){if(type==Ext.data.Record.EDIT){var v=record.data['value'];var oldValue=record.modified['value'];if(this.grid.fireEvent('beforepropertychange',this.source,record.id,v,oldValue)!==false){this.source[record.id]=v;record.commit();this.grid.fireEvent('propertychange',this.source,record.id,v,oldValue);}else{record.reject();}}},getProperty:function(row){return this.store.getAt(row);},isEditableValue:function(val){if(val&&val instanceof Date){return true;}else if(typeof val=='object'||typeof val=='function'){return false;} -return true;},setValue:function(prop,value){this.source[prop]=value;this.store.getById(prop).set('value',value);},getSource:function(){return this.source;}});Ext.grid.PropertyColumnModel=function(grid,store){this.grid=grid;var g=Ext.grid;g.PropertyColumnModel.superclass.constructor.call(this,[{header:this.nameText,sortable:true,dataIndex:'name',id:'name'},{header:this.valueText,resizable:false,dataIndex:'value',id:'value'}]);this.store=store;this.bselect=Ext.DomHelper.append(document.body,{tag:'select',style:'display:none',cls:'x-grid-editor',children:[{tag:'option',value:'true',html:'true'},{tag:'option',value:'false',html:'false'}]});Ext.id(this.bselect);var f=Ext.form;this.editors={'date':new g.GridEditor(new f.DateField({selectOnFocus:true})),'string':new g.GridEditor(new f.TextField({selectOnFocus:true})),'number':new g.GridEditor(new f.NumberField({selectOnFocus:true,style:'text-align:left;'})),'boolean':new g.GridEditor(new f.Field({el:this.bselect,selectOnFocus:true}))};this.renderCellDelegate=this.renderCell.createDelegate(this);this.renderPropDelegate=this.renderProp.createDelegate(this);};Ext.extend(Ext.grid.PropertyColumnModel,Ext.grid.ColumnModel,{nameText:'Name',valueText:'Value',dateFormat:'m/j/Y',renderDate:function(dateVal){return dateVal.dateFormat(this.dateFormat);},renderBool:function(bVal){return bVal?'true':'false';},isCellEditable:function(colIndex,rowIndex){return colIndex==1;},getRenderer:function(col){return col==1?this.renderCellDelegate:this.renderPropDelegate;},renderProp:function(v){return this.getPropertyName(v);},renderCell:function(val){var rv=val;if(val instanceof Date){rv=this.renderDate(val);}else if(typeof val=='boolean'){rv=this.renderBool(val);} -return Ext.util.Format.htmlEncode(rv);},getPropertyName:function(name){var pn=this.grid.propertyNames;return pn&&pn[name]?pn[name]:name;},getCellEditor:function(colIndex,rowIndex){var p=this.store.getProperty(rowIndex);var n=p.data['name'],val=p.data['value'];if(this.grid.customEditors[n]){return this.grid.customEditors[n];} -if(val instanceof Date){return this.editors['date'];}else if(typeof val=='number'){return this.editors['number'];}else if(typeof val=='boolean'){return this.editors['boolean'];}else{return this.editors['string'];}}});Ext.grid.PropertyGrid=function(container,config){config=config||{};var store=new Ext.grid.PropertyStore(this);this.store=store;var cm=new Ext.grid.PropertyColumnModel(this,store);store.store.sort('name','ASC');Ext.grid.PropertyGrid.superclass.constructor.call(this,container,Ext.apply({ds:store.store,cm:cm,enableColLock:false,enableColumnMove:false,stripeRows:false,trackMouseOver:false,clicksToEdit:1},config));this.getGridEl().addClass('x-props-grid');this.lastEditRow=null;this.on('columnresize',this.onColumnResize,this);this.addEvents({beforepropertychange:true,propertychange:true});this.customEditors=this.customEditors||{};};Ext.extend(Ext.grid.PropertyGrid,Ext.grid.EditorGrid,{render:function(){Ext.grid.PropertyGrid.superclass.render.call(this);this.autoSize.defer(100,this);},autoSize:function(){Ext.grid.PropertyGrid.superclass.autoSize.call(this);if(this.view){this.view.fitColumns();}},onColumnResize:function(){this.colModel.setColumnWidth(1,this.container.getWidth(true)-this.colModel.getColumnWidth(0));this.autoSize();},setSource:function(source){this.store.setSource(source);},getSource:function(){return this.store.getSource();}}); - -Ext.LoadMask=function(el,config){this.el=Ext.get(el);Ext.apply(this,config);if(this.store){this.store.on('beforeload',this.onBeforeLoad,this);this.store.on('load',this.onLoad,this);this.store.on('loadexception',this.onLoad,this);this.removeMask=false;}else{var um=this.el.getUpdateManager();um.showLoadIndicator=false;um.on('beforeupdate',this.onBeforeLoad,this);um.on('update',this.onLoad,this);um.on('failure',this.onLoad,this);this.removeMask=true;}};Ext.LoadMask.prototype={msg:'Loading...',msgCls:'x-mask-loading',disabled:false,disable:function(){this.disabled=true;},enable:function(){this.disabled=false;},onLoad:function(){this.el.unmask(this.removeMask);},onBeforeLoad:function(){if(!this.disabled){this.el.mask(this.msg,this.msgCls);}},destroy:function(){if(this.store){this.store.un('beforeload',this.onBeforeLoad,this);this.store.un('load',this.onLoad,this);this.store.un('loadexception',this.onLoad,this);}else{var um=this.el.getUpdateManager();um.un('beforeupdate',this.onBeforeLoad,this);um.un('update',this.onLoad,this);um.un('failure',this.onLoad,this);}}}; - -Ext.debug={init:function(){var CP=Ext.ContentPanel;var bd=Ext.get(document.body);var dlg=new Ext.LayoutDialog('x-debug-browser',{autoCreate:true,width:800,height:450,title:'Ext Debug Console & Inspector',proxyDrag:true,shadow:true,center:{alwaysShowTabs:true},constraintoviewport:false});dlg.el.swallowEvent('click');var mainLayout=dlg.getLayout();mainLayout.beginUpdate();var clayout=mainLayout.add('center',new Ext.debug.InnerLayout('x-debug-console',400,{title:'Debug Console'}));var ilayout=mainLayout.add('center',new Ext.debug.InnerLayout('x-debug-inspector',250,{title:'DOM Inspector'}));var scriptPanel=clayout.add('east',new CP({autoCreate:{tag:'div',children:[{tag:'div'},{tag:'textarea'}]},fitContainer:true,fitToFrame:true,title:'Script Console',autoScroll:Ext.isGecko,setSize:function(w,h){Ext.ContentPanel.prototype.setSize.call(this,w,h);if(Ext.isGecko&&Ext.isStrict){var s=this.adjustForComponents(w,h);this.resizeEl.setSize(s.width-2,s.height-2);}}}));var sel=scriptPanel.el;var script=sel.child('textarea');scriptPanel.resizeEl=script;var sctb=scriptPanel.toolbar=new Ext.Toolbar(sel.child('div'));sctb.add({text:'Run',handler:function(){var s=script.dom.value;if(trap.checked){try{var rt=eval(s);Ext.debug.dump(rt===undefined?'(no return)':rt);}catch(e){Ext.debug.log(e.message||e.descript);}}else{var rt=eval(s);Ext.debug.dump(rt===undefined?'(no return)':rt);}}},{text:'Clear',handler:function(){script.dom.value='';script.dom.focus();}});var trap=Ext.DomHelper.append(sctb.el,{tag:'input',type:'checkbox',checked:'checked'});trap.checked=true;sctb.add('-',trap,'Trap Errors');var stylesGrid=new Ext.grid.PropertyGrid(bd.createChild(),{nameText:'Style',enableHdMenu:false,enableColumnResize:false});var stylePanel=ilayout.add('east',new Ext.GridPanel(stylesGrid,{title:'(No element selected)'}));stylesGrid.render();stylesGrid.getView().mainHd.setDisplayed(false);clayout.tbar.add({text:'Clear',handler:function(){Ext.debug.console.jsonData=[];Ext.debug.console.refresh();}});var treeEl=ilayout.main.getEl();var tb=ilayout.tbar;var inspectIgnore,inspecting;function inspectListener(e,t){if(!inspectIgnore.contains(e.getPoint())){findNode(t);}} -function stopInspecting(e,t){if(!inspectIgnore.contains(e.getPoint())){inspect.toggle(false);if(findNode(t)!==false){e.stopEvent();}}} -function stopInspectingEsc(e,t){if(e.getKey()==e.ESC){inspect.toggle(false);}} -var inspect=tb.addButton({text:'Inspect',enableToggle:true,pressed:false,toggleHandler:function(n,pressed){var d=Ext.get(document);if(pressed){d.on('mouseover',inspectListener,window,{buffer:50});d.on('mousedown',stopInspecting);d.on('keydown',stopInspectingEsc);inspectIgnore=dlg.el.getRegion();inspecting=true;}else{d.un('mouseover',inspectListener);d.un('mousedown',stopInspecting);d.on('keydown',stopInspectingEsc);inspecting=false;var n=tree.getSelectionModel().getSelectedNode();if(n&&n.htmlNode){onNodeSelect(tree,n,false);}}}});tb.addSeparator();var frameEl=tb.addButton({text:'Highlight Selection',enableToggle:true,pressed:false,toggleHandler:function(n,pressed){var n=tree.getSelectionModel().getSelectedNode();if(n&&n.htmlNode){n[pressed?'frame':'unframe']();}}});tb.addSeparator();var reload=tb.addButton({text:'Refresh Children',disabled:true,handler:function(){var n=tree.getSelectionModel().getSelectedNode();if(n&&n.reload){n.reload();}}});tb.add('-',{text:'Collapse All',handler:function(){tree.root.collapse(true);}});mainLayout.endUpdate();mainLayout.getRegion('center').showPanel(0);stylesGrid.on('propertychange',function(s,name,value){var node=stylesGrid.treeNode;if(styles){node.htmlNode.style[name]=value;}else{node.htmlNode[name]=value;} -node.refresh(true);});var stb=new Ext.Toolbar(stylesGrid.view.getHeaderPanel(true));var swap=stb.addButton({text:'DOM Attributes',menu:{items:[new Ext.menu.CheckItem({id:'dom',text:'DOM Attributes',checked:true,group:'xdb-styles'}),new Ext.menu.CheckItem({id:'styles',text:'CSS Properties',group:'xdb-styles'})]}});swap.menu.on('click',function(){styles=swap.menu.items.get('styles').checked;showAll[styles?'show':'hide']();swap.setText(styles?'CSS Properties':'DOM Attributes');var n=tree.getSelectionModel().getSelectedNode();if(n){onNodeSelect(tree,n);}});var addStyle=stb.addButton({text:'Add',disabled:true,handler:function(){Ext.MessageBox.prompt('Add Property','Property Name:',function(btn,v){var store=stylesGrid.store.store;if(btn=='ok'&&v&&!store.getById(v)){var r=new Ext.grid.PropertyRecord({name:v,value:''},v);store.add(r);stylesGrid.startEditing(store.getCount()-1,1);}});}});var showAll=stb.addButton({text:'Computed Styles',hidden:true,pressed:false,enableToggle:true,toggleHandler:function(){var n=tree.getSelectionModel().getSelectedNode();if(n){onNodeSelect(tree,n);}}});var styles=false,hnode;var nonSpace=/^\s*$/;var html=Ext.util.Format.htmlEncode;var ellipsis=Ext.util.Format.ellipsis;var styleRe=/\s?([a-z\-]*)\:([^;]*)(?:[;\s\n\r]*)/gi;function findNode(n){if(!n||n.nodeType!=1||n==document.body||n==document){return false;} -var pn=[n],p=n;while((p=p.parentNode)&&p.nodeType==1&&p.tagName.toUpperCase()!='HTML'){pn.unshift(p);} -var cn=hnode;for(var i=0,len=pn.length;i<len;i++){cn.expand();cn=cn.findChild('htmlNode',pn[i]);if(!cn){return false;}} -cn.select();var a=cn.ui.anchor;treeEl.dom.scrollTop=Math.max(0,a.offsetTop-10);cn.highlight();return true;} -function nodeTitle(n){var s=n.tagName;if(n.id){s+='#'+n.id;}else if(n.className){s+='.'+n.className;} -return s;} -function onNodeSelect(t,n,last){if(last&&last.unframe){last.unframe();} -var props={};if(n&&n.htmlNode){if(frameEl.pressed){n.frame();} -if(inspecting){return;} -addStyle.enable();reload.setDisabled(n.leaf);var dom=n.htmlNode;stylePanel.setTitle(nodeTitle(dom));if(styles&&!showAll.pressed){var s=dom.style?dom.style.cssText:'';if(s){var m;while((m=styleRe.exec(s))!=null){props[m[1].toLowerCase()]=m[2];}}}else if(styles){var cl=Ext.debug.cssList;var s=dom.style,fly=Ext.fly(dom);if(s){for(var i=0,len=cl.length;i<len;i++){var st=cl[i];var v=s[st]||fly.getStyle(st);if(v!=undefined&&v!==null&&v!==''){props[st]=v;}}}}else{for(var a in dom){var v=dom[a];if((isNaN(a+10))&&v!=undefined&&v!==null&&v!==''&&!(Ext.isGecko&&a[0]==a[0].toUpperCase())){props[a]=v;}}}}else{if(inspecting){return;} -addStyle.disable();reload.disabled();} -stylesGrid.setSource(props);stylesGrid.treeNode=n;stylesGrid.view.fitColumns();} -var filterIds='^(?:';var eds=stylesGrid.colModel.editors;for(var edType in eds){filterIds+=eds[edType].id+'|';} -Ext.each([dlg.shim?dlg.shim.id:'noshim',dlg.proxyDrag.id],function(id){filterIds+=id+'|';});filterIds+=dlg.el.id;filterIds+=')$';var filterRe=new RegExp(filterIds);var loader=new Ext.tree.TreeLoader();loader.load=function(n,cb){var isBody=n.htmlNode==bd.dom;var cn=n.htmlNode.childNodes;for(var i=0,c;c=cn[i];i++){if(isBody&&filterRe.test(c.id)){continue;} -if(c.nodeType==1){n.appendChild(new Ext.debug.HtmlNode(c));}else if(c.nodeType==3&&!nonSpace.test(c.nodeValue)){n.appendChild(new Ext.tree.TreeNode({text:'<em>'+ellipsis(html(String(c.nodeValue)),35)+'</em>',cls:'x-tree-noicon'}));}} -cb();};var tree=new Ext.tree.TreePanel(treeEl,{enableDD:false,loader:loader,lines:false,rootVisible:false,animate:false,hlColor:'ffff9c'});tree.getSelectionModel().on('selectionchange',onNodeSelect,null,{buffer:250});var root=tree.setRootNode(new Ext.tree.TreeNode('Ext'));hnode=root.appendChild(new Ext.debug.HtmlNode(document.getElementsByTagName('html')[0]));tree.render();Ext.debug.console=new Ext.JsonView(clayout.main.getEl(),'<pre><xmp>> {msg}</xmp></pre>');Ext.debug.console.jsonData=[];Ext.debug.dialog=dlg;},show:function(){var d=Ext.debug;if(!d.dialog){d.init();} -if(!d.dialog.isVisible()){d.dialog.show();}},hide:function(){if(Ext.debug.dialog){Ext.debug.dialog.hide();}},log:function(arg1,arg2,etc){Ext.debug.show();var m="";for(var i=0,len=arguments.length;i<len;i++){m+=(i==0?"":", ")+arguments[i];} -var cn=Ext.debug.console;cn.jsonData.unshift({msg:m});cn.refresh();},logf:function(format,arg1,arg2,etc){Ext.debug.log(String.format.apply(String,arguments));},dump:function(o){if(typeof o=='string'||typeof o=='number'||typeof o=='undefined'||o instanceof Date){Ext.debug.log(o);}else if(!o){Ext.debug.log("null");}else if(typeof o!="object"){Ext.debug.log('Unknown return type');}else if(o instanceof Array){Ext.debug.log('['+o.join(',')+']');}else{var b=["{\n"];for(var key in o){var to=typeof o[key];if(to!="function"&&to!="object"){b.push(String.format(" {0}: {1},\n",key,o[key]));}} -var s=b.join("");if(s.length>3){s=s.substr(0,s.length-2);} -Ext.debug.log(s+"\n}");}},_timers:{},time:function(name){name=name||"def";Ext._timers[name]=new Date().getTime();},timeEnd:function(name,printResults){var t=new Date().getTime();name=name||"def";var v=String.format("{0} ms",t-Ext._timers[name]);Ext._timers[name]=new Date().getTime();if(printResults!==false){Ext.debug.log('Timer '+(name=="def"?v:name+": "+v));} -return v;}};Ext.debug.HtmlNode=function(){var html=Ext.util.Format.htmlEncode;var ellipsis=Ext.util.Format.ellipsis;var nonSpace=/^\s*$/;var attrs=[{n:'id',v:'id'},{n:'className',v:'class'},{n:'name',v:'name'},{n:'type',v:'type'},{n:'src',v:'src'},{n:'href',v:'href'}];function hasChild(n){for(var i=0,c;c=n.childNodes[i];i++){if(c.nodeType==1){return true;}} -return false;} -function renderNode(n,leaf){var tag=n.tagName.toLowerCase();var s='<'+tag;for(var i=0,len=attrs.length;i<len;i++){var a=attrs[i];var v=n[a.n];if(v&&!nonSpace.test(v)){s+=' '+a.v+'="<i>'+html(v)+'</i>"';}} -var style=n.style?n.style.cssText:'';if(style){s+=' style="<i>'+html(style.toLowerCase())+'</i>"';} -if(leaf&&n.childNodes.length>0){s+='><em>'+ellipsis(html(String(n.innerHTML)),35)+'</em></'+tag+'>';}else if(leaf){s+=' />';}else{s+='>';} -return s;} -var HtmlNode=function(n){var leaf=!hasChild(n);this.htmlNode=n;this.tagName=n.tagName.toLowerCase();var attr={text:renderNode(n,leaf),leaf:leaf,cls:'x-tree-noicon'};HtmlNode.superclass.constructor.call(this,attr);this.attributes.htmlNode=n;if(!leaf){this.on('expand',this.onExpand,this);this.on('collapse',this.onCollapse,this);}};Ext.extend(HtmlNode,Ext.tree.AsyncTreeNode,{cls:'x-tree-noicon',preventHScroll:true,refresh:function(highlight){var leaf=!hasChild(this.htmlNode);this.setText(renderNode(this.htmlNode,leaf));if(highlight){Ext.fly(this.ui.textNode).highlight();}},onExpand:function(){if(!this.closeNode&&this.parentNode){this.closeNode=this.parentNode.insertBefore(new Ext.tree.TreeNode({text:'</'+this.tagName+'>',cls:'x-tree-noicon'}),this.nextSibling);}else if(this.closeNode){this.closeNode.ui.show();}},onCollapse:function(){if(this.closeNode){this.closeNode.ui.hide();}},render:function(bulkRender){HtmlNode.superclass.render.call(this,bulkRender);},highlightNode:function(){},highlight:function(){},frame:function(){this.htmlNode.style.border='1px solid #0000ff';},unframe:function(){this.htmlNode.style.border='';}});return HtmlNode;}();Ext.debug.InnerLayout=function(id,w,cfg){var el=Ext.DomHelper.append(document.body,{id:id});var layout=new Ext.BorderLayout(el,{north:{initialSize:28},center:{titlebar:false},east:{split:true,initialSize:w,titlebar:true}});Ext.debug.InnerLayout.superclass.constructor.call(this,layout,cfg);layout.beginUpdate();var tbPanel=layout.add('north',new Ext.ContentPanel({autoCreate:true,fitToFrame:true}));this.main=layout.add('center',new Ext.ContentPanel({autoCreate:true,fitToFrame:true,autoScroll:true}));this.tbar=new Ext.Toolbar(tbPanel.el);var mtbEl=tbPanel.resizeEl=tbPanel.el.child('div.x-toolbar');mtbEl.setStyle('border-bottom','0 none');layout.endUpdate(true);};Ext.extend(Ext.debug.InnerLayout,Ext.NestedLayoutPanel,{add:function(){return this.layout.add.apply(this.layout,arguments);}});Ext.debug.cssList=['background-color','border','border-color','border-spacing','border-style','border-top','border-right','border-bottom','border-left','border-top-color','border-right-color','border-bottom-color','border-left-color','border-top-width','border-right-width','border-bottom-width','border-left-width','border-width','bottom','color','font-size','font-size-adjust','font-stretch','font-style','height','left','letter-spacing','line-height','margin','margin-top','margin-right','margin-bottom','margin-left','marker-offset','max-height','max-width','min-height','min-width','orphans','outline','outline-color','outline-style','outline-width','overflow','padding','padding-top','padding-right','padding-bottom','padding-left','quotes','right','size','text-indent','top','width','word-spacing','z-index','opacity','outline-offset'];if(typeof console=='undefined'){console=Ext.debug;} -Ext.EventManager.on(window,'load',function(){Ext.get(document).on('keydown',function(e){if(e.ctrlKey&&e.shiftKey&&e.getKey()==e.HOME){Ext.debug.show();}});});Ext.print=Ext.log=Ext.debug.log;Ext.printf=Ext.logf=Ext.debug.logf;Ext.dump=Ext.debug.dump;Ext.timer=Ext.debug.time;Ext.timerEnd=Ext.debug.timeEnd; diff --git a/lib/web/extjs/ext-core-debug.js b/lib/web/extjs/ext-core-debug.js deleted file mode 100644 index 7461104e325cbe2c5cf3e5f6c91ea7bda20c0140..0000000000000000000000000000000000000000 --- a/lib/web/extjs/ext-core-debug.js +++ /dev/null @@ -1,5185 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.DomHelper = function(){ - var tempTableEl = null; - var emptyTags = /^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i; - - // build as innerHTML where available - - var createHtml = function(o){ - if(typeof o == 'string'){ - return o; - } - var b = ""; - if(!o.tag){ - o.tag = "div"; - } - b += "<" + o.tag; - for(var attr in o){ - if(attr == "tag" || attr == "children" || attr == "cn" || attr == "html" || typeof o[attr] == "function") continue; - if(attr == "style"){ - var s = o["style"]; - if(typeof s == "function"){ - s = s.call(); - } - if(typeof s == "string"){ - b += ' style="' + s + '"'; - }else if(typeof s == "object"){ - b += ' style="'; - for(var key in s){ - if(typeof s[key] != "function"){ - b += key + ":" + s[key] + ";"; - } - } - b += '"'; - } - }else{ - if(attr == "cls"){ - b += ' class="' + o["cls"] + '"'; - }else if(attr == "htmlFor"){ - b += ' for="' + o["htmlFor"] + '"'; - }else{ - b += " " + attr + '="' + o[attr] + '"'; - } - } - } - if(emptyTags.test(o.tag)){ - b += "/>"; - }else{ - b += ">"; - var cn = o.children || o.cn; - if(cn){ - if(cn instanceof Array){ - for(var i = 0, len = cn.length; i < len; i++) { - b += createHtml(cn[i], b); - } - }else{ - b += createHtml(cn, b); - } - } - if(o.html){ - b += o.html; - } - b += "</" + o.tag + ">"; - } - return b; - }; - - // build as dom - - var createDom = function(o, parentNode){ - var el = document.createElement(o.tag); - var useSet = el.setAttribute ? true : false; // In IE some elements don't have setAttribute - for(var attr in o){ - if(attr == "tag" || attr == "children" || attr == "cn" || attr == "html" || attr == "style" || typeof o[attr] == "function") continue; - if(attr=="cls"){ - el.className = o["cls"]; - }else{ - if(useSet) el.setAttribute(attr, o[attr]); - else el[attr] = o[attr]; - } - } - Ext.DomHelper.applyStyles(el, o.style); - var cn = o.children || o.cn; - if(cn){ - if(cn instanceof Array){ - for(var i = 0, len = cn.length; i < len; i++) { - createDom(cn[i], el); - } - }else{ - createDom(cn, el); - } - } - if(o.html){ - el.innerHTML = o.html; - } - if(parentNode){ - parentNode.appendChild(el); - } - return el; - }; - - var ieTable = function(depth, s, h, e){ - tempTableEl.innerHTML = [s, h, e].join(''); - var i = -1, el = tempTableEl; - while(++i < depth){ - el = el.firstChild; - } - return el; - }; - - // kill repeat to save bytes - var ts = '<table>', - te = '</table>', - tbs = ts+'<tbody>', - tbe = '</tbody>'+te, - trs = tbs + '<tr>', - tre = '</tr>'+tbe; - - - var insertIntoTable = function(tag, where, el, html){ - if(!tempTableEl){ - tempTableEl = document.createElement('div'); - } - var node; - var before = null; - if(tag == 'td'){ - if(where == 'afterbegin' || where == 'beforeend'){ // INTO a TD - return; - } - if(where == 'beforebegin'){ - before = el; - el = el.parentNode; - } else{ - before = el.nextSibling; - el = el.parentNode; - } - node = ieTable(4, trs, html, tre); - } - else if(tag == 'tr'){ - if(where == 'beforebegin'){ - before = el; - el = el.parentNode; - node = ieTable(3, tbs, html, tbe); - } else if(where == 'afterend'){ - before = el.nextSibling; - el = el.parentNode; - node = ieTable(3, tbs, html, tbe); - } else{ // INTO a TR - if(where == 'afterbegin'){ - before = el.firstChild; - } - node = ieTable(4, trs, html, tre); - } - } else if(tag == 'tbody'){ - if(where == 'beforebegin'){ - before = el; - el = el.parentNode; - node = ieTable(2, ts, html, te); - } else if(where == 'afterend'){ - before = el.nextSibling; - el = el.parentNode; - node = ieTable(2, ts, html, te); - } else{ - if(where == 'afterbegin'){ - before = el.firstChild; - } - node = ieTable(3, tbs, html, tbe); - } - } else{ // TABLE - if(where == 'beforebegin' || where == 'afterend'){ // OUTSIDE the table - return; - } - if(where == 'afterbegin'){ - before = el.firstChild; - } - node = ieTable(2, ts, html, te); - } - el.insertBefore(node, before); - return node; - }; - - return { - - useDom : false, - - - markup : function(o){ - return createHtml(o); - }, - - - applyStyles : function(el, styles){ - if(styles){ - el = Ext.fly(el); - if(typeof styles == "string"){ - var re = /\s?([a-z\-]*)\:\s?([^;]*);?/gi; - var matches; - while ((matches = re.exec(styles)) != null){ - el.setStyle(matches[1], matches[2]); - } - }else if (typeof styles == "object"){ - for (var style in styles){ - el.setStyle(style, styles[style]); - } - }else if (typeof styles == "function"){ - Ext.DomHelper.applyStyles(el, styles.call()); - } - } - }, - - - insertHtml : function(where, el, html){ - where = where.toLowerCase(); - if(el.insertAdjacentHTML){ - var tag = el.tagName.toLowerCase(); - if(tag == "table" || tag == "tbody" || tag == "tr" || tag == 'td'){ - var rs; - if(rs = insertIntoTable(tag, where, el, html)){ - return rs; - } - } - switch(where){ - case "beforebegin": - el.insertAdjacentHTML(where, html); - return el.previousSibling; - case "afterbegin": - el.insertAdjacentHTML(where, html); - return el.firstChild; - case "beforeend": - el.insertAdjacentHTML(where, html); - return el.lastChild; - case "afterend": - el.insertAdjacentHTML(where, html); - return el.nextSibling; - } - throw 'Illegal insertion point -> "' + where + '"'; - } - var range = el.ownerDocument.createRange(); - var frag; - switch(where){ - case "beforebegin": - range.setStartBefore(el); - frag = range.createContextualFragment(html); - el.parentNode.insertBefore(frag, el); - return el.previousSibling; - case "afterbegin": - if(el.firstChild){ - range.setStartBefore(el.firstChild); - frag = range.createContextualFragment(html); - el.insertBefore(frag, el.firstChild); - return el.firstChild; - }else{ - el.innerHTML = html; - return el.firstChild; - } - case "beforeend": - if(el.lastChild){ - range.setStartAfter(el.lastChild); - frag = range.createContextualFragment(html); - el.appendChild(frag); - return el.lastChild; - }else{ - el.innerHTML = html; - return el.lastChild; - } - case "afterend": - range.setStartAfter(el); - frag = range.createContextualFragment(html); - el.parentNode.insertBefore(frag, el.nextSibling); - return el.nextSibling; - } - throw 'Illegal insertion point -> "' + where + '"'; - }, - - - insertBefore : function(el, o, returnElement){ - return this.doInsert(el, o, returnElement, "beforeBegin"); - }, - - - insertAfter : function(el, o, returnElement){ - return this.doInsert(el, o, returnElement, "afterEnd", "nextSibling"); - }, - - - insertFirst : function(el, o, returnElement){ - return this.doInsert(el, o, returnElement, "afterBegin"); - }, - - // private - doInsert : function(el, o, returnElement, pos, sibling){ - el = Ext.getDom(el); - var newNode; - if(this.useDom){ - newNode = createDom(o, null); - el.parentNode.insertBefore(newNode, sibling ? el[sibling] : el); - }else{ - var html = createHtml(o); - newNode = this.insertHtml(pos, el, html); - } - return returnElement ? Ext.get(newNode, true) : newNode; - }, - - - append : function(el, o, returnElement){ - el = Ext.getDom(el); - var newNode; - if(this.useDom){ - newNode = createDom(o, null); - el.appendChild(newNode); - }else{ - var html = createHtml(o); - newNode = this.insertHtml("beforeEnd", el, html); - } - return returnElement ? Ext.get(newNode, true) : newNode; - }, - - - overwrite : function(el, o, returnElement){ - el = Ext.getDom(el); - el.innerHTML = createHtml(o); - return returnElement ? Ext.get(el.firstChild, true) : el.firstChild; - }, - - - createTemplate : function(o){ - var html = createHtml(o); - return new Ext.Template(html); - } - }; -}(); - - -Ext.Template = function(html){ - if(html instanceof Array){ - html = html.join(""); - }else if(arguments.length > 1){ - html = Array.prototype.join.call(arguments, ""); - } - - this.html = html; - -}; -Ext.Template.prototype = { - - applyTemplate : function(values){ - if(this.compiled){ - return this.compiled(values); - } - var useF = this.disableFormats !== true; - var fm = Ext.util.Format, tpl = this; - var fn = function(m, name, format, args){ - if(format && useF){ - if(format.substr(0, 5) == "this."){ - return tpl.call(format.substr(5), values[name], values); - }else{ - if(args){ - // quoted values are required for strings in compiled templates, - // but for non compiled we need to strip them - // quoted reversed for jsmin - var re = /^\s*['"](.*)["']\s*$/; - args = args.split(','); - for(var i = 0, len = args.length; i < len; i++){ - args[i] = args[i].replace(re, "$1"); - } - args = [values[name]].concat(args); - }else{ - args = [values[name]]; - } - return fm[format].apply(fm, args); - } - }else{ - return values[name] !== undefined ? values[name] : ""; - } - }; - return this.html.replace(this.re, fn); - }, - - - set : function(html, compile){ - this.html = html; - this.compiled = null; - if(compile){ - this.compile(); - } - return this; - }, - - - disableFormats : false, - - - re : /\{([\w-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g, - - - compile : function(){ - var fm = Ext.util.Format; - var useF = this.disableFormats !== true; - var sep = Ext.isGecko ? "+" : ","; - var fn = function(m, name, format, args){ - if(format && useF){ - args = args ? ',' + args : ""; - if(format.substr(0, 5) != "this."){ - format = "fm." + format + '('; - }else{ - format = 'this.call("'+ format.substr(5) + '", '; - args = ", values"; - } - }else{ - args= ''; format = "(values['" + name + "'] == undefined ? '' : "; - } - return "'"+ sep + format + "values['" + name + "']" + args + ")"+sep+"'"; - }; - var body; - // branched to use + in gecko and [].join() in others - if(Ext.isGecko){ - body = "this.compiled = function(values){ return '" + - this.html.replace(/(\r\n|\n)/g, '\\n').replace(/'/g, "\\'").replace(this.re, fn) + - "';};"; - }else{ - body = ["this.compiled = function(values){ return ['"]; - body.push(this.html.replace(/(\r\n|\n)/g, '\\n').replace("'", "\\'").replace(this.re, fn)); - body.push("'].join('');};"); - body = body.join(''); - } - eval(body); - return this; - }, - - // private function used to call members - call : function(fnName, value, allValues){ - return this[fnName](value, allValues); - }, - - - insertFirst: function(el, values, returnElement){ - return this.doInsert('afterBegin', el, values, returnElement); - }, - - - insertBefore: function(el, values, returnElement){ - return this.doInsert('beforeBegin', el, values, returnElement); - }, - - - insertAfter : function(el, values, returnElement){ - return this.doInsert('afterEnd', el, values, returnElement); - }, - - - append : function(el, values, returnElement){ - return this.doInsert('beforeEnd', el, values, returnElement); - }, - - doInsert : function(where, el, values, returnEl){ - el = Ext.getDom(el); - var newNode = Ext.DomHelper.insertHtml(where, el, this.applyTemplate(values)); - return returnEl ? Ext.get(newNode, true) : newNode; - }, - - - overwrite : function(el, values, returnElement){ - el = Ext.getDom(el); - el.innerHTML = this.applyTemplate(values); - return returnElement ? Ext.get(el.firstChild, true) : el.firstChild; - } -}; - -Ext.Template.prototype.apply = Ext.Template.prototype.applyTemplate; - -// backwards compat -Ext.DomHelper.Template = Ext.Template; - - -Ext.Template.from = function(el){ - el = Ext.getDom(el); - return new Ext.Template(el.value || el.innerHTML); -}; - - -Ext.MasterTemplate = function(){ - Ext.MasterTemplate.superclass.constructor.apply(this, arguments); - this.originalHtml = this.html; - var st = {}; - var m, re = this.subTemplateRe; - re.lastIndex = 0; - var subIndex = 0; - while(m = re.exec(this.html)){ - var name = m[1], content = m[2]; - st[subIndex] = { - name: name, - index: subIndex, - buffer: [], - tpl : new Ext.Template(content) - }; - if(name){ - st[name] = st[subIndex]; - } - st[subIndex].tpl.compile(); - st[subIndex].tpl.call = this.call.createDelegate(this); - subIndex++; - } - this.subCount = subIndex; - this.subs = st; -}; -Ext.extend(Ext.MasterTemplate, Ext.Template, { - - subTemplateRe : /<tpl(?:\sname="([\w-]+)")?>((?:.|\n)*?)<\/tpl>/gi, - - - add : function(name, values){ - if(arguments.length == 1){ - values = arguments[0]; - name = 0; - } - var s = this.subs[name]; - s.buffer[s.buffer.length] = s.tpl.apply(values); - return this; - }, - - - fill : function(name, values, reset){ - var a = arguments; - if(a.length == 1 || (a.length == 2 && typeof a[1] == "boolean")){ - values = a[0]; - name = 0; - reset = a[1]; - } - if(reset){ - this.reset(); - } - for(var i = 0, len = values.length; i < len; i++){ - this.add(name, values[i]); - } - return this; - }, - - - reset : function(){ - var s = this.subs; - for(var i = 0; i < this.subCount; i++){ - s[i].buffer = []; - } - return this; - }, - - applyTemplate : function(values){ - var s = this.subs; - var replaceIndex = -1; - this.html = this.originalHtml.replace(this.subTemplateRe, function(m, name){ - return s[++replaceIndex].buffer.join(""); - }); - return Ext.MasterTemplate.superclass.applyTemplate.call(this, values); - }, - - apply : function(){ - return this.applyTemplate.apply(this, arguments); - }, - - compile : function(){return this;} -}); - - -Ext.MasterTemplate.prototype.addAll = Ext.MasterTemplate.prototype.fill; - -Ext.MasterTemplate.from = function(el){ - el = Ext.getDom(el); - return new Ext.MasterTemplate(el.value || el.innerHTML); -}; - - -Ext.DomQuery = function(){ - var cache = {}, simpleCache = {}, valueCache = {}; - var nonSpace = /\S/; - var trimRe = /^\s+|\s+$/g; - var tplRe = /\{(\d+)\}/g; - var modeRe = /^(\s?[\/>]\s?|\s|$)/; - var tagTokenRe = /^(#)?([\w-\*]+)/; - - function child(p, index){ - var i = 0; - var n = p.firstChild; - while(n){ - if(n.nodeType == 1){ - if(++i == index){ - return n; - } - } - n = n.nextSibling; - } - return null; - }; - - function next(n){ - while((n = n.nextSibling) && n.nodeType != 1); - return n; - }; - - function prev(n){ - while((n = n.previousSibling) && n.nodeType != 1); - return n; - }; - - function clean(d){ - var n = d.firstChild, ni = -1; - while(n){ - var nx = n.nextSibling; - if(n.nodeType == 3 && !nonSpace.test(n.nodeValue)){ - d.removeChild(n); - }else{ - n.nodeIndex = ++ni; - } - n = nx; - } - return this; - }; - - function byClassName(c, a, v, re, cn){ - if(!v){ - return c; - } - var r = []; - for(var i = 0, ci; ci = c[i]; i++){ - cn = ci.className; - if(cn && (' '+cn+' ').indexOf(v) != -1){ - r[r.length] = ci; - } - } - return r; - }; - - function attrValue(n, attr){ - if(!n.tagName && typeof n.length != "undefined"){ - n = n[0]; - } - if(!n){ - return null; - } - if(attr == "for"){ - return n.htmlFor; - } - if(attr == "class" || attr == "className"){ - return n.className; - } - return n.getAttribute(attr) || n[attr]; - - }; - - function getNodes(ns, mode, tagName){ - var result = [], cs; - if(!ns){ - return result; - } - mode = mode ? mode.replace(trimRe, "") : ""; - tagName = tagName || "*"; - if(typeof ns.getElementsByTagName != "undefined"){ - ns = [ns]; - } - if(mode != "/" && mode != ">"){ - for(var i = 0, ni; ni = ns[i]; i++){ - cs = ni.getElementsByTagName(tagName); - for(var j = 0, ci; ci = cs[j]; j++){ - result[result.length] = ci; - } - } - }else{ - for(var i = 0, ni; ni = ns[i]; i++){ - var cn = ni.getElementsByTagName(tagName); - for(var j = 0, cj; cj = cn[j]; j++){ - if(cj.parentNode == ni){ - result[result.length] = cj; - } - } - } - } - return result; - }; - - function concat(a, b){ - if(b.slice){ - return a.concat(b); - } - for(var i = 0, l = b.length; i < l; i++){ - a[a.length] = b[i]; - } - return a; - } - - function byTag(cs, tagName){ - if(cs.tagName || cs == document){ - cs = [cs]; - } - if(!tagName){ - return cs; - } - var r = []; tagName = tagName.toLowerCase(); - for(var i = 0, ci; ci = cs[i]; i++){ - if(ci.nodeType == 1 && ci.tagName.toLowerCase()==tagName){ - r[r.length] = ci; - } - } - return r; - }; - - function byId(cs, attr, id){ - if(cs.tagName || cs == document){ - cs = [cs]; - } - if(!id){ - return cs; - } - var r = []; - for(var i = 0,ci; ci = cs[i]; i++){ - if(ci && ci.id == id){ - r[r.length] = ci; - return r; - } - } - return r; - }; - - function byAttribute(cs, attr, value, op, custom){ - var r = [], st = custom=="{"; - var f = Ext.DomQuery.operators[op]; - for(var i = 0; ci = cs[i]; i++){ - var a; - if(st){ - a = Ext.DomQuery.getStyle(ci, attr); - } - else if(attr == "class" || attr == "className"){ - a = ci.className; - }else if(attr == "for"){ - a = ci.htmlFor; - }else if(attr == "href"){ - a = ci.getAttribute("href", 2); - }else{ - a = ci.getAttribute(attr); - } - if((f && f(a, value)) || (!f && a)){ - r[r.length] = ci; - } - } - return r; - }; - - function byPseudo(cs, name, value){ - return Ext.DomQuery.pseudos[name](cs, value); - }; - - // This is for IE MSXML which does not support expandos. - // IE runs the same speed using setAttribute, however FF slows way down - // and Safari completely fails so they need to continue to use expandos. - var isIE = window.ActiveXObject ? true : false; - - var key = 30803; - - function nodupIEXml(cs){ - var d = ++key; - cs[0].setAttribute("_nodup", d); - var r = [cs[0]]; - for(var i = 1, len = cs.length; i < len; i++){ - var c = cs[i]; - if(!c.getAttribute("_nodup") != d){ - c.setAttribute("_nodup", d); - r[r.length] = c; - } - } - for(var i = 0, len = cs.length; i < len; i++){ - cs[i].removeAttribute("_nodup"); - } - return r; - } - - function nodup(cs){ - if(!cs){ - return []; - } - var len = cs.length, c, i, r = cs, cj; - if(!len || typeof cs.nodeType != "undefined" || len == 1){ - return cs; - } - if(isIE && typeof cs[0].selectSingleNode != "undefined"){ - return nodupIEXml(cs); - } - var d = ++key; - cs[0]._nodup = d; - for(i = 1; c = cs[i]; i++){ - if(c._nodup != d){ - c._nodup = d; - }else{ - r = []; - for(var j = 0; j < i; j++){ - r[r.length] = cs[j]; - } - for(j = i+1; cj = cs[j]; j++){ - if(cj._nodup != d){ - cj._nodup = d; - r[r.length] = cj; - } - } - return r; - } - } - return r; - } - - function quickDiffIEXml(c1, c2){ - var d = ++key; - for(var i = 0, len = c1.length; i < len; i++){ - c1[i].setAttribute("_qdiff", d); - } - var r = []; - for(var i = 0, len = c2.length; i < len; i++){ - if(c2[i].getAttribute("_qdiff") != d){ - r[r.length] = c2[i]; - } - } - for(var i = 0, len = c1.length; i < len; i++){ - c1[i].removeAttribute("_qdiff"); - } - return r; - } - - function quickDiff(c1, c2){ - var len1 = c1.length; - if(!len1){ - return c2; - } - if(isIE && c1[0].selectSingleNode){ - return quickDiffIEXml(c1, c2); - } - var d = ++key; - for(var i = 0; i < len1; i++){ - c1[i]._qdiff = d; - } - var r = []; - for(var i = 0, len = c2.length; i < len; i++){ - if(c2[i]._qdiff != d){ - r[r.length] = c2[i]; - } - } - return r; - } - - function quickId(ns, mode, root, id){ - if(ns == root){ - var d = root.ownerDocument || root; - return d.getElementById(id); - } - ns = getNodes(ns, mode, "*"); - return byId(ns, null, id); - } - - return { - getStyle : function(el, name){ - return Ext.fly(el).getStyle(name); - }, - - compile : function(path, type){ - type = type || "select"; - - var fn = ["var f = function(root){\n var mode; var n = root || document;\n"]; - var q = path, mode, lq; - var tk = Ext.DomQuery.matchers; - var tklen = tk.length; - var mm; - - // accept leading mode switch - var lmode = q.match(modeRe); - if(lmode && lmode[1]){ - fn[fn.length] = 'mode="'+lmode[1]+'";'; - q = q.replace(lmode[1], ""); - } - // strip leading slashes - while(path.substr(0, 1)=="/"){ - path = path.substr(1); - } - - while(q && lq != q){ - lq = q; - var tm = q.match(tagTokenRe); - if(type == "select"){ - if(tm){ - if(tm[1] == "#"){ - fn[fn.length] = 'n = quickId(n, mode, root, "'+tm[2]+'");'; - }else{ - fn[fn.length] = 'n = getNodes(n, mode, "'+tm[2]+'");'; - } - q = q.replace(tm[0], ""); - }else if(q.substr(0, 1) != '@'){ - fn[fn.length] = 'n = getNodes(n, mode, "*");'; - } - }else{ - if(tm){ - if(tm[1] == "#"){ - fn[fn.length] = 'n = byId(n, null, "'+tm[2]+'");'; - }else{ - fn[fn.length] = 'n = byTag(n, "'+tm[2]+'");'; - } - q = q.replace(tm[0], ""); - } - } - while(!(mm = q.match(modeRe))){ - var matched = false; - for(var j = 0; j < tklen; j++){ - var t = tk[j]; - var m = q.match(t.re); - if(m){ - fn[fn.length] = t.select.replace(tplRe, function(x, i){ - return m[i]; - }); - q = q.replace(m[0], ""); - matched = true; - break; - } - } - // prevent infinite loop on bad selector - if(!matched){ - throw 'Error parsing selector, parsing failed at "' + q + '"'; - } - } - if(mm[1]){ - fn[fn.length] = 'mode="'+mm[1]+'";'; - q = q.replace(mm[1], ""); - } - } - fn[fn.length] = "return nodup(n);\n}"; - eval(fn.join("")); - return f; - }, - - - select : function(path, root, type){ - if(!root || root == document){ - root = document; - } - if(typeof root == "string"){ - root = document.getElementById(root); - } - var paths = path.split(","); - var results = []; - for(var i = 0, len = paths.length; i < len; i++){ - var p = paths[i].replace(trimRe, ""); - if(!cache[p]){ - cache[p] = Ext.DomQuery.compile(p); - if(!cache[p]){ - throw p + " is not a valid selector"; - } - } - var result = cache[p](root); - if(result && result != document){ - results = results.concat(result); - } - } - return results; - }, - - - selectNode : function(path, root){ - return Ext.DomQuery.select(path, root)[0]; - }, - - - selectValue : function(path, root, defaultValue){ - path = path.replace(trimRe, ""); - if(!valueCache[path]){ - valueCache[path] = Ext.DomQuery.compile(path, "select"); - } - var n = valueCache[path](root); - n = n[0] ? n[0] : n; - var v = (n && n.firstChild ? n.firstChild.nodeValue : null); - return (v === null ? defaultValue : v); - }, - - - selectNumber : function(path, root, defaultValue){ - var v = Ext.DomQuery.selectValue(path, root, defaultValue || 0); - return parseFloat(v); - }, - - - is : function(el, ss){ - if(typeof el == "string"){ - el = document.getElementById(el); - } - var isArray = (el instanceof Array); - var result = Ext.DomQuery.filter(isArray ? el : [el], ss); - return isArray ? (result.length == el.length) : (result.length > 0); - }, - - - filter : function(els, ss, nonMatches){ - ss = ss.replace(trimRe, ""); - if(!simpleCache[ss]){ - simpleCache[ss] = Ext.DomQuery.compile(ss, "simple"); - } - var result = simpleCache[ss](els); - return nonMatches ? quickDiff(result, els) : result; - }, - - - matchers : [{ - re: /^\.([\w-]+)/, - select: 'n = byClassName(n, null, " {1} ");' - }, { - re: /^\:([\w-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/, - select: 'n = byPseudo(n, "{1}", "{2}");' - },{ - re: /^(?:([\[\{])(?:@)?([\w-]+)\s?(?:(=|.=)\s?['"]?(.*?)["']?)?[\]\}])/, - select: 'n = byAttribute(n, "{2}", "{4}", "{3}", "{1}");' - }, { - re: /^#([\w-]+)/, - select: 'n = byId(n, null, "{1}");' - },{ - re: /^@([\w-]+)/, - select: 'return {firstChild:{nodeValue:attrValue(n, "{1}")}};' - } - ], - - - operators : { - "=" : function(a, v){ - return a == v; - }, - "!=" : function(a, v){ - return a != v; - }, - "^=" : function(a, v){ - return a && a.substr(0, v.length) == v; - }, - "$=" : function(a, v){ - return a && a.substr(a.length-v.length) == v; - }, - "*=" : function(a, v){ - return a && a.indexOf(v) !== -1; - }, - "%=" : function(a, v){ - return (a % v) == 0; - } - }, - - - pseudos : { - "first-child" : function(c){ - var r = [], n; - for(var i = 0, ci; ci = n = c[i]; i++){ - while((n = n.previousSibling) && n.nodeType != 1); - if(!n){ - r[r.length] = ci; - } - } - return r; - }, - - "last-child" : function(c){ - var r = []; - for(var i = 0, ci; ci = n = c[i]; i++){ - while((n = n.nextSibling) && n.nodeType != 1); - if(!n){ - r[r.length] = ci; - } - } - return r; - }, - - "nth-child" : function(c, a){ - var r = []; - if(a != "odd" && a != "even"){ - for(var i = 0, ci; ci = c[i]; i++){ - var m = child(ci.parentNode, a); - if(m == ci){ - r[r.length] = m; - } - } - return r; - } - var p; - // first let's clean up the parent nodes - for(var i = 0, l = c.length; i < l; i++){ - var cp = c[i].parentNode; - if(cp != p){ - clean(cp); - p = cp; - } - } - // then lets see if we match - for(var i = 0, ci; ci = c[i]; i++){ - var m = false; - if(a == "odd"){ - m = ((ci.nodeIndex+1) % 2 == 1); - }else if(a == "even"){ - m = ((ci.nodeIndex+1) % 2 == 0); - } - if(m){ - r[r.length] = ci; - } - } - return r; - }, - - "only-child" : function(c){ - var r = []; - for(var i = 0, ci; ci = c[i]; i++){ - if(!prev(ci) && !next(ci)){ - r[r.length] = ci; - } - } - return r; - }, - - "empty" : function(c){ - var r = []; - for(var i = 0, ci; ci = c[i]; i++){ - var cns = ci.childNodes, j = 0, cn, empty = true; - while(cn = cns[j]){ - ++j; - if(cn.nodeType == 1 || cn.nodeType == 3){ - empty = false; - break; - } - } - if(empty){ - r[r.length] = ci; - } - } - return r; - }, - - "contains" : function(c, v){ - var r = []; - for(var i = 0, ci; ci = c[i]; i++){ - if(ci.innerHTML.indexOf(v) !== -1){ - r[r.length] = ci; - } - } - return r; - }, - - "nodeValue" : function(c, v){ - var r = []; - for(var i = 0, ci; ci = c[i]; i++){ - if(ci.firstChild && ci.firstChild.nodeValue == v){ - r[r.length] = ci; - } - } - return r; - }, - - "checked" : function(c){ - var r = []; - for(var i = 0, ci; ci = c[i]; i++){ - if(ci.checked == true){ - r[r.length] = ci; - } - } - return r; - }, - - "not" : function(c, ss){ - return Ext.DomQuery.filter(c, ss, true); - }, - - "odd" : function(c){ - return this["nth-child"](c, "odd"); - }, - - "even" : function(c){ - return this["nth-child"](c, "even"); - }, - - "nth" : function(c, a){ - return c[a-1] || []; - }, - - "first" : function(c){ - return c[0] || []; - }, - - "last" : function(c){ - return c[c.length-1] || []; - }, - - "has" : function(c, ss){ - var s = Ext.DomQuery.select; - var r = []; - for(var i = 0, ci; ci = c[i]; i++){ - if(s(ss, ci).length > 0){ - r[r.length] = ci; - } - } - return r; - }, - - "next" : function(c, ss){ - var is = Ext.DomQuery.is; - var r = []; - for(var i = 0, ci; ci = c[i]; i++){ - var n = next(ci); - if(n && is(n, ss)){ - r[r.length] = ci; - } - } - return r; - }, - - "prev" : function(c, ss){ - var is = Ext.DomQuery.is; - var r = []; - for(var i = 0, ci; ci = c[i]; i++){ - var n = prev(ci); - if(n && is(n, ss)){ - r[r.length] = ci; - } - } - return r; - } - } - }; -}(); - - -Ext.query = Ext.DomQuery.select; - - -Ext.util.Observable = function(){ - if(this.listeners){ - this.on(this.listeners); - delete this.listeners; - } -}; -Ext.util.Observable.prototype = { - - fireEvent : function(){ - var ce = this.events[arguments[0].toLowerCase()]; - if(typeof ce == "object"){ - return ce.fire.apply(ce, Array.prototype.slice.call(arguments, 1)); - }else{ - return true; - } - }, - - // private - filterOptRe : /^(?:scope|delay|buffer|single)$/, - - - addListener : function(eventName, fn, scope, o){ - if(typeof eventName == "object"){ - o = eventName; - for(var e in o){ - if(this.filterOptRe.test(e)){ - continue; - } - if(typeof o[e] == "function"){ - // shared options - this.addListener(e, o[e], o.scope, o); - }else{ - // individual options - this.addListener(e, o[e].fn, o[e].scope, o[e]); - } - } - return; - } - o = (!o || typeof o == "boolean") ? {} : o; - eventName = eventName.toLowerCase(); - var ce = this.events[eventName] || true; - if(typeof ce == "boolean"){ - ce = new Ext.util.Event(this, eventName); - this.events[eventName] = ce; - } - ce.addListener(fn, scope, o); - }, - - - removeListener : function(eventName, fn, scope){ - var ce = this.events[eventName.toLowerCase()]; - if(typeof ce == "object"){ - ce.removeListener(fn, scope); - } - }, - - - purgeListeners : function(){ - for(var evt in this.events){ - if(typeof this.events[evt] == "object"){ - this.events[evt].clearListeners(); - } - } - }, - - relayEvents : function(o, events){ - var createHandler = function(ename){ - return function(){ - return this.fireEvent.apply(this, Ext.combine(ename, Array.prototype.slice.call(arguments, 0))); - }; - }; - for(var i = 0, len = events.length; i < len; i++){ - var ename = events[i]; - if(!this.events[ename]){ this.events[ename] = true; }; - o.on(ename, createHandler(ename), this); - } - }, - - - addEvents : function(o){ - if(!this.events){ - this.events = {}; - } - Ext.applyIf(this.events, o); - }, - - - hasListener : function(eventName){ - var e = this.events[eventName]; - return typeof e == "object" && e.listeners.length > 0; - } -}; - -Ext.util.Observable.prototype.on = Ext.util.Observable.prototype.addListener; - -Ext.util.Observable.prototype.un = Ext.util.Observable.prototype.removeListener; - - -Ext.util.Observable.capture = function(o, fn, scope){ - o.fireEvent = o.fireEvent.createInterceptor(fn, scope); -}; - - -Ext.util.Observable.releaseCapture = function(o){ - o.fireEvent = Ext.util.Observable.prototype.fireEvent; -}; - -(function(){ - - var createBuffered = function(h, o, scope){ - var task = new Ext.util.DelayedTask(); - return function(){ - task.delay(o.buffer, h, scope, Array.prototype.slice.call(arguments, 0)); - }; - }; - - var createSingle = function(h, e, fn, scope){ - return function(){ - e.removeListener(fn, scope); - return h.apply(scope, arguments); - }; - }; - - var createDelayed = function(h, o, scope){ - return function(){ - var args = Array.prototype.slice.call(arguments, 0); - setTimeout(function(){ - h.apply(scope, args); - }, o.delay || 10); - }; - }; - - Ext.util.Event = function(obj, name){ - this.name = name; - this.obj = obj; - this.listeners = []; - }; - - Ext.util.Event.prototype = { - addListener : function(fn, scope, options){ - var o = options || {}; - scope = scope || this.obj; - if(!this.isListening(fn, scope)){ - var l = {fn: fn, scope: scope, options: o}; - var h = fn; - if(o.delay){ - h = createDelayed(h, o, scope); - } - if(o.single){ - h = createSingle(h, this, fn, scope); - } - if(o.buffer){ - h = createBuffered(h, o, scope); - } - l.fireFn = h; - if(!this.firing){ // if we are currently firing this event, don't disturb the listener loop - this.listeners.push(l); - }else{ - this.listeners = this.listeners.slice(0); - this.listeners.push(l); - } - } - }, - - findListener : function(fn, scope){ - scope = scope || this.obj; - var ls = this.listeners; - for(var i = 0, len = ls.length; i < len; i++){ - var l = ls[i]; - if(l.fn == fn && l.scope == scope){ - return i; - } - } - return -1; - }, - - isListening : function(fn, scope){ - return this.findListener(fn, scope) != -1; - }, - - removeListener : function(fn, scope){ - var index; - if((index = this.findListener(fn, scope)) != -1){ - if(!this.firing){ - this.listeners.splice(index, 1); - }else{ - this.listeners = this.listeners.slice(0); - this.listeners.splice(index, 1); - } - return true; - } - return false; - }, - - clearListeners : function(){ - this.listeners = []; - }, - - fire : function(){ - var ls = this.listeners, scope, len = ls.length; - if(len > 0){ - this.firing = true; - var args = Array.prototype.slice.call(arguments, 0); - for(var i = 0; i < len; i++){ - var l = ls[i]; - if(l.fireFn.apply(l.scope, arguments) === false){ - this.firing = false; - return false; - } - } - this.firing = false; - } - return true; - } - }; -})(); - -Ext.EventManager = function(){ - var docReadyEvent, docReadyProcId, docReadyState = false; - var resizeEvent, resizeTask, textEvent, textSize; - var E = Ext.lib.Event; - var D = Ext.lib.Dom; - - - var fireDocReady = function(){ - if(!docReadyState){ - docReadyState = true; - Ext.isReady = true; - if(docReadyProcId){ - clearInterval(docReadyProcId); - } - if(Ext.isGecko || Ext.isOpera) { - document.removeEventListener("DOMContentLoaded", fireDocReady, false); - } - if(docReadyEvent){ - docReadyEvent.fire(); - docReadyEvent.clearListeners(); - } - } - }; - - var initDocReady = function(){ - docReadyEvent = new Ext.util.Event(); - if(Ext.isGecko || Ext.isOpera) { - document.addEventListener("DOMContentLoaded", fireDocReady, false); - }else if(Ext.isIE){ - // inspired by http://www.thefutureoftheweb.com/blog/2006/6/adddomloadevent - document.write("<s"+'cript id="ie-deferred-loader" defer="defer" src="/'+'/:"></s'+"cript>"); - var defer = document.getElementById("ie-deferred-loader"); - defer.onreadystatechange = function(){ - if(this.readyState == "complete"){ - fireDocReady(); - defer.onreadystatechange = null; - defer.parentNode.removeChild(defer); - } - }; - }else if(Ext.isSafari){ - docReadyProcId = setInterval(function(){ - var rs = document.readyState; - if(rs == "complete") { - fireDocReady(); - } - }, 10); - } - // no matter what, make sure it fires on load - E.on(window, "load", fireDocReady); - }; - - var createBuffered = function(h, o){ - var task = new Ext.util.DelayedTask(h); - return function(e){ - // create new event object impl so new events don't wipe out properties - e = new Ext.EventObjectImpl(e); - task.delay(o.buffer, h, null, [e]); - }; - }; - - var createSingle = function(h, el, ename, fn){ - return function(e){ - Ext.EventManager.removeListener(el, ename, fn); - h(e); - }; - }; - - var createDelayed = function(h, o){ - return function(e){ - // create new event object impl so new events don't wipe out properties - e = new Ext.EventObjectImpl(e); - setTimeout(function(){ - h(e); - }, o.delay || 10); - }; - }; - - var listen = function(element, ename, opt, fn, scope){ - var o = (!opt || typeof opt == "boolean") ? {} : opt; - fn = fn || o.fn; scope = scope || o.scope; - var el = Ext.getDom(element); - if(!el){ - throw "Error listening for \"" + ename + '\". Element "' + element + '" doesn\'t exist.'; - } - var h = function(e){ - e = Ext.EventObject.setEvent(e); - var t; - if(o.delegate){ - t = e.getTarget(o.delegate, el); - if(!t){ - return; - } - }else{ - t = e.target; - } - if(o.stopEvent === true){ - e.stopEvent(); - } - if(o.preventDefault === true){ - e.preventDefault(); - } - if(o.stopPropagation === true){ - e.stopPropagation(); - } - - if(o.normalized === false){ - e = e.browserEvent; - } - - fn.call(scope || el, e, t, o); - }; - if(o.delay){ - h = createDelayed(h, o); - } - if(o.single){ - h = createSingle(h, el, ename, fn); - } - if(o.buffer){ - h = createBuffered(h, o); - } - fn._handlers = fn._handlers || []; - fn._handlers.push([Ext.id(el), ename, h]); - - E.on(el, ename, h); - if(ename == "mousewheel" && el.addEventListener){ // workaround for jQuery - el.addEventListener("DOMMouseScroll", h, false); - E.on(window, 'unload', function(){ - el.removeEventListener("DOMMouseScroll", h, false); - }); - } - if(ename == "mousedown" && el == document){ // fix stopped mousedowns on the document - Ext.EventManager.stoppedMouseDownEvent.addListener(h); - } - return h; - }; - - var stopListening = function(el, ename, fn){ - var id = Ext.id(el), hds = fn._handlers, hd = fn; - if(hds){ - for(var i = 0, len = hds.length; i < len; i++){ - var h = hds[i]; - if(h[0] == id && h[1] == ename){ - hd = h[2]; - hds.splice(i, 1); - break; - } - } - } - E.un(el, ename, hd); - el = Ext.getDom(el); - if(ename == "mousewheel" && el.addEventListener){ - el.removeEventListener("DOMMouseScroll", hd, false); - } - if(ename == "mousedown" && el == document){ // fix stopped mousedowns on the document - Ext.EventManager.stoppedMouseDownEvent.removeListener(hd); - } - }; - - var propRe = /^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized)$/; - var pub = { - - - wrap : function(fn, scope, override){ - return function(e){ - Ext.EventObject.setEvent(e); - fn.call(override ? scope || window : window, Ext.EventObject, scope); - }; - }, - - - addListener : function(element, eventName, fn, scope, options){ - if(typeof eventName == "object"){ - var o = eventName; - for(var e in o){ - if(propRe.test(e)){ - continue; - } - if(typeof o[e] == "function"){ - // shared options - listen(element, e, o, o[e], o.scope); - }else{ - // individual options - listen(element, e, o[e]); - } - } - return; - } - return listen(element, eventName, options, fn, scope); - }, - - - removeListener : function(element, eventName, fn){ - return stopListening(element, eventName, fn); - }, - - - onDocumentReady : function(fn, scope, options){ - if(docReadyState){ // if it already fired - fn.call(scope || window, scope); - return; - } - if(!docReadyEvent){ - initDocReady(); - } - docReadyEvent.addListener(fn, scope, options); - }, - - - onWindowResize : function(fn, scope, options){ - if(!resizeEvent){ - resizeEvent = new Ext.util.Event(); - resizeTask = new Ext.util.DelayedTask(function(){ - resizeEvent.fire(D.getViewWidth(), D.getViewHeight()); - }); - E.on(window, "resize", function(){ - if(Ext.isIE){ - resizeTask.delay(50); - }else{ - resizeEvent.fire(D.getViewWidth(), D.getViewHeight()); - } - }); - } - resizeEvent.addListener(fn, scope, options); - }, - - - onTextResize : function(fn, scope, options){ - if(!textEvent){ - textEvent = new Ext.util.Event(); - var textEl = new Ext.Element(document.createElement('div')); - textEl.dom.className = 'x-text-resize'; - textEl.dom.innerHTML = 'X'; - textEl.appendTo(document.body); - textSize = textEl.dom.offsetHeight; - setInterval(function(){ - if(textEl.dom.offsetHeight != textSize){ - textEvent.fire(textSize, textSize = textEl.dom.offsetHeight); - } - }, this.textResizeInterval); - } - textEvent.addListener(fn, scope, options); - }, - - - removeResizeListener : function(fn, scope){ - if(resizeEvent){ - resizeEvent.removeListener(fn, scope); - } - }, - - fireResize : function(){ - if(resizeEvent){ - resizeEvent.fire(D.getViewWidth(), D.getViewHeight()); - } - }, - - ieDeferSrc : false, - textResizeInterval : 50 - }; - - pub.on = pub.addListener; - pub.un = pub.removeListener; - - pub.stoppedMouseDownEvent = new Ext.util.Event(); - return pub; -}(); - -Ext.onReady = Ext.EventManager.onDocumentReady; - -Ext.onReady(function(){ - var bd = Ext.get(document.body); - if(!bd){ return; } - var cls = Ext.isIE ? "ext-ie" - : Ext.isGecko ? "ext-gecko" - : Ext.isOpera ? "ext-opera" - : Ext.isSafari ? "ext-safari" : ""; - if(Ext.isBorderBox){ - cls += ' ext-border-box'; - } - if(Ext.isStrict){ - cls += ' ext-strict'; - } - bd.addClass(cls); -}); - -Ext.EventObject = function(){ - - var E = Ext.lib.Event; - - // safari keypress events for special keys return bad keycodes - var safariKeys = { - 63234 : 37, // left - 63235 : 39, // right - 63232 : 38, // up - 63233 : 40, // down - 63276 : 33, // page up - 63277 : 34, // page down - 63272 : 46, // delete - 63273 : 36, // home - 63275 : 35 // end - }; - - // normalize button clicks - var btnMap = Ext.isIE ? {1:0,4:1,2:2} : - (Ext.isSafari ? {1:0,2:1,3:2} : {0:0,1:1,2:2}); - - Ext.EventObjectImpl = function(e){ - if(e){ - this.setEvent(e.browserEvent || e); - } - }; - Ext.EventObjectImpl.prototype = { - - browserEvent : null, - - button : -1, - - shiftKey : false, - - ctrlKey : false, - - altKey : false, - - - BACKSPACE : 8, - - TAB : 9, - - RETURN : 13, - - ENTER : 13, - - SHIFT : 16, - - CONTROL : 17, - - ESC : 27, - - SPACE : 32, - - PAGEUP : 33, - - PAGEDOWN : 34, - - END : 35, - - HOME : 36, - - LEFT : 37, - - UP : 38, - - RIGHT : 39, - - DOWN : 40, - - DELETE : 46, - - F5 : 116, - - - setEvent : function(e){ - if(e == this || (e && e.browserEvent)){ // already wrapped - return e; - } - this.browserEvent = e; - if(e){ - // normalize buttons - this.button = e.button ? btnMap[e.button] : (e.which ? e.which-1 : -1); - if(e.type == 'click' && this.button == -1){ - this.button = 0; - } - this.shiftKey = e.shiftKey; - // mac metaKey behaves like ctrlKey - this.ctrlKey = e.ctrlKey || e.metaKey; - this.altKey = e.altKey; - // in getKey these will be normalized for the mac - this.keyCode = e.keyCode; - this.charCode = e.charCode; - // cache the target for the delayed and or buffered events - this.target = E.getTarget(e); - // same for XY - this.xy = E.getXY(e); - }else{ - this.button = -1; - this.shiftKey = false; - this.ctrlKey = false; - this.altKey = false; - this.keyCode = 0; - this.charCode =0; - this.target = null; - this.xy = [0, 0]; - } - return this; - }, - - - stopEvent : function(){ - if(this.browserEvent){ - if(this.browserEvent.type == 'mousedown'){ - Ext.EventManager.stoppedMouseDownEvent.fire(this); - } - E.stopEvent(this.browserEvent); - } - }, - - - preventDefault : function(){ - if(this.browserEvent){ - E.preventDefault(this.browserEvent); - } - }, - - - isNavKeyPress : function(){ - var k = this.keyCode; - k = Ext.isSafari ? (safariKeys[k] || k) : k; - return (k >= 33 && k <= 40) || k == this.RETURN || k == this.TAB || k == this.ESC; - }, - - isSpecialKey : function(){ - var k = this.keyCode; - return k == 9 || k == 13 || k == 40 || k == 27 || - (k == 16) || (k == 17) || - (k >= 18 && k <= 20) || - (k >= 33 && k <= 35) || - (k >= 36 && k <= 39) || - (k >= 44 && k <= 45); - }, - - stopPropagation : function(){ - if(this.browserEvent){ - if(this.browserEvent.type == 'mousedown'){ - Ext.EventManager.stoppedMouseDownEvent.fire(this); - } - E.stopPropagation(this.browserEvent); - } - }, - - - getCharCode : function(){ - return this.charCode || this.keyCode; - }, - - - getKey : function(){ - var k = this.keyCode || this.charCode; - return Ext.isSafari ? (safariKeys[k] || k) : k; - }, - - - getPageX : function(){ - return this.xy[0]; - }, - - - getPageY : function(){ - return this.xy[1]; - }, - - - getTime : function(){ - if(this.browserEvent){ - return E.getTime(this.browserEvent); - } - return null; - }, - - - getXY : function(){ - return this.xy; - }, - - - getTarget : function(selector, maxDepth, returnEl){ - return selector ? Ext.fly(this.target).findParent(selector, maxDepth, returnEl) : this.target; - }, - - getRelatedTarget : function(){ - if(this.browserEvent){ - return E.getRelatedTarget(this.browserEvent); - } - return null; - }, - - - getWheelDelta : function(){ - var e = this.browserEvent; - var delta = 0; - if(e.wheelDelta){ - delta = e.wheelDelta/120; - - if(window.opera) delta = -delta; - }else if(e.detail){ - delta = -e.detail/3; - } - return delta; - }, - - - hasModifier : function(){ - return ((this.ctrlKey || this.altKey) || this.shiftKey) ? true : false; - }, - - - within : function(el, related){ - var t = this[related ? "getRelatedTarget" : "getTarget"](); - return t && Ext.fly(el).contains(t); - }, - - getPoint : function(){ - return new Ext.lib.Point(this.xy[0], this.xy[1]); - } - }; - - return new Ext.EventObjectImpl(); -}(); - - - -(function(){ -var D = Ext.lib.Dom; -var E = Ext.lib.Event; -var A = Ext.lib.Anim; - -// local style camelizing for speed -var propCache = {}; -var camelRe = /(-[a-z])/gi; -var camelFn = function(m, a){ return a.charAt(1).toUpperCase(); }; -var view = document.defaultView; - -Ext.Element = function(element, forceNew){ - var dom = typeof element == "string" ? - document.getElementById(element) : element; - if(!dom){ // invalid id/element - return null; - } - if(!forceNew && Ext.Element.cache[dom.id]){ // element object already exists - return Ext.Element.cache[dom.id]; - } - - this.dom = dom; - - - this.id = dom.id || Ext.id(dom); -}; - -var El = Ext.Element; - -El.prototype = { - - originalDisplay : "", - - visibilityMode : 1, - - defaultUnit : "px", - - setVisibilityMode : function(visMode){ - this.visibilityMode = visMode; - return this; - }, - - enableDisplayMode : function(display){ - this.setVisibilityMode(El.DISPLAY); - if(typeof display != "undefined") this.originalDisplay = display; - return this; - }, - - - findParent : function(simpleSelector, maxDepth, returnEl){ - var p = this.dom, b = document.body, depth = 0, dq = Ext.DomQuery, stopEl; - maxDepth = maxDepth || 50; - if(typeof maxDepth != "number"){ - stopEl = Ext.getDom(maxDepth); - maxDepth = 10; - } - while(p && p.nodeType == 1 && depth < maxDepth && p != b && p != stopEl){ - if(dq.is(p, simpleSelector)){ - return returnEl ? Ext.get(p) : p; - } - depth++; - p = p.parentNode; - } - return null; - }, - - - - findParentNode : function(simpleSelector, maxDepth, returnEl){ - var p = Ext.fly(this.dom.parentNode, '_internal'); - return p ? p.findParent(simpleSelector, maxDepth, returnEl) : null; - }, - - - up : function(simpleSelector, maxDepth){ - return this.findParentNode(simpleSelector, maxDepth, true); - }, - - - - - is : function(simpleSelector){ - return Ext.DomQuery.is(this.dom, simpleSelector); - }, - - - animate : function(args, duration, onComplete, easing, animType){ - this.anim(args, {duration: duration, callback: onComplete, easing: easing}, animType); - return this; - }, - - - anim : function(args, opt, animType, defaultDur, defaultEase, cb){ - animType = animType || 'run'; - opt = opt || {}; - var anim = Ext.lib.Anim[animType]( - this.dom, args, - (opt.duration || defaultDur) || .35, - (opt.easing || defaultEase) || 'easeOut', - function(){ - Ext.callback(cb, this); - Ext.callback(opt.callback, opt.scope || this, [this, opt]); - }, - this - ); - opt.anim = anim; - return anim; - }, - - // private legacy anim prep - preanim : function(a, i){ - return !a[i] ? false : (typeof a[i] == "object" ? a[i]: {duration: a[i+1], callback: a[i+2], easing: a[i+3]}); - }, - - - clean : function(forceReclean){ - if(this.isCleaned && forceReclean !== true){ - return this; - } - var ns = /\S/; - var d = this.dom, n = d.firstChild, ni = -1; - while(n){ - var nx = n.nextSibling; - if(n.nodeType == 3 && !ns.test(n.nodeValue)){ - d.removeChild(n); - }else{ - n.nodeIndex = ++ni; - } - n = nx; - } - this.isCleaned = true; - return this; - }, - - // private - calcOffsetsTo : function(el){ - el = Ext.get(el); - var d = el.dom; - var restorePos = false; - if(el.getStyle('position') == 'static'){ - el.position('relative'); - restorePos = true; - } - var x = 0, y =0; - var op = this.dom; - while(op && op != d && op.tagName != 'HTML'){ - x+= op.offsetLeft; - y+= op.offsetTop; - op = op.offsetParent; - } - if(restorePos){ - el.position('static'); - } - return [x, y]; - }, - - - scrollIntoView : function(container, hscroll){ - var c = Ext.getDom(container) || document.body; - var el = this.dom; - - var o = this.calcOffsetsTo(c), - l = o[0], - t = o[1], - b = t+el.offsetHeight, - r = l+el.offsetWidth; - - var ch = c.clientHeight; - var ct = parseInt(c.scrollTop, 10); - var cl = parseInt(c.scrollLeft, 10); - var cb = ct + ch; - var cr = cl + c.clientWidth; - - if(t < ct){ - c.scrollTop = t; - }else if(b > cb){ - c.scrollTop = b-ch; - } - - if(hscroll !== false){ - if(l < cl){ - c.scrollLeft = l; - }else if(r > cr){ - c.scrollLeft = r-c.clientWidth; - } - } - return this; - }, - - // private - scrollChildIntoView : function(child, hscroll){ - Ext.fly(child, '_scrollChildIntoView').scrollIntoView(this, hscroll); - }, - - - autoHeight : function(animate, duration, onComplete, easing){ - var oldHeight = this.getHeight(); - this.clip(); - this.setHeight(1); // force clipping - setTimeout(function(){ - var height = parseInt(this.dom.scrollHeight, 10); // parseInt for Safari - if(!animate){ - this.setHeight(height); - this.unclip(); - if(typeof onComplete == "function"){ - onComplete(); - } - }else{ - this.setHeight(oldHeight); // restore original height - this.setHeight(height, animate, duration, function(){ - this.unclip(); - if(typeof onComplete == "function") onComplete(); - }.createDelegate(this), easing); - } - }.createDelegate(this), 0); - return this; - }, - - - contains : function(el){ - if(!el){return false;} - return D.isAncestor(this.dom, el.dom ? el.dom : el); - }, - - - isVisible : function(deep) { - var vis = !(this.getStyle("visibility") == "hidden" || this.getStyle("display") == "none"); - if(deep !== true || !vis){ - return vis; - } - var p = this.dom.parentNode; - while(p && p.tagName.toLowerCase() != "body"){ - if(!Ext.fly(p, '_isVisible').isVisible()){ - return false; - } - p = p.parentNode; - } - return true; - }, - - - select : function(selector, unique){ - return El.select(selector, unique, this.dom); - }, - - - query : function(selector, unique){ - return Ext.DomQuery.select(selector, this.dom); - }, - - - child : function(selector, returnDom){ - var n = Ext.DomQuery.selectNode(selector, this.dom); - return returnDom ? n : Ext.get(n); - }, - - - down : function(selector, returnDom){ - var n = Ext.DomQuery.selectNode(" > " + selector, this.dom); - return returnDom ? n : Ext.get(n); - }, - - - initDD : function(group, config, overrides){ - var dd = new Ext.dd.DD(Ext.id(this.dom), group, config); - return Ext.apply(dd, overrides); - }, - - - initDDProxy : function(group, config, overrides){ - var dd = new Ext.dd.DDProxy(Ext.id(this.dom), group, config); - return Ext.apply(dd, overrides); - }, - - - initDDTarget : function(group, config, overrides){ - var dd = new Ext.dd.DDTarget(Ext.id(this.dom), group, config); - return Ext.apply(dd, overrides); - }, - - - setVisible : function(visible, animate){ - if(!animate || !A){ - if(this.visibilityMode == El.DISPLAY){ - this.setDisplayed(visible); - }else{ - this.fixDisplay(); - this.dom.style.visibility = visible ? "visible" : "hidden"; - } - }else{ - // closure for composites - var dom = this.dom; - var visMode = this.visibilityMode; - if(visible){ - this.setOpacity(.01); - this.setVisible(true); - } - this.anim({opacity: { to: (visible?1:0) }}, - this.preanim(arguments, 1), - null, .35, 'easeIn', function(){ - if(!visible){ - if(visMode == El.DISPLAY){ - dom.style.display = "none"; - }else{ - dom.style.visibility = "hidden"; - } - Ext.get(dom).setOpacity(1); - } - }); - } - return this; - }, - - - isDisplayed : function() { - return this.getStyle("display") != "none"; - }, - - - toggle : function(animate){ - this.setVisible(!this.isVisible(), this.preanim(arguments, 0)); - return this; - }, - - - setDisplayed : function(value) { - if(typeof value == "boolean"){ - value = value ? this.originalDisplay : "none"; - } - this.setStyle("display", value); - return this; - }, - - - focus : function() { - try{ - this.dom.focus(); - }catch(e){} - return this; - }, - - - blur : function() { - try{ - this.dom.blur(); - }catch(e){} - return this; - }, - - - addClass : function(className){ - if(className instanceof Array){ - for(var i = 0, len = className.length; i < len; i++) { - this.addClass(className[i]); - } - }else{ - if(className && !this.hasClass(className)){ - this.dom.className = this.dom.className + " " + className; - } - } - return this; - }, - - - radioClass : function(className){ - var siblings = this.dom.parentNode.childNodes; - for(var i = 0; i < siblings.length; i++) { - var s = siblings[i]; - if(s.nodeType == 1){ - Ext.get(s).removeClass(className); - } - } - this.addClass(className); - return this; - }, - - - removeClass : function(className){ - if(!className || !this.dom.className){ - return this; - } - if(className instanceof Array){ - for(var i = 0, len = className.length; i < len; i++) { - this.removeClass(className[i]); - } - }else{ - if(this.hasClass(className)){ - var re = this.classReCache[className]; - if (!re) { - re = new RegExp('(?:^|\\s+)' + className + '(?:\\s+|$)', "g"); - this.classReCache[className] = re; - } - this.dom.className = - this.dom.className.replace(re, " "); - } - } - return this; - }, - - // private - classReCache: {}, - - - toggleClass : function(className){ - if(this.hasClass(className)){ - this.removeClass(className); - }else{ - this.addClass(className); - } - return this; - }, - - - hasClass : function(className){ - return className && (' '+this.dom.className+' ').indexOf(' '+className+' ') != -1; - }, - - - replaceClass : function(oldClassName, newClassName){ - this.removeClass(oldClassName); - this.addClass(newClassName); - return this; - }, - - - getStyles : function(){ - var a = arguments, len = a.length, r = {}; - for(var i = 0; i < len; i++){ - r[a[i]] = this.getStyle(a[i]); - } - return r; - }, - - - getStyle : function(){ - return view && view.getComputedStyle ? - function(prop){ - var el = this.dom, v, cs, camel; - if(prop == 'float'){ - prop = "cssFloat"; - } - if(v = el.style[prop]){ - return v; - } - if(cs = view.getComputedStyle(el, "")){ - if(!(camel = propCache[prop])){ - camel = propCache[prop] = prop.replace(camelRe, camelFn); - } - return cs[camel]; - } - return null; - } : - function(prop){ - var el = this.dom, v, cs, camel; - if(prop == 'opacity'){ - if(typeof el.filter == 'string'){ - var fv = parseFloat(el.filter.match(/alpha\(opacity=(.*)\)/i)[1]); - if(!isNaN(fv)){ - return fv ? fv / 100 : 0; - } - } - return 1; - }else if(prop == 'float'){ - prop = "styleFloat"; - } - if(!(camel = propCache[prop])){ - camel = propCache[prop] = prop.replace(camelRe, camelFn); - } - if(v = el.style[camel]){ - return v; - } - if(cs = el.currentStyle){ - return cs[camel]; - } - return null; - }; - }(), - - - setStyle : function(prop, value){ - if(typeof prop == "string"){ - var camel; - if(!(camel = propCache[prop])){ - camel = propCache[prop] = prop.replace(camelRe, camelFn); - } - if(camel == 'opacity') { - this.setOpacity(value); - }else{ - this.dom.style[camel] = value; - } - }else{ - for(var style in prop){ - if(typeof prop[style] != "function"){ - this.setStyle(style, prop[style]); - } - } - } - return this; - }, - - - applyStyles : function(style){ - Ext.DomHelper.applyStyles(this.dom, style); - return this; - }, - - - getX : function(){ - return D.getX(this.dom); - }, - - - getY : function(){ - return D.getY(this.dom); - }, - - - getXY : function(){ - return D.getXY(this.dom); - }, - - - setX : function(x, animate){ - if(!animate || !A){ - D.setX(this.dom, x); - }else{ - this.setXY([x, this.getY()], this.preanim(arguments, 1)); - } - return this; - }, - - - setY : function(y, animate){ - if(!animate || !A){ - D.setY(this.dom, y); - }else{ - this.setXY([this.getX(), y], this.preanim(arguments, 1)); - } - return this; - }, - - - setLeft : function(left){ - this.setStyle("left", this.addUnits(left)); - return this; - }, - - - setTop : function(top){ - this.setStyle("top", this.addUnits(top)); - return this; - }, - - - setRight : function(right){ - this.setStyle("right", this.addUnits(right)); - return this; - }, - - - setBottom : function(bottom){ - this.setStyle("bottom", this.addUnits(bottom)); - return this; - }, - - - setXY : function(pos, animate){ - if(!animate || !A){ - D.setXY(this.dom, pos); - }else{ - this.anim({points: {to: pos}}, this.preanim(arguments, 1), 'motion'); - } - return this; - }, - - - setLocation : function(x, y, animate){ - this.setXY([x, y], this.preanim(arguments, 2)); - return this; - }, - - - moveTo : function(x, y, animate){ - this.setXY([x, y], this.preanim(arguments, 2)); - return this; - }, - - - getRegion : function(){ - return D.getRegion(this.dom); - }, - - - getHeight : function(contentHeight){ - var h = this.dom.offsetHeight || 0; - return contentHeight !== true ? h : h-this.getBorderWidth("tb")-this.getPadding("tb"); - }, - - - getWidth : function(contentWidth){ - var w = this.dom.offsetWidth || 0; - return contentWidth !== true ? w : w-this.getBorderWidth("lr")-this.getPadding("lr"); - }, - - - getComputedHeight : function(){ - var h = Math.max(this.dom.offsetHeight, this.dom.clientHeight); - if(!h){ - h = parseInt(this.getStyle('height'), 10) || 0; - if(!this.isBorderBox()){ - h += this.getFrameWidth('tb'); - } - } - return h; - }, - - - getComputedWidth : function(){ - var w = Math.max(this.dom.offsetWidth, this.dom.clientWidth); - if(!w){ - w = parseInt(this.getStyle('width'), 10) || 0; - if(!this.isBorderBox()){ - w += this.getFrameWidth('lr'); - } - } - return w; - }, - - - getSize : function(contentSize){ - return {width: this.getWidth(contentSize), height: this.getHeight(contentSize)}; - }, - - - getViewSize : function(){ - var d = this.dom, doc = document, aw = 0, ah = 0; - if(d == doc || d == doc.body){ - return {width : D.getViewWidth(), height: D.getViewHeight()}; - }else{ - return { - width : d.clientWidth, - height: d.clientHeight - }; - } - }, - - - getValue : function(asNumber){ - return asNumber ? parseInt(this.dom.value, 10) : this.dom.value; - }, - - // private - adjustWidth : function(width){ - if(typeof width == "number"){ - if(this.autoBoxAdjust && !this.isBorderBox()){ - width -= (this.getBorderWidth("lr") + this.getPadding("lr")); - } - if(width < 0){ - width = 0; - } - } - return width; - }, - - // private - adjustHeight : function(height){ - if(typeof height == "number"){ - if(this.autoBoxAdjust && !this.isBorderBox()){ - height -= (this.getBorderWidth("tb") + this.getPadding("tb")); - } - if(height < 0){ - height = 0; - } - } - return height; - }, - - - setWidth : function(width, animate){ - width = this.adjustWidth(width); - if(!animate || !A){ - this.dom.style.width = this.addUnits(width); - }else{ - this.anim({width: {to: width}}, this.preanim(arguments, 1)); - } - return this; - }, - - - setHeight : function(height, animate){ - height = this.adjustHeight(height); - if(!animate || !A){ - this.dom.style.height = this.addUnits(height); - }else{ - this.anim({height: {to: height}}, this.preanim(arguments, 1)); - } - return this; - }, - - - setSize : function(width, height, animate){ - if(typeof width == "object"){ // in case of object from getSize() - height = width.height; width = width.width; - } - width = this.adjustWidth(width); height = this.adjustHeight(height); - if(!animate || !A){ - this.dom.style.width = this.addUnits(width); - this.dom.style.height = this.addUnits(height); - }else{ - this.anim({width: {to: width}, height: {to: height}}, this.preanim(arguments, 2)); - } - return this; - }, - - - setBounds : function(x, y, width, height, animate){ - if(!animate || !A){ - this.setSize(width, height); - this.setLocation(x, y); - }else{ - width = this.adjustWidth(width); height = this.adjustHeight(height); - this.anim({points: {to: [x, y]}, width: {to: width}, height: {to: height}}, - this.preanim(arguments, 4), 'motion'); - } - return this; - }, - - - setRegion : function(region, animate){ - this.setBounds(region.left, region.top, region.right-region.left, region.bottom-region.top, this.preanim(arguments, 1)); - return this; - }, - - - addListener : function(eventName, fn, scope, options){ - Ext.EventManager.on(this.dom, eventName, fn, scope || this, options); - }, - - - removeListener : function(eventName, fn){ - Ext.EventManager.removeListener(this.dom, eventName, fn); - return this; - }, - - - removeAllListeners : function(){ - E.purgeElement(this.dom); - return this; - }, - - relayEvent : function(eventName, observable){ - this.on(eventName, function(e){ - observable.fireEvent(eventName, e); - }); - }, - - - setOpacity : function(opacity, animate){ - if(!animate || !A){ - var s = this.dom.style; - if(Ext.isIE){ - s.zoom = 1; - s.filter = (s.filter || '').replace(/alpha\([^\)]*\)/gi,"") + - (opacity == 1 ? "" : "alpha(opacity=" + opacity * 100 + ")"); - }else{ - s.opacity = opacity; - } - }else{ - this.anim({opacity: {to: opacity}}, this.preanim(arguments, 1), null, .35, 'easeIn'); - } - return this; - }, - - - getLeft : function(local){ - if(!local){ - return this.getX(); - }else{ - return parseInt(this.getStyle("left"), 10) || 0; - } - }, - - - getRight : function(local){ - if(!local){ - return this.getX() + this.getWidth(); - }else{ - return (this.getLeft(true) + this.getWidth()) || 0; - } - }, - - - getTop : function(local) { - if(!local){ - return this.getY(); - }else{ - return parseInt(this.getStyle("top"), 10) || 0; - } - }, - - - getBottom : function(local){ - if(!local){ - return this.getY() + this.getHeight(); - }else{ - return (this.getTop(true) + this.getHeight()) || 0; - } - }, - - - position : function(pos, zIndex, x, y){ - if(!pos){ - if(this.getStyle('position') == 'static'){ - this.setStyle('position', 'relative'); - } - }else{ - this.setStyle("position", pos); - } - if(zIndex){ - this.setStyle("z-index", zIndex); - } - if(x !== undefined && y !== undefined){ - this.setXY([x, y]); - }else if(x !== undefined){ - this.setX(x); - }else if(y !== undefined){ - this.setY(y); - } - }, - - - clearPositioning : function(value){ - value = value ||''; - this.setStyle({ - "left": value, - "right": value, - "top": value, - "bottom": value, - "z-index": "", - "position" : "static" - }); - return this; - }, - - - getPositioning : function(){ - var l = this.getStyle("left"); - var t = this.getStyle("top"); - return { - "position" : this.getStyle("position"), - "left" : l, - "right" : l ? "" : this.getStyle("right"), - "top" : t, - "bottom" : t ? "" : this.getStyle("bottom"), - "z-index" : this.getStyle("z-index") - }; - }, - - - getBorderWidth : function(side){ - return this.addStyles(side, El.borders); - }, - - - getPadding : function(side){ - return this.addStyles(side, El.paddings); - }, - - - setPositioning : function(pc){ - this.applyStyles(pc); - if(pc.right == "auto"){ - this.dom.style.right = ""; - } - if(pc.bottom == "auto"){ - this.dom.style.bottom = ""; - } - return this; - }, - - // private - fixDisplay : function(){ - if(this.getStyle("display") == "none"){ - this.setStyle("visibility", "hidden"); - this.setStyle("display", this.originalDisplay); // first try reverting to default - if(this.getStyle("display") == "none"){ // if that fails, default to block - this.setStyle("display", "block"); - } - } - }, - - - setLeftTop : function(left, top){ - this.dom.style.left = this.addUnits(left); - this.dom.style.top = this.addUnits(top); - return this; - }, - - - move : function(direction, distance, animate){ - var xy = this.getXY(); - direction = direction.toLowerCase(); - switch(direction){ - case "l": - case "left": - this.moveTo(xy[0]-distance, xy[1], this.preanim(arguments, 2)); - break; - case "r": - case "right": - this.moveTo(xy[0]+distance, xy[1], this.preanim(arguments, 2)); - break; - case "t": - case "top": - case "up": - this.moveTo(xy[0], xy[1]-distance, this.preanim(arguments, 2)); - break; - case "b": - case "bottom": - case "down": - this.moveTo(xy[0], xy[1]+distance, this.preanim(arguments, 2)); - break; - } - return this; - }, - - - clip : function(){ - if(!this.isClipped){ - this.isClipped = true; - this.originalClip = { - "o": this.getStyle("overflow"), - "x": this.getStyle("overflow-x"), - "y": this.getStyle("overflow-y") - }; - this.setStyle("overflow", "hidden"); - this.setStyle("overflow-x", "hidden"); - this.setStyle("overflow-y", "hidden"); - } - return this; - }, - - - unclip : function(){ - if(this.isClipped){ - this.isClipped = false; - var o = this.originalClip; - if(o.o){this.setStyle("overflow", o.o);} - if(o.x){this.setStyle("overflow-x", o.x);} - if(o.y){this.setStyle("overflow-y", o.y);} - } - return this; - }, - - - - getAnchorXY : function(anchor, local, s){ - //Passing a different size is useful for pre-calculating anchors, - //especially for anchored animations that change the el size. - - var w, h, vp = false; - if(!s){ - var d = this.dom; - if(d == document.body || d == document){ - vp = true; - w = D.getViewWidth(); h = D.getViewHeight(); - }else{ - w = this.getWidth(); h = this.getHeight(); - } - }else{ - w = s.width; h = s.height; - } - var x = 0, y = 0, r = Math.round; - switch((anchor || "tl").toLowerCase()){ - case "c": - x = r(w*.5); - y = r(h*.5); - break; - case "t": - x = r(w*.5); - y = 0; - break; - case "l": - x = 0; - y = r(h*.5); - break; - case "r": - x = w; - y = r(h*.5); - break; - case "b": - x = r(w*.5); - y = h; - break; - case "tl": - x = 0; - y = 0; - break; - case "bl": - x = 0; - y = h; - break; - case "br": - x = w; - y = h; - break; - case "tr": - x = w; - y = 0; - break; - } - if(local === true){ - return [x, y]; - } - if(vp){ - var sc = this.getScroll(); - return [x + sc.left, y + sc.top]; - } - //Add the element's offset xy - var o = this.getXY(); - return [x+o[0], y+o[1]]; - }, - - - getAlignToXY : function(el, p, o){ - el = Ext.get(el); - var d = this.dom; - if(!el.dom){ - throw "Element.alignTo with an element that doesn't exist"; - } - var c = false; //constrain to viewport - var p1 = "", p2 = ""; - o = o || [0,0]; - - if(!p){ - p = "tl-bl"; - }else if(p == "?"){ - p = "tl-bl?"; - }else if(p.indexOf("-") == -1){ - p = "tl-" + p; - } - p = p.toLowerCase(); - var m = p.match(/^([a-z]+)-([a-z]+)(\?)?$/); - if(!m){ - throw "Element.alignTo with an invalid alignment " + p; - } - p1 = m[1]; p2 = m[2]; c = !!m[3]; - - //Subtract the aligned el's internal xy from the target's offset xy - //plus custom offset to get the aligned el's new offset xy - var a1 = this.getAnchorXY(p1, true); - var a2 = el.getAnchorXY(p2, false); - var x = a2[0] - a1[0] + o[0]; - var y = a2[1] - a1[1] + o[1]; - if(c){ - //constrain the aligned el to viewport if necessary - var w = this.getWidth(), h = this.getHeight(), r = el.getRegion(); - // 5px of margin for ie - var dw = D.getViewWidth()-5, dh = D.getViewHeight()-5; - - //If we are at a viewport boundary and the aligned el is anchored on a target border that is - //perpendicular to the vp border, allow the aligned el to slide on that border, - //otherwise swap the aligned el to the opposite border of the target. - var p1y = p1.charAt(0), p1x = p1.charAt(p1.length-1); - var p2y = p2.charAt(0), p2x = p2.charAt(p2.length-1); - var swapY = ((p1y=="t" && p2y=="b") || (p1y=="b" && p2y=="t")); - var swapX = ((p1x=="r" && p2x=="l") || (p1x=="l" && p2x=="r")); - - var doc = document; - var scrollX = (doc.documentElement.scrollLeft || doc.body.scrollLeft || 0)+5; - var scrollY = (doc.documentElement.scrollTop || doc.body.scrollTop || 0)+5; - - if((x+w) > dw + scrollX){ - x = swapX ? r.left-w : dw+scrollX-w; - } - if(x < scrollX){ - x = swapX ? r.right : scrollX; - } - if((y+h) > dh + scrollY){ - y = swapY ? r.top-h : dh+scrollY-h; - } - if (y < scrollY){ - y = swapY ? r.bottom : scrollY; - } - } - return [x,y]; - }, - - // private - getConstrainToXY : function(){ - var os = {top:0, left:0, bottom:0, right: 0}; - - return function(el, local, offsets){ - el = Ext.get(el); - offsets = offsets ? Ext.applyIf(offsets, os) : os; - - var vw, vh, vx = 0, vy = 0; - if(el.dom == document.body || el.dom == document){ - vw = Ext.lib.Dom.getViewWidth(); - vh = Ext.lib.Dom.getViewHeight(); - }else{ - vw = el.dom.clientWidth; - vh = el.dom.clientHeight; - if(!local){ - var vxy = el.getXY(); - vx = vxy[0]; - vy = vxy[1]; - } - } - - var s = el.getScroll(); - - vx += offsets.left + s.left; - vy += offsets.top + s.top; - - vw -= offsets.right; - vh -= offsets.bottom; - - var vr = vx+vw; - var vb = vy+vh; - - var xy = !local ? this.getXY() : [this.getLeft(true), this.getTop(true)]; - var x = xy[0], y = xy[1]; - var w = this.dom.offsetWidth, h = this.dom.offsetHeight; - - // only move it if it needs it - var moved = false; - - // first validate right/bottom - if((x + w) > vr){ - x = vr - w; - moved = true; - } - if((y + h) > vb){ - y = vb - h; - moved = true; - } - // then make sure top/left isn't negative - if(x < vx){ - x = vx; - moved = true; - } - if(y < vy){ - y = vy; - moved = true; - } - return moved ? [x, y] : false; - }; - }(), - - - alignTo : function(element, position, offsets, animate){ - var xy = this.getAlignToXY(element, position, offsets); - this.setXY(xy, this.preanim(arguments, 3)); - return this; - }, - - - anchorTo : function(el, alignment, offsets, animate, monitorScroll, callback){ - var action = function(){ - this.alignTo(el, alignment, offsets, animate); - Ext.callback(callback, this); - }; - Ext.EventManager.onWindowResize(action, this); - var tm = typeof monitorScroll; - if(tm != 'undefined'){ - Ext.EventManager.on(window, 'scroll', action, this, - {buffer: tm == 'number' ? monitorScroll : 50}); - } - action.call(this); // align immediately - return this; - }, - - clearOpacity : function(){ - if (window.ActiveXObject) { - if(typeof this.dom.style.filter == 'string' && (/alpha/i).test(this.dom.style.filter)){ - this.dom.style.filter = ""; - } - } else { - this.dom.style.opacity = ""; - this.dom.style["-moz-opacity"] = ""; - this.dom.style["-khtml-opacity"] = ""; - } - return this; - }, - - - hide : function(animate){ - this.setVisible(false, this.preanim(arguments, 0)); - return this; - }, - - - show : function(animate){ - this.setVisible(true, this.preanim(arguments, 0)); - return this; - }, - - - addUnits : function(size){ - return Ext.Element.addUnits(size, this.defaultUnit); - }, - - - beginMeasure : function(){ - var el = this.dom; - if(el.offsetWidth || el.offsetHeight){ - return this; // offsets work already - } - var changed = []; - var p = this.dom, b = document.body; // start with this element - while((!el.offsetWidth && !el.offsetHeight) && p && p.tagName && p != b){ - var pe = Ext.get(p); - if(pe.getStyle('display') == 'none'){ - changed.push({el: p, visibility: pe.getStyle("visibility")}); - p.style.visibility = "hidden"; - p.style.display = "block"; - } - p = p.parentNode; - } - this._measureChanged = changed; - return this; - - }, - - - endMeasure : function(){ - var changed = this._measureChanged; - if(changed){ - for(var i = 0, len = changed.length; i < len; i++) { - var r = changed[i]; - r.el.style.visibility = r.visibility; - r.el.style.display = "none"; - } - this._measureChanged = null; - } - return this; - }, - - - update : function(html, loadScripts, callback){ - if(typeof html == "undefined"){ - html = ""; - } - if(loadScripts !== true){ - this.dom.innerHTML = html; - if(typeof callback == "function"){ - callback(); - } - return this; - } - var id = Ext.id(); - var dom = this.dom; - - html += '<span id="' + id + '"></span>'; - - E.onAvailable(id, function(){ - var hd = document.getElementsByTagName("head")[0]; - var re = /(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig; - var srcRe = /\ssrc=([\'\"])(.*?)\1/i; - var typeRe = /\stype=([\'\"])(.*?)\1/i; - - var match; - while(match = re.exec(html)){ - var attrs = match[1]; - var srcMatch = attrs ? attrs.match(srcRe) : false; - if(srcMatch && srcMatch[2]){ - var s = document.createElement("script"); - s.src = srcMatch[2]; - var typeMatch = attrs.match(typeRe); - if(typeMatch && typeMatch[2]){ - s.type = typeMatch[2]; - } - hd.appendChild(s); - }else if(match[2] && match[2].length > 0){ - eval(match[2]); - } - } - var el = document.getElementById(id); - if(el){el.parentNode.removeChild(el);} - if(typeof callback == "function"){ - callback(); - } - }); - dom.innerHTML = html.replace(/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig, ""); - return this; - }, - - - load : function(){ - var um = this.getUpdateManager(); - um.update.apply(um, arguments); - return this; - }, - - - getUpdateManager : function(){ - if(!this.updateManager){ - this.updateManager = new Ext.UpdateManager(this); - } - return this.updateManager; - }, - - - unselectable : function(){ - this.dom.unselectable = "on"; - this.swallowEvent("selectstart", true); - this.applyStyles("-moz-user-select:none;-khtml-user-select:none;"); - this.addClass("x-unselectable"); - return this; - }, - - - getCenterXY : function(){ - return this.getAlignToXY(document, 'c-c'); - }, - - - center : function(centerIn){ - this.alignTo(centerIn || document, 'c-c'); - return this; - }, - - - isBorderBox : function(){ - return noBoxAdjust[this.dom.tagName.toLowerCase()] || Ext.isBorderBox; - }, - - - getBox : function(contentBox, local){ - var xy; - if(!local){ - xy = this.getXY(); - }else{ - var left = parseInt(this.getStyle("left"), 10) || 0; - var top = parseInt(this.getStyle("top"), 10) || 0; - xy = [left, top]; - } - var el = this.dom, w = el.offsetWidth, h = el.offsetHeight, bx; - if(!contentBox){ - bx = {x: xy[0], y: xy[1], 0: xy[0], 1: xy[1], width: w, height: h}; - }else{ - var l = this.getBorderWidth("l")+this.getPadding("l"); - var r = this.getBorderWidth("r")+this.getPadding("r"); - var t = this.getBorderWidth("t")+this.getPadding("t"); - var b = this.getBorderWidth("b")+this.getPadding("b"); - bx = {x: xy[0]+l, y: xy[1]+t, 0: xy[0]+l, 1: xy[1]+t, width: w-(l+r), height: h-(t+b)}; - } - bx.right = bx.x + bx.width; - bx.bottom = bx.y + bx.height; - return bx; - }, - - - getFrameWidth : function(sides, onlyContentBox){ - return onlyContentBox && Ext.isBorderBox ? 0 : (this.getPadding(sides) + this.getBorderWidth(sides)); - }, - - - setBox : function(box, adjust, animate){ - var w = box.width, h = box.height; - if((adjust && !this.autoBoxAdjust) && !this.isBorderBox()){ - w -= (this.getBorderWidth("lr") + this.getPadding("lr")); - h -= (this.getBorderWidth("tb") + this.getPadding("tb")); - } - this.setBounds(box.x, box.y, w, h, this.preanim(arguments, 2)); - return this; - }, - - - repaint : function(){ - var dom = this.dom; - this.addClass("x-repaint"); - setTimeout(function(){ - Ext.get(dom).removeClass("x-repaint"); - }, 1); - return this; - }, - - - getMargins : function(side){ - if(!side){ - return { - top: parseInt(this.getStyle("margin-top"), 10) || 0, - left: parseInt(this.getStyle("margin-left"), 10) || 0, - bottom: parseInt(this.getStyle("margin-bottom"), 10) || 0, - right: parseInt(this.getStyle("margin-right"), 10) || 0 - }; - }else{ - return this.addStyles(side, El.margins); - } - }, - - // private - addStyles : function(sides, styles){ - var val = 0; - for(var i = 0, len = sides.length; i < len; i++){ - var w = parseInt(this.getStyle(styles[sides.charAt(i)]), 10); - if(!isNaN(w)) val += w; - } - return val; - }, - - - createProxy : function(config, renderTo, matchBox){ - if(renderTo){ - renderTo = Ext.getDom(renderTo); - }else{ - renderTo = document.body; - } - config = typeof config == "object" ? - config : {tag : "div", cls: config}; - var proxy = Ext.DomHelper.append(renderTo, config, true); - if(matchBox){ - proxy.setBox(this.getBox()); - } - return proxy; - }, - - - mask : function(msg, msgCls){ - if(this.getStyle("position") == "static"){ - this.setStyle("position", "relative"); - } - if(!this._mask){ - this._mask = Ext.DomHelper.append(this.dom, {tag:"div", cls:"ext-el-mask"}, true); - } - this.addClass("x-masked"); - this._mask.setDisplayed(true); - if(typeof msg == 'string'){ - if(!this._maskMsg){ - this._maskMsg = Ext.DomHelper.append(this.dom, {tag:"div", cls:"ext-el-mask-msg", cn:{tag:'div'}}, true); - } - var mm = this._maskMsg; - mm.dom.className = msgCls ? "ext-el-mask-msg " + msgCls : "ext-el-mask-msg"; - mm.dom.firstChild.innerHTML = msg; - mm.setDisplayed(true); - mm.center(this); - } - return this._mask; - }, - - - unmask : function(removeEl){ - if(this._mask){ - if(removeEl === true){ - this._mask.remove(); - delete this._mask; - if(this._maskMsg){ - this._maskMsg.remove(); - delete this._maskMsg; - } - }else{ - this._mask.setDisplayed(false); - if(this._maskMsg){ - this._maskMsg.setDisplayed(false); - } - } - } - this.removeClass("x-masked"); - }, - - - isMasked : function(){ - return this._mask && this._mask.isVisible(); - }, - - - createShim : function(){ - var el = document.createElement('iframe'); - el.frameBorder = 'no'; - el.className = 'ext-shim'; - if(Ext.isIE && Ext.isSecure){ - el.src = Ext.SSL_SECURE_URL; - } - var shim = Ext.get(this.dom.parentNode.insertBefore(el, this.dom)); - shim.autoBoxAdjust = false; - return shim; - }, - - - remove : function(){ - if(this.dom.parentNode){ - this.dom.parentNode.removeChild(this.dom); - } - delete El.cache[this.dom.id]; - }, - - - addClassOnOver : function(className, preventFlicker){ - this.on("mouseover", function(){ - Ext.fly(this, '_internal').addClass(className); - }, this.dom); - var removeFn = function(e){ - if(preventFlicker !== true || !e.within(this, true)){ - Ext.fly(this, '_internal').removeClass(className); - } - }; - this.on("mouseout", removeFn, this.dom); - return this; - }, - - - addClassOnFocus : function(className){ - this.on("focus", function(){ - Ext.fly(this, '_internal').addClass(className); - }, this.dom); - this.on("blur", function(){ - Ext.fly(this, '_internal').removeClass(className); - }, this.dom); - return this; - }, - - addClassOnClick : function(className){ - var dom = this.dom; - this.on("mousedown", function(){ - Ext.fly(dom, '_internal').addClass(className); - var d = Ext.get(document); - var fn = function(){ - Ext.fly(dom, '_internal').removeClass(className); - d.removeListener("mouseup", fn); - }; - d.on("mouseup", fn); - }); - return this; - }, - - - swallowEvent : function(eventName, preventDefault){ - var fn = function(e){ - e.stopPropagation(); - if(preventDefault){ - e.preventDefault(); - } - }; - if(eventName instanceof Array){ - for(var i = 0, len = eventName.length; i < len; i++){ - this.on(eventName[i], fn); - } - return this; - } - this.on(eventName, fn); - return this; - }, - - - fitToParent : function(monitorResize, targetParent){ - var p = Ext.get(targetParent || this.dom.parentNode); - this.setSize(p.getComputedWidth()-p.getFrameWidth('lr'), p.getComputedHeight()-p.getFrameWidth('tb')); - if(monitorResize === true){ - Ext.EventManager.onWindowResize(this.fitToParent.createDelegate(this, [])); - } - return this; - }, - - - getNextSibling : function(){ - var n = this.dom.nextSibling; - while(n && n.nodeType != 1){ - n = n.nextSibling; - } - return n; - }, - - - getPrevSibling : function(){ - var n = this.dom.previousSibling; - while(n && n.nodeType != 1){ - n = n.previousSibling; - } - return n; - }, - - - - appendChild: function(el){ - el = Ext.get(el); - el.appendTo(this); - return this; - }, - - - createChild: function(config, insertBefore, returnDom){ - config = config || {tag:'div'}; - if(insertBefore){ - return Ext.DomHelper.insertBefore(insertBefore, config, returnDom !== true); - } - return Ext.DomHelper[!this.dom.firstChild ? 'overwrite' : 'append'](this.dom, config, returnDom !== true); - }, - - - appendTo: function(el){ - el = Ext.getDom(el); - el.appendChild(this.dom); - return this; - }, - - - insertBefore: function(el){ - el = Ext.getDom(el); - el.parentNode.insertBefore(this.dom, el); - return this; - }, - - - insertAfter: function(el){ - el = Ext.getDom(el); - el.parentNode.insertBefore(this.dom, el.nextSibling); - return this; - }, - - - insertFirst: function(el, returnDom){ - el = el || {}; - if(typeof el == 'object' && !el.nodeType){ // dh config - return this.createChild(el, this.dom.firstChild, returnDom); - }else{ - el = Ext.getDom(el); - this.dom.insertBefore(el, this.dom.firstChild); - return !returnDom ? Ext.get(el) : el; - } - }, - - - insertSibling: function(el, where, returnDom){ - where = where ? where.toLowerCase() : 'before'; - el = el || {}; - var rt, refNode = where == 'before' ? this.dom : this.dom.nextSibling; - - if(typeof el == 'object' && !el.nodeType){ // dh config - if(where == 'after' && !this.dom.nextSibling){ - rt = Ext.DomHelper.append(this.dom.parentNode, el, !returnDom); - }else{ - rt = Ext.DomHelper[where == 'after' ? 'insertAfter' : 'insertBefore'](this.dom, el, !returnDom); - } - - }else{ - rt = this.dom.parentNode.insertBefore(Ext.getDom(el), - where == 'before' ? this.dom : this.dom.nextSibling); - if(!returnDom){ - rt = Ext.get(rt); - } - } - return rt; - }, - - - wrap: function(config, returnDom){ - if(!config){ - config = {tag: "div"}; - } - var newEl = Ext.DomHelper.insertBefore(this.dom, config, !returnDom); - newEl.dom ? newEl.dom.appendChild(this.dom) : newEl.appendChild(this.dom); - return newEl; - }, - - - replace: function(el){ - el = Ext.get(el); - this.insertBefore(el); - el.remove(); - return this; - }, - - - insertHtml : function(where, html, returnEl){ - var el = Ext.DomHelper.insertHtml(where, this.dom, html); - return returnEl ? Ext.get(el) : el; - }, - - - set : function(o, useSet){ - var el = this.dom; - useSet = typeof useSet == 'undefined' ? (el.setAttribute ? true : false) : useSet; - for(var attr in o){ - if(attr == "style" || typeof o[attr] == "function") continue; - if(attr=="cls"){ - el.className = o["cls"]; - }else{ - if(useSet) el.setAttribute(attr, o[attr]); - else el[attr] = o[attr]; - } - } - Ext.DomHelper.applyStyles(el, o.style); - return this; - }, - - - addKeyListener : function(key, fn, scope){ - var config; - if(typeof key != "object" || key instanceof Array){ - config = { - key: key, - fn: fn, - scope: scope - }; - }else{ - config = { - key : key.key, - shift : key.shift, - ctrl : key.ctrl, - alt : key.alt, - fn: fn, - scope: scope - }; - } - return new Ext.KeyMap(this, config); - }, - - - addKeyMap : function(config){ - return new Ext.KeyMap(this, config); - }, - - - isScrollable : function(){ - var dom = this.dom; - return dom.scrollHeight > dom.clientHeight || dom.scrollWidth > dom.clientWidth; - }, - - - - scrollTo : function(side, value, animate){ - var prop = side.toLowerCase() == "left" ? "scrollLeft" : "scrollTop"; - if(!animate || !A){ - this.dom[prop] = value; - }else{ - var to = prop == "scrollLeft" ? [value, this.dom.scrollTop] : [this.dom.scrollLeft, value]; - this.anim({scroll: {"to": to}}, this.preanim(arguments, 2), 'scroll'); - } - return this; - }, - - - scroll : function(direction, distance, animate){ - if(!this.isScrollable()){ - return; - } - var el = this.dom; - var l = el.scrollLeft, t = el.scrollTop; - var w = el.scrollWidth, h = el.scrollHeight; - var cw = el.clientWidth, ch = el.clientHeight; - direction = direction.toLowerCase(); - var scrolled = false; - var a = this.preanim(arguments, 2); - switch(direction){ - case "l": - case "left": - if(w - l > cw){ - var v = Math.min(l + distance, w-cw); - this.scrollTo("left", v, a); - scrolled = true; - } - break; - case "r": - case "right": - if(l > 0){ - var v = Math.max(l - distance, 0); - this.scrollTo("left", v, a); - scrolled = true; - } - break; - case "t": - case "top": - case "up": - if(t > 0){ - var v = Math.max(t - distance, 0); - this.scrollTo("top", v, a); - scrolled = true; - } - break; - case "b": - case "bottom": - case "down": - if(h - t > ch){ - var v = Math.min(t + distance, h-ch); - this.scrollTo("top", v, a); - scrolled = true; - } - break; - } - return scrolled; - }, - - - translatePoints : function(x, y){ - if(typeof x == 'object' || x instanceof Array){ - y = x[1]; x = x[0]; - } - var p = this.getStyle('position'); - var o = this.getXY(); - - var l = parseInt(this.getStyle('left'), 10); - var t = parseInt(this.getStyle('top'), 10); - - if(isNaN(l)){ - l = (p == "relative") ? 0 : this.dom.offsetLeft; - } - if(isNaN(t)){ - t = (p == "relative") ? 0 : this.dom.offsetTop; - } - - return {left: (x - o[0] + l), top: (y - o[1] + t)}; - }, - - - getScroll : function(){ - var d = this.dom, doc = document; - if(d == doc || d == doc.body){ - var l = window.pageXOffset || doc.documentElement.scrollLeft || doc.body.scrollLeft || 0; - var t = window.pageYOffset || doc.documentElement.scrollTop || doc.body.scrollTop || 0; - return {left: l, top: t}; - }else{ - return {left: d.scrollLeft, top: d.scrollTop}; - } - }, - - - getColor : function(attr, defaultValue, prefix){ - var v = this.getStyle(attr); - if(!v || v == "transparent" || v == "inherit") { - return defaultValue; - } - var color = typeof prefix == "undefined" ? "#" : prefix; - if(v.substr(0, 4) == "rgb("){ - var rvs = v.slice(4, v.length -1).split(","); - for(var i = 0; i < 3; i++){ - var h = parseInt(rvs[i]).toString(16); - if(h < 16){ - h = "0" + h; - } - color += h; - } - } else { - if(v.substr(0, 1) == "#"){ - if(v.length == 4) { - for(var i = 1; i < 4; i++){ - var c = v.charAt(i); - color += c + c; - } - }else if(v.length == 7){ - color += v.substr(1); - } - } - } - return(color.length > 5 ? color.toLowerCase() : defaultValue); - }, - - - boxWrap : function(cls){ - cls = cls || 'x-box'; - var el = Ext.get(this.insertHtml('beforeBegin', String.format('<div class="{0}">'+El.boxMarkup+'</div>', cls))); - el.child('.'+cls+'-mc').dom.appendChild(this.dom); - return el; - }, - - - getAttributeNS : Ext.isIE ? function(ns, name){ - var d = this.dom; - var type = typeof d[ns+":"+name]; - if(type != 'undefined' && type != 'unknown'){ - return d[ns+":"+name]; - } - return d[name]; - } : function(ns, name){ - var d = this.dom; - return d.getAttributeNS(ns, name) || d.getAttribute(ns+":"+name) || d.getAttribute(name) || d[name]; - } -}; - -var ep = El.prototype; - - -ep.on = ep.addListener; - // backwards compat -ep.mon = ep.addListener; - - -ep.un = ep.removeListener; - - -ep.autoBoxAdjust = true; - -ep.autoDisplayMode = true; - -// private -El.unitPattern = /\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i; - -// private -El.addUnits = function(v, defaultUnit){ - if(v === "" || v == "auto"){ - return v; - } - if(v === undefined){ - return ''; - } - if(typeof v == "number" || !El.unitPattern.test(v)){ - return v + (defaultUnit || 'px'); - } - return v; -}; - -// special markup used throughout Ext when box wrapping elements -El.boxMarkup = '<div class="{0}-tl"><div class="{0}-tr"><div class="{0}-tc"></div></div></div><div class="{0}-ml"><div class="{0}-mr"><div class="{0}-mc"></div></div></div><div class="{0}-bl"><div class="{0}-br"><div class="{0}-bc"></div></div></div>'; - -El.VISIBILITY = 1; - -El.DISPLAY = 2; - -El.borders = {l: "border-left-width", r: "border-right-width", t: "border-top-width", b: "border-bottom-width"}; -El.paddings = {l: "padding-left", r: "padding-right", t: "padding-top", b: "padding-bottom"}; -El.margins = {l: "margin-left", r: "margin-right", t: "margin-top", b: "margin-bottom"}; - - - - -El.cache = {}; - -var docEl; - - -El.get = function(el){ - var ex, elm, id; - if(!el){ return null; } - if(typeof el == "string"){ // element id - if(!(elm = document.getElementById(el))){ - return null; - } - if(ex = El.cache[el]){ - ex.dom = elm; - }else{ - ex = El.cache[el] = new El(elm); - } - return ex; - }else if(el.tagName){ // dom element - if(!(id = el.id)){ - id = Ext.id(el); - } - if(ex = El.cache[id]){ - ex.dom = el; - }else{ - ex = El.cache[id] = new El(el); - } - return ex; - }else if(el instanceof El){ - if(el != docEl){ - el.dom = document.getElementById(el.id) || el.dom; // refresh dom element in case no longer valid, - // catch case where it hasn't been appended - El.cache[el.id] = el; // in case it was created directly with Element(), let's cache it - } - return el; - }else if(el.isComposite){ - return el; - }else if(el instanceof Array){ - return El.select(el); - }else if(el == document){ - // create a bogus element object representing the document object - if(!docEl){ - var f = function(){}; - f.prototype = El.prototype; - docEl = new f(); - docEl.dom = document; - } - return docEl; - } - return null; -}; - -El.uncache = function(el){ - for(var i = 0, a = arguments, len = a.length; i < len; i++) { - if(a[i]){ - delete El.cache[a[i].id || a[i]]; - } - } -}; - - -// Garbage collection - uncache elements/purge listeners on orphaned elements -// so we don't hold a reference and cause the browser to retain them -El.garbageCollect = function(){ - if(!Ext.enableGarbageCollector){ - clearInterval(El.collectorThread); - return; - } - for(var eid in El.cache){ - var el = El.cache[eid], d = el.dom; - // ------------------------------------------------------- - // Determining what is garbage: - // ------------------------------------------------------- - // !d - // dom node is null, definitely garbage - // ------------------------------------------------------- - // !d.parentNode - // no parentNode == direct orphan, definitely garbage - // ------------------------------------------------------- - // !d.offsetParent && !document.getElementById(eid) - // display none elements have no offsetParent so we will - // also try to look it up by it's id. However, check - // offsetParent first so we don't do unneeded lookups. - // This enables collection of elements that are not orphans - // directly, but somewhere up the line they have an orphan - // parent. - // ------------------------------------------------------- - if(!d || !d.parentNode || (!d.offsetParent && !document.getElementById(eid))){ - delete El.cache[eid]; - if(Ext.enableListenerCollection){ - Ext.lib.Dom.purgeElement(d); - } - } - } -} -El.collectorThreadId = setInterval(El.garbageCollect, 30000); - - -// dom is optional -El.Flyweight = function(dom){ - this.dom = dom; -}; -El.Flyweight.prototype = El.prototype; - -El._flyweights = {}; - -El.fly = function(el, named){ - named = named || '_global'; - el = Ext.getDom(el); - if(!el){ - return null; - } - if(!El._flyweights[named]){ - El._flyweights[named] = new El.Flyweight(); - } - El._flyweights[named].dom = el; - return El._flyweights[named]; -}; - - -Ext.get = El.get; - -Ext.fly = El.fly; - -// speedy lookup for elements never to box adjust -var noBoxAdjust = Ext.isStrict ? { - select:1 -} : { - input:1, select:1, textarea:1 -}; -if(Ext.isIE || Ext.isGecko){ - noBoxAdjust['button'] = 1; -} - - -Ext.EventManager.on(window, 'unload', function(){ - delete El.cache; - delete El._flyweights; -}); -})(); - - - -//Notifies Element that fx methods are available -Ext.enableFx = true; - - -Ext.Fx = { - - slideIn : function(anchor, o){ - var el = this.getFxEl(); - o = o || {}; - - el.queueFx(o, function(){ - - anchor = anchor || "t"; - - // fix display to visibility - this.fixDisplay(); - - // restore values after effect - var r = this.getFxRestore(); - var b = this.getBox(); - // fixed size for slide - this.setSize(b); - - // wrap if needed - var wrap = this.fxWrap(r.pos, o, "hidden"); - - var st = this.dom.style; - st.visibility = "visible"; - st.position = "absolute"; - - // clear out temp styles after slide and unwrap - var after = function(){ - el.fxUnwrap(wrap, r.pos, o); - st.width = r.width; - st.height = r.height; - el.afterFx(o); - }; - // time to calc the positions - var a, pt = {to: [b.x, b.y]}, bw = {to: b.width}, bh = {to: b.height}; - - switch(anchor.toLowerCase()){ - case "t": - wrap.setSize(b.width, 0); - st.left = st.bottom = "0"; - a = {height: bh}; - break; - case "l": - wrap.setSize(0, b.height); - st.right = st.top = "0"; - a = {width: bw}; - break; - case "r": - wrap.setSize(0, b.height); - wrap.setX(b.right); - st.left = st.top = "0"; - a = {width: bw, points: pt}; - break; - case "b": - wrap.setSize(b.width, 0); - wrap.setY(b.bottom); - st.left = st.top = "0"; - a = {height: bh, points: pt}; - break; - case "tl": - wrap.setSize(0, 0); - st.right = st.bottom = "0"; - a = {width: bw, height: bh}; - break; - case "bl": - wrap.setSize(0, 0); - wrap.setY(b.y+b.height); - st.right = st.top = "0"; - a = {width: bw, height: bh, points: pt}; - break; - case "br": - wrap.setSize(0, 0); - wrap.setXY([b.right, b.bottom]); - st.left = st.top = "0"; - a = {width: bw, height: bh, points: pt}; - break; - case "tr": - wrap.setSize(0, 0); - wrap.setX(b.x+b.width); - st.left = st.bottom = "0"; - a = {width: bw, height: bh, points: pt}; - break; - } - this.dom.style.visibility = "visible"; - wrap.show(); - - arguments.callee.anim = wrap.fxanim(a, - o, - 'motion', - .5, - 'easeOut', after); - }); - return this; - }, - - - slideOut : function(anchor, o){ - var el = this.getFxEl(); - o = o || {}; - - el.queueFx(o, function(){ - - anchor = anchor || "t"; - - // restore values after effect - var r = this.getFxRestore(); - - var b = this.getBox(); - // fixed size for slide - this.setSize(b); - - // wrap if needed - var wrap = this.fxWrap(r.pos, o, "visible"); - - var st = this.dom.style; - st.visibility = "visible"; - st.position = "absolute"; - - wrap.setSize(b); - - var after = function(){ - if(o.useDisplay){ - el.setDisplayed(false); - }else{ - el.hide(); - } - - el.fxUnwrap(wrap, r.pos, o); - - st.width = r.width; - st.height = r.height; - - el.afterFx(o); - }; - - var a, zero = {to: 0}; - switch(anchor.toLowerCase()){ - case "t": - st.left = st.bottom = "0"; - a = {height: zero}; - break; - case "l": - st.right = st.top = "0"; - a = {width: zero}; - break; - case "r": - st.left = st.top = "0"; - a = {width: zero, points: {to:[b.right, b.y]}}; - break; - case "b": - st.left = st.top = "0"; - a = {height: zero, points: {to:[b.x, b.bottom]}}; - break; - case "tl": - st.right = st.bottom = "0"; - a = {width: zero, height: zero}; - break; - case "bl": - st.right = st.top = "0"; - a = {width: zero, height: zero, points: {to:[b.x, b.bottom]}}; - break; - case "br": - st.left = st.top = "0"; - a = {width: zero, height: zero, points: {to:[b.x+b.width, b.bottom]}}; - break; - case "tr": - st.left = st.bottom = "0"; - a = {width: zero, height: zero, points: {to:[b.right, b.y]}}; - break; - } - - arguments.callee.anim = wrap.fxanim(a, - o, - 'motion', - .5, - "easeOut", after); - }); - return this; - }, - - - puff : function(o){ - var el = this.getFxEl(); - o = o || {}; - - el.queueFx(o, function(){ - this.clearOpacity(); - this.show(); - - // restore values after effect - var r = this.getFxRestore(); - var st = this.dom.style; - - var after = function(){ - if(o.useDisplay){ - el.setDisplayed(false); - }else{ - el.hide(); - } - - el.clearOpacity(); - - el.setPositioning(r.pos); - st.width = r.width; - st.height = r.height; - st.fontSize = ''; - el.afterFx(o); - }; - - var width = this.getWidth(); - var height = this.getHeight(); - - arguments.callee.anim = this.fxanim({ - width : {to: this.adjustWidth(width * 2)}, - height : {to: this.adjustHeight(height * 2)}, - points : {by: [-(width * .5), -(height * .5)]}, - opacity : {to: 0}, - fontSize: {to:200, unit: "%"} - }, - o, - 'motion', - .5, - "easeOut", after); - }); - return this; - }, - - - switchOff : function(o){ - var el = this.getFxEl(); - o = o || {}; - - el.queueFx(o, function(){ - this.clearOpacity(); - this.clip(); - - // restore values after effect - var r = this.getFxRestore(); - var st = this.dom.style; - - var after = function(){ - if(o.useDisplay){ - el.setDisplayed(false); - }else{ - el.hide(); - } - - el.clearOpacity(); - el.setPositioning(r.pos); - st.width = r.width; - st.height = r.height; - - el.afterFx(o); - }; - - this.fxanim({opacity:{to:0.3}}, null, null, .1, null, function(){ - this.clearOpacity(); - (function(){ - this.fxanim({ - height:{to:1}, - points:{by:[0, this.getHeight() * .5]} - }, o, 'motion', 0.3, 'easeIn', after); - }).defer(100, this); - }); - }); - return this; - }, - - - highlight : function(color, o){ - var el = this.getFxEl(); - o = o || {}; - - el.queueFx(o, function(){ - color = color || "ffff9c"; - attr = o.attr || "backgroundColor"; - - this.clearOpacity(); - this.show(); - - var origColor = this.getColor(attr); - var restoreColor = this.dom.style[attr]; - endColor = (o.endColor || origColor) || "ffffff"; - - var after = function(){ - el.dom.style[attr] = restoreColor; - el.afterFx(o); - }; - - var a = {}; - a[attr] = {from: color, to: endColor}; - arguments.callee.anim = this.fxanim(a, - o, - 'color', - 1, - 'easeIn', after); - }); - return this; - }, - - - frame : function(color, count, o){ - var el = this.getFxEl(); - o = o || {}; - - el.queueFx(o, function(){ - color = color || "#C3DAF9"; - if(color.length == 6){ - color = "#" + color; - } - count = count || 1; - duration = o.duration || 1; - this.show(); - - var b = this.getBox(); - var animFn = function(){ - var proxy = this.createProxy({ - tag:"div", - style:{ - visbility:"hidden", - position:"absolute", - "z-index":"35000", // yee haw - border:"0px solid " + color - } - }); - var scale = Ext.isBorderBox ? 2 : 1; - proxy.animate({ - top:{from:b.y, to:b.y - 20}, - left:{from:b.x, to:b.x - 20}, - borderWidth:{from:0, to:10}, - opacity:{from:1, to:0}, - height:{from:b.height, to:(b.height + (20*scale))}, - width:{from:b.width, to:(b.width + (20*scale))} - }, duration, function(){ - proxy.remove(); - }); - if(--count > 0){ - animFn.defer((duration/2)*1000, this); - }else{ - el.afterFx(o); - } - }; - animFn.call(this); - }); - return this; - }, - - - pause : function(seconds){ - var el = this.getFxEl(); - var o = {}; - - el.queueFx(o, function(){ - setTimeout(function(){ - el.afterFx(o); - }, seconds * 1000); - }); - return this; - }, - - - fadeIn : function(o){ - var el = this.getFxEl(); - o = o || {}; - el.queueFx(o, function(){ - this.setOpacity(0); - this.fixDisplay(); - this.dom.style.visibility = 'visible'; - var to = o.endOpacity || 1; - arguments.callee.anim = this.fxanim({opacity:{to:to}}, - o, null, .5, "easeOut", function(){ - if(to == 1){ - this.clearOpacity(); - } - el.afterFx(o); - }); - }); - return this; - }, - - - fadeOut : function(o){ - var el = this.getFxEl(); - o = o || {}; - el.queueFx(o, function(){ - arguments.callee.anim = this.fxanim({opacity:{to:o.endOpacity || 0}}, - o, null, .5, "easeOut", function(){ - if(this.visibilityMode == Ext.Element.DISPLAY || o.useDisplay){ - this.dom.style.display = "none"; - }else{ - this.dom.style.visibility = "hidden"; - } - this.clearOpacity(); - el.afterFx(o); - }); - }); - return this; - }, - - - scale : function(w, h, o){ - this.shift(Ext.apply({}, o, { - width: w, - height: h - })); - return this; - }, - - - shift : function(o){ - var el = this.getFxEl(); - o = o || {}; - el.queueFx(o, function(){ - var a = {}, w = o.width, h = o.height, x = o.x, y = o.y, op = o.opacity; - if(w !== undefined){ - a.width = {to: this.adjustWidth(w)}; - } - if(h !== undefined){ - a.height = {to: this.adjustHeight(h)}; - } - if(x !== undefined || y !== undefined){ - a.points = {to: [ - x !== undefined ? x : this.getX(), - y !== undefined ? y : this.getY() - ]}; - } - if(op !== undefined){ - a.opacity = {to: op}; - } - if(o.xy !== undefined){ - a.points = {to: o.xy}; - } - arguments.callee.anim = this.fxanim(a, - o, 'motion', .35, "easeOut", function(){ - el.afterFx(o); - }); - }); - return this; - }, - - - ghost : function(anchor, o){ - var el = this.getFxEl(); - o = o || {}; - - el.queueFx(o, function(){ - anchor = anchor || "b"; - - // restore values after effect - var r = this.getFxRestore(); - var w = this.getWidth(), - h = this.getHeight(); - - var st = this.dom.style; - - var after = function(){ - if(o.useDisplay){ - el.setDisplayed(false); - }else{ - el.hide(); - } - - el.clearOpacity(); - el.setPositioning(r.pos); - st.width = r.width; - st.height = r.height; - - el.afterFx(o); - }; - - var a = {opacity: {to: 0}, points: {}}, pt = a.points; - switch(anchor.toLowerCase()){ - case "t": - pt.by = [0, -h]; - break; - case "l": - pt.by = [-w, 0]; - break; - case "r": - pt.by = [w, 0]; - break; - case "b": - pt.by = [0, h]; - break; - case "tl": - pt.by = [-w, -h]; - break; - case "bl": - pt.by = [-w, h]; - break; - case "br": - pt.by = [w, h]; - break; - case "tr": - pt.by = [w, -h]; - break; - } - - arguments.callee.anim = this.fxanim(a, - o, - 'motion', - .5, - "easeOut", after); - }); - return this; - }, - - - syncFx : function(){ - this.fxDefaults = Ext.apply(this.fxDefaults || {}, { - block : false, - concurrent : true, - stopFx : false - }); - return this; - }, - - - sequenceFx : function(){ - this.fxDefaults = Ext.apply(this.fxDefaults || {}, { - block : false, - concurrent : false, - stopFx : false - }); - return this; - }, - - - nextFx : function(){ - var ef = this.fxQueue[0]; - if(ef){ - ef.call(this); - } - }, - - - hasActiveFx : function(){ - return this.fxQueue && this.fxQueue[0]; - }, - - - stopFx : function(){ - if(this.hasActiveFx()){ - var cur = this.fxQueue[0]; - if(cur && cur.anim && cur.anim.isAnimated()){ - this.fxQueue = [cur]; // clear out others - cur.anim.stop(true); - } - } - return this; - }, - - - beforeFx : function(o){ - if(this.hasActiveFx() && !o.concurrent){ - if(o.stopFx){ - this.stopFx(); - return true; - } - return false; - } - return true; - }, - - - hasFxBlock : function(){ - var q = this.fxQueue; - return q && q[0] && q[0].block; - }, - - - queueFx : function(o, fn){ - if(!this.fxQueue){ - this.fxQueue = []; - } - if(!this.hasFxBlock()){ - Ext.applyIf(o, this.fxDefaults); - if(!o.concurrent){ - var run = this.beforeFx(o); - fn.block = o.block; - this.fxQueue.push(fn); - if(run){ - this.nextFx(); - } - }else{ - fn.call(this); - } - } - return this; - }, - - - fxWrap : function(pos, o, vis){ - var wrap; - if(!o.wrap || !(wrap = Ext.get(o.wrap))){ - var wrapXY; - if(o.fixPosition){ - wrapXY = this.getXY(); - } - var div = document.createElement("div"); - div.style.visibility = vis; - wrap = Ext.get(this.dom.parentNode.insertBefore(div, this.dom)); - wrap.setPositioning(pos); - if(wrap.getStyle("position") == "static"){ - wrap.position("relative"); - } - this.clearPositioning('auto'); - wrap.clip(); - wrap.dom.appendChild(this.dom); - if(wrapXY){ - wrap.setXY(wrapXY); - } - } - return wrap; - }, - - - fxUnwrap : function(wrap, pos, o){ - this.clearPositioning(); - this.setPositioning(pos); - if(!o.wrap){ - wrap.dom.parentNode.insertBefore(this.dom, wrap.dom); - wrap.remove(); - } - }, - - - getFxRestore : function(){ - var st = this.dom.style; - return {pos: this.getPositioning(), width: st.width, height : st.height}; - }, - - - afterFx : function(o){ - if(o.afterStyle){ - this.applyStyles(o.afterStyle); - } - if(o.afterCls){ - this.addClass(o.afterCls); - } - if(o.remove === true){ - this.remove(); - } - Ext.callback(o.callback, o.scope, [this]); - if(!o.concurrent){ - this.fxQueue.shift(); - this.nextFx(); - } - }, - - - getFxEl : function(){ // support for composite element fx - return Ext.get(this.dom); - }, - - - fxanim : function(args, opt, animType, defaultDur, defaultEase, cb){ - animType = animType || 'run'; - opt = opt || {}; - var anim = Ext.lib.Anim[animType]( - this.dom, args, - (opt.duration || defaultDur) || .35, - (opt.easing || defaultEase) || 'easeOut', - function(){ - Ext.callback(cb, this); - }, - this - ); - opt.anim = anim; - return anim; - } -}; - -// backwords compat -Ext.Fx.resize = Ext.Fx.scale; - -//When included, Ext.Fx is automatically applied to Element so that all basic -//effects are available directly via the Element API -Ext.apply(Ext.Element.prototype, Ext.Fx); - - -Ext.CompositeElement = function(els){ - this.elements = []; - this.addElements(els); -}; -Ext.CompositeElement.prototype = { - isComposite: true, - addElements : function(els){ - if(!els) return this; - if(typeof els == "string"){ - els = Ext.Element.selectorFunction(els); - } - var yels = this.elements; - var index = yels.length-1; - for(var i = 0, len = els.length; i < len; i++) { - yels[++index] = Ext.get(els[i], true); - } - return this; - }, - invoke : function(fn, args){ - var els = this.elements; - for(var i = 0, len = els.length; i < len; i++) { - Ext.Element.prototype[fn].apply(els[i], args); - } - return this; - }, - - add : function(els){ - if(typeof els == "string"){ - this.addElements(Ext.Element.selectorFunction(els)); - }else if(els.length !== undefined){ - this.addElements(els); - }else{ - this.addElements([els]); - } - return this; - }, - - each : function(fn, scope){ - var els = this.elements; - for(var i = 0, len = els.length; i < len; i++){ - if(fn.call(scope || els[i], els[i], this, i) === false) { - break; - } - } - return this; - }, - - - item : function(index){ - return this.elements[index]; - } -}; -(function(){ -Ext.CompositeElement.createCall = function(proto, fnName){ - if(!proto[fnName]){ - proto[fnName] = function(){ - return this.invoke(fnName, arguments); - }; - } -}; -for(var fnName in Ext.Element.prototype){ - if(typeof Ext.Element.prototype[fnName] == "function"){ - Ext.CompositeElement.createCall(Ext.CompositeElement.prototype, fnName); - } -}; -})(); - - -Ext.CompositeElementLite = function(els){ - Ext.CompositeElementLite.superclass.constructor.call(this, els); - var flyEl = function(){}; - flyEl.prototype = Ext.Element.prototype; - this.el = new Ext.Element.Flyweight(); -}; -Ext.extend(Ext.CompositeElementLite, Ext.CompositeElement, { - addElements : function(els){ - if(els){ - if(els instanceof Array){ - this.elements = this.elements.concat(els); - }else{ - var yels = this.elements; - var index = yels.length-1; - for(var i = 0, len = els.length; i < len; i++) { - yels[++index] = els[i]; - } - } - } - return this; - }, - invoke : function(fn, args){ - var els = this.elements; - var el = this.el; - for(var i = 0, len = els.length; i < len; i++) { - el.dom = els[i]; - Ext.Element.prototype[fn].apply(el, args); - } - return this; - }, - - item : function(index){ - this.el.dom = this.elements[index]; - return this.el; - }, - - // fixes scope with flyweight - addListener : function(eventName, handler, scope, opt){ - var els = this.elements; - for(var i = 0, len = els.length; i < len; i++) { - Ext.EventManager.on(els[i], eventName, handler, scope || els[i], opt); - } - return this; - }, - - - each : function(fn, scope){ - var els = this.elements; - var el = this.el; - for(var i = 0, len = els.length; i < len; i++){ - el.dom = els[i]; - if(fn.call(scope || el, el, this, i) === false){ - break; - } - } - return this; - } -}); -Ext.CompositeElementLite.prototype.on = Ext.CompositeElementLite.prototype.addListener; -if(Ext.DomQuery){ - Ext.Element.selectorFunction = Ext.DomQuery.select; -} - -Ext.Element.select = function(selector, unique, root){ - var els; - if(typeof selector == "string"){ - els = Ext.Element.selectorFunction(selector, root); - }else if(selector.length !== undefined){ - els = selector; - }else{ - throw "Invalid selector"; - } - if(unique === true){ - return new Ext.CompositeElement(els); - }else{ - return new Ext.CompositeElementLite(els); - } -}; - -Ext.select = Ext.Element.select; - -Ext.UpdateManager = function(el, forceNew){ - el = Ext.get(el); - if(!forceNew && el.updateManager){ - return el.updateManager; - } - - this.el = el; - - this.defaultUrl = null; - - this.addEvents({ - - "beforeupdate": true, - - "update": true, - - "failure": true - }); - var d = Ext.UpdateManager.defaults; - - this.sslBlankUrl = d.sslBlankUrl; - - this.disableCaching = d.disableCaching; - - this.indicatorText = d.indicatorText; - - this.showLoadIndicator = d.showLoadIndicator; - - this.timeout = d.timeout; - - - this.loadScripts = d.loadScripts; - - - this.transaction = null; - - - this.autoRefreshProcId = null; - - this.refreshDelegate = this.refresh.createDelegate(this); - - this.updateDelegate = this.update.createDelegate(this); - - this.formUpdateDelegate = this.formUpdate.createDelegate(this); - - this.successDelegate = this.processSuccess.createDelegate(this); - - this.failureDelegate = this.processFailure.createDelegate(this); - - - this.renderer = new Ext.UpdateManager.BasicRenderer(); - - Ext.UpdateManager.superclass.constructor.call(this); -}; - -Ext.extend(Ext.UpdateManager, Ext.util.Observable, { - - getEl : function(){ - return this.el; - }, - - update : function(url, params, callback, discardUrl){ - if(this.fireEvent("beforeupdate", this.el, url, params) !== false){ - var method = this.method; - if(typeof url == "object"){ // must be config object - var cfg = url; - url = cfg.url; - params = params || cfg.params; - callback = callback || cfg.callback; - discardUrl = discardUrl || cfg.discardUrl; - if(callback && cfg.scope){ - callback = callback.createDelegate(cfg.scope); - } - if(typeof cfg.method != "undefined"){method = cfg.method;}; - if(typeof cfg.nocache != "undefined"){this.disableCaching = cfg.nocache;}; - if(typeof cfg.text != "undefined"){this.indicatorText = '<div class="loading-indicator">'+cfg.text+"</div>";}; - if(typeof cfg.scripts != "undefined"){this.loadScripts = cfg.scripts;}; - if(typeof cfg.timeout != "undefined"){this.timeout = cfg.timeout;}; - } - this.showLoading(); - if(!discardUrl){ - this.defaultUrl = url; - } - if(typeof url == "function"){ - url = url.call(this); - } - if(typeof params == "function"){ - params = params(); - } - if(params && typeof params != "string"){ // must be object - var buf = []; - for(var key in params){ - if(typeof params[key] != "function"){ - buf.push(encodeURIComponent(key), "=", encodeURIComponent(params[key]), "&"); - } - } - delete buf[buf.length-1]; - params = buf.join(""); - } - var cb = { - success: this.successDelegate, - failure: this.failureDelegate, - timeout: (this.timeout*1000), - argument: {"url": url, "form": null, "callback": callback, "params": params} - }; - method = method || (params ? "POST" : "GET"); - if(method == "GET"){ - url = this.prepareUrl(url); - } - this.transaction = Ext.lib.Ajax.request(method, url, cb, params); - } - }, - - - formUpdate : function(form, url, reset, callback){ - if(this.fireEvent("beforeupdate", this.el, form, url) !== false){ - formEl = Ext.getDom(form); - if(typeof url == "function"){ - url = url.call(this); - } - if(typeof params == "function"){ - params = params(); - } - url = url || formEl.action; - var cb = { - success: this.successDelegate, - failure: this.failureDelegate, - timeout: (this.timeout*1000), - argument: {"url": url, "form": formEl, "callback": callback, "reset": reset} - }; - var isUpload = false; - var enctype = formEl.getAttribute("enctype"); - if(enctype && enctype.toLowerCase() == "multipart/form-data"){ - isUpload = true; - cb.upload = this.successDelegate; - } - this.transaction = Ext.lib.Ajax.formRequest(formEl, url, cb, null, isUpload, this.sslBlankUrl); - this.showLoading.defer(1, this); - } - }, - - - refresh : function(callback){ - if(this.defaultUrl == null){ - return; - } - this.update(this.defaultUrl, null, callback, true); - }, - - - startAutoRefresh : function(interval, url, params, callback, refreshNow){ - if(refreshNow){ - this.update(url || this.defaultUrl, params, callback, true); - } - if(this.autoRefreshProcId){ - clearInterval(this.autoRefreshProcId); - } - this.autoRefreshProcId = setInterval(this.update.createDelegate(this, [url || this.defaultUrl, params, callback, true]), interval*1000); - }, - - - stopAutoRefresh : function(){ - if(this.autoRefreshProcId){ - clearInterval(this.autoRefreshProcId); - delete this.autoRefreshProcId; - } - }, - - isAutoRefreshing : function(){ - return this.autoRefreshProcId ? true : false; - }, - - showLoading : function(){ - if(this.showLoadIndicator){ - this.el.update(this.indicatorText); - } - }, - - - prepareUrl : function(url){ - if(this.disableCaching){ - var append = "_dc=" + (new Date().getTime()); - if(url.indexOf("?") !== -1){ - url += "&" + append; - }else{ - url += "?" + append; - } - } - return url; - }, - - - processSuccess : function(response){ - this.transaction = null; - if(response.argument.form && response.argument.reset){ - try{ // put in try/catch since some older FF releases had problems with this - response.argument.form.reset(); - }catch(e){} - } - if(this.loadScripts){ - this.renderer.render(this.el, response, this, - this.updateComplete.createDelegate(this, [response])); - }else{ - this.renderer.render(this.el, response, this); - this.updateComplete(response); - } - }, - - updateComplete : function(response){ - this.fireEvent("update", this.el, response); - if(typeof response.argument.callback == "function"){ - response.argument.callback(this.el, true, response); - } - }, - - - processFailure : function(response){ - this.transaction = null; - this.fireEvent("failure", this.el, response); - if(typeof response.argument.callback == "function"){ - response.argument.callback(this.el, false, response); - } - }, - - - setRenderer : function(renderer){ - this.renderer = renderer; - }, - - getRenderer : function(){ - return this.renderer; - }, - - - setDefaultUrl : function(defaultUrl){ - this.defaultUrl = defaultUrl; - }, - - - abort : function(){ - if(this.transaction){ - Ext.lib.Ajax.abort(this.transaction); - } - }, - - - isUpdating : function(){ - if(this.transaction){ - return Ext.lib.Ajax.isCallInProgress(this.transaction); - } - return false; - } -}); - - - Ext.UpdateManager.defaults = { - - timeout : 30, - - - loadScripts : false, - - - sslBlankUrl : (Ext.SSL_SECURE_URL || "javascript:false"), - - disableCaching : false, - - showLoadIndicator : true, - - indicatorText : '<div class="loading-indicator">Loading...</div>' - }; - - -Ext.UpdateManager.updateElement = function(el, url, params, options){ - var um = Ext.get(el, true).getUpdateManager(); - Ext.apply(um, options); - um.update(url, params, options ? options.callback : null); -}; -// alias for backwards compat -Ext.UpdateManager.update = Ext.UpdateManager.updateElement; - -Ext.UpdateManager.BasicRenderer = function(){}; - -Ext.UpdateManager.BasicRenderer.prototype = { - - render : function(el, response, updateManager, callback){ - el.update(response.responseText, updateManager.loadScripts, callback); - } -}; - - -Ext.util.DelayedTask = function(fn, scope, args){ - var id = null, d, t; - - var call = function(){ - var now = new Date().getTime(); - if(now - t >= d){ - clearInterval(id); - id = null; - fn.apply(scope, args || []); - } - }; - - this.delay = function(delay, newFn, newScope, newArgs){ - if(id && delay != d){ - this.cancel(); - } - d = delay; - t = new Date().getTime(); - fn = newFn || fn; - scope = newScope || scope; - args = newArgs || args; - if(!id){ - id = setInterval(call, d); - } - }; - - - this.cancel = function(){ - if(id){ - clearInterval(id); - id = null; - } - }; -}; diff --git a/lib/web/extjs/ext-core.js b/lib/web/extjs/ext-core.js deleted file mode 100644 index ba25b3c037f5c8259d234118a5c78887b11d1133..0000000000000000000000000000000000000000 --- a/lib/web/extjs/ext-core.js +++ /dev/null @@ -1,402 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.DomHelper=function(){var tempTableEl=null;var emptyTags=/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i;var createHtml=function(o){if(typeof o=='string'){return o;} -var b="";if(!o.tag){o.tag="div";} -b+="<"+o.tag;for(var attr in o){if(attr=="tag"||attr=="children"||attr=="cn"||attr=="html"||typeof o[attr]=="function")continue;if(attr=="style"){var s=o["style"];if(typeof s=="function"){s=s.call();} -if(typeof s=="string"){b+=' style="'+s+'"';}else if(typeof s=="object"){b+=' style="';for(var key in s){if(typeof s[key]!="function"){b+=key+":"+s[key]+";";}} -b+='"';}}else{if(attr=="cls"){b+=' class="'+o["cls"]+'"';}else if(attr=="htmlFor"){b+=' for="'+o["htmlFor"]+'"';}else{b+=" "+attr+'="'+o[attr]+'"';}}} -if(emptyTags.test(o.tag)){b+="/>";}else{b+=">";var cn=o.children||o.cn;if(cn){if(cn instanceof Array){for(var i=0,len=cn.length;i<len;i++){b+=createHtml(cn[i],b);}}else{b+=createHtml(cn,b);}} -if(o.html){b+=o.html;} -b+="</"+o.tag+">";} -return b;};var createDom=function(o,parentNode){var el=document.createElement(o.tag);var useSet=el.setAttribute?true:false;for(var attr in o){if(attr=="tag"||attr=="children"||attr=="cn"||attr=="html"||attr=="style"||typeof o[attr]=="function")continue;if(attr=="cls"){el.className=o["cls"];}else{if(useSet)el.setAttribute(attr,o[attr]);else el[attr]=o[attr];}} -Ext.DomHelper.applyStyles(el,o.style);var cn=o.children||o.cn;if(cn){if(cn instanceof Array){for(var i=0,len=cn.length;i<len;i++){createDom(cn[i],el);}}else{createDom(cn,el);}} -if(o.html){el.innerHTML=o.html;} -if(parentNode){parentNode.appendChild(el);} -return el;};var ieTable=function(depth,s,h,e){tempTableEl.innerHTML=[s,h,e].join('');var i=-1,el=tempTableEl;while(++i<depth){el=el.firstChild;} -return el;};var ts='<table>',te='</table>',tbs=ts+'<tbody>',tbe='</tbody>'+te,trs=tbs+'<tr>',tre='</tr>'+tbe;var insertIntoTable=function(tag,where,el,html){if(!tempTableEl){tempTableEl=document.createElement('div');} -var node;var before=null;if(tag=='td'){if(where=='afterbegin'||where=='beforeend'){return;} -if(where=='beforebegin'){before=el;el=el.parentNode;}else{before=el.nextSibling;el=el.parentNode;} -node=ieTable(4,trs,html,tre);} -else if(tag=='tr'){if(where=='beforebegin'){before=el;el=el.parentNode;node=ieTable(3,tbs,html,tbe);}else if(where=='afterend'){before=el.nextSibling;el=el.parentNode;node=ieTable(3,tbs,html,tbe);}else{if(where=='afterbegin'){before=el.firstChild;} -node=ieTable(4,trs,html,tre);}}else if(tag=='tbody'){if(where=='beforebegin'){before=el;el=el.parentNode;node=ieTable(2,ts,html,te);}else if(where=='afterend'){before=el.nextSibling;el=el.parentNode;node=ieTable(2,ts,html,te);}else{if(where=='afterbegin'){before=el.firstChild;} -node=ieTable(3,tbs,html,tbe);}}else{if(where=='beforebegin'||where=='afterend'){return;} -if(where=='afterbegin'){before=el.firstChild;} -node=ieTable(2,ts,html,te);} -el.insertBefore(node,before);return node;};return{useDom:false,markup:function(o){return createHtml(o);},applyStyles:function(el,styles){if(styles){el=Ext.fly(el);if(typeof styles=="string"){var re=/\s?([a-z\-]*)\:\s?([^;]*);?/gi;var matches;while((matches=re.exec(styles))!=null){el.setStyle(matches[1],matches[2]);}}else if(typeof styles=="object"){for(var style in styles){el.setStyle(style,styles[style]);}}else if(typeof styles=="function"){Ext.DomHelper.applyStyles(el,styles.call());}}},insertHtml:function(where,el,html){where=where.toLowerCase();if(el.insertAdjacentHTML){var tag=el.tagName.toLowerCase();if(tag=="table"||tag=="tbody"||tag=="tr"||tag=='td'){var rs;if(rs=insertIntoTable(tag,where,el,html)){return rs;}} -switch(where){case"beforebegin":el.insertAdjacentHTML(where,html);return el.previousSibling;case"afterbegin":el.insertAdjacentHTML(where,html);return el.firstChild;case"beforeend":el.insertAdjacentHTML(where,html);return el.lastChild;case"afterend":el.insertAdjacentHTML(where,html);return el.nextSibling;} -throw'Illegal insertion point -> "'+where+'"';} -var range=el.ownerDocument.createRange();var frag;switch(where){case"beforebegin":range.setStartBefore(el);frag=range.createContextualFragment(html);el.parentNode.insertBefore(frag,el);return el.previousSibling;case"afterbegin":if(el.firstChild){range.setStartBefore(el.firstChild);frag=range.createContextualFragment(html);el.insertBefore(frag,el.firstChild);return el.firstChild;}else{el.innerHTML=html;return el.firstChild;} -case"beforeend":if(el.lastChild){range.setStartAfter(el.lastChild);frag=range.createContextualFragment(html);el.appendChild(frag);return el.lastChild;}else{el.innerHTML=html;return el.lastChild;} -case"afterend":range.setStartAfter(el);frag=range.createContextualFragment(html);el.parentNode.insertBefore(frag,el.nextSibling);return el.nextSibling;} -throw'Illegal insertion point -> "'+where+'"';},insertBefore:function(el,o,returnElement){return this.doInsert(el,o,returnElement,"beforeBegin");},insertAfter:function(el,o,returnElement){return this.doInsert(el,o,returnElement,"afterEnd","nextSibling");},insertFirst:function(el,o,returnElement){return this.doInsert(el,o,returnElement,"afterBegin");},doInsert:function(el,o,returnElement,pos,sibling){el=Ext.getDom(el);var newNode;if(this.useDom){newNode=createDom(o,null);el.parentNode.insertBefore(newNode,sibling?el[sibling]:el);}else{var html=createHtml(o);newNode=this.insertHtml(pos,el,html);} -return returnElement?Ext.get(newNode,true):newNode;},append:function(el,o,returnElement){el=Ext.getDom(el);var newNode;if(this.useDom){newNode=createDom(o,null);el.appendChild(newNode);}else{var html=createHtml(o);newNode=this.insertHtml("beforeEnd",el,html);} -return returnElement?Ext.get(newNode,true):newNode;},overwrite:function(el,o,returnElement){el=Ext.getDom(el);el.innerHTML=createHtml(o);return returnElement?Ext.get(el.firstChild,true):el.firstChild;},createTemplate:function(o){var html=createHtml(o);return new Ext.Template(html);}};}(); - -Ext.Template=function(html){if(html instanceof Array){html=html.join("");}else if(arguments.length>1){html=Array.prototype.join.call(arguments,"");} -this.html=html;};Ext.Template.prototype={applyTemplate:function(values){if(this.compiled){return this.compiled(values);} -var useF=this.disableFormats!==true;var fm=Ext.util.Format,tpl=this;var fn=function(m,name,format,args){if(format&&useF){if(format.substr(0,5)=="this."){return tpl.call(format.substr(5),values[name],values);}else{if(args){var re=/^\s*['"](.*)["']\s*$/;args=args.split(',');for(var i=0,len=args.length;i<len;i++){args[i]=args[i].replace(re,"$1");} -args=[values[name]].concat(args);}else{args=[values[name]];} -return fm[format].apply(fm,args);}}else{return values[name]!==undefined?values[name]:"";}};return this.html.replace(this.re,fn);},set:function(html,compile){this.html=html;this.compiled=null;if(compile){this.compile();} -return this;},disableFormats:false,re:/\{([\w-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,compile:function(){var fm=Ext.util.Format;var useF=this.disableFormats!==true;var sep=Ext.isGecko?"+":",";var fn=function(m,name,format,args){if(format&&useF){args=args?','+args:"";if(format.substr(0,5)!="this."){format="fm."+format+'(';}else{format='this.call("'+format.substr(5)+'", ';args=", values";}}else{args='';format="(values['"+name+"'] == undefined ? '' : ";} -return"'"+sep+format+"values['"+name+"']"+args+")"+sep+"'";};var body;if(Ext.isGecko){body="this.compiled = function(values){ return '"+ -this.html.replace(/(\r\n|\n)/g,'\\n').replace(/'/g,"\\'").replace(this.re,fn)+"';};";}else{body=["this.compiled = function(values){ return ['"];body.push(this.html.replace(/(\r\n|\n)/g,'\\n').replace("'","\\'").replace(this.re,fn));body.push("'].join('');};");body=body.join('');} -eval(body);return this;},call:function(fnName,value,allValues){return this[fnName](value,allValues);},insertFirst:function(el,values,returnElement){return this.doInsert('afterBegin',el,values,returnElement);},insertBefore:function(el,values,returnElement){return this.doInsert('beforeBegin',el,values,returnElement);},insertAfter:function(el,values,returnElement){return this.doInsert('afterEnd',el,values,returnElement);},append:function(el,values,returnElement){return this.doInsert('beforeEnd',el,values,returnElement);},doInsert:function(where,el,values,returnEl){el=Ext.getDom(el);var newNode=Ext.DomHelper.insertHtml(where,el,this.applyTemplate(values));return returnEl?Ext.get(newNode,true):newNode;},overwrite:function(el,values,returnElement){el=Ext.getDom(el);el.innerHTML=this.applyTemplate(values);return returnElement?Ext.get(el.firstChild,true):el.firstChild;}};Ext.Template.prototype.apply=Ext.Template.prototype.applyTemplate;Ext.DomHelper.Template=Ext.Template;Ext.Template.from=function(el){el=Ext.getDom(el);return new Ext.Template(el.value||el.innerHTML);};Ext.MasterTemplate=function(){Ext.MasterTemplate.superclass.constructor.apply(this,arguments);this.originalHtml=this.html;var st={};var m,re=this.subTemplateRe;re.lastIndex=0;var subIndex=0;while(m=re.exec(this.html)){var name=m[1],content=m[2];st[subIndex]={name:name,index:subIndex,buffer:[],tpl:new Ext.Template(content)};if(name){st[name]=st[subIndex];} -st[subIndex].tpl.compile();st[subIndex].tpl.call=this.call.createDelegate(this);subIndex++;} -this.subCount=subIndex;this.subs=st;};Ext.extend(Ext.MasterTemplate,Ext.Template,{subTemplateRe:/<tpl(?:\sname="([\w-]+)")?>((?:.|\n)*?)<\/tpl>/gi,add:function(name,values){if(arguments.length==1){values=arguments[0];name=0;} -var s=this.subs[name];s.buffer[s.buffer.length]=s.tpl.apply(values);return this;},fill:function(name,values,reset){var a=arguments;if(a.length==1||(a.length==2&&typeof a[1]=="boolean")){values=a[0];name=0;reset=a[1];} -if(reset){this.reset();} -for(var i=0,len=values.length;i<len;i++){this.add(name,values[i]);} -return this;},reset:function(){var s=this.subs;for(var i=0;i<this.subCount;i++){s[i].buffer=[];} -return this;},applyTemplate:function(values){var s=this.subs;var replaceIndex=-1;this.html=this.originalHtml.replace(this.subTemplateRe,function(m,name){return s[++replaceIndex].buffer.join("");});return Ext.MasterTemplate.superclass.applyTemplate.call(this,values);},apply:function(){return this.applyTemplate.apply(this,arguments);},compile:function(){return this;}});Ext.MasterTemplate.prototype.addAll=Ext.MasterTemplate.prototype.fill;Ext.MasterTemplate.from=function(el){el=Ext.getDom(el);return new Ext.MasterTemplate(el.value||el.innerHTML);}; - -Ext.DomQuery=function(){var cache={},simpleCache={},valueCache={};var nonSpace=/\S/;var trimRe=/^\s+|\s+$/g;var tplRe=/\{(\d+)\}/g;var modeRe=/^(\s?[\/>]\s?|\s|$)/;var tagTokenRe=/^(#)?([\w-\*]+)/;function child(p,index){var i=0;var n=p.firstChild;while(n){if(n.nodeType==1){if(++i==index){return n;}} -n=n.nextSibling;} -return null;};function next(n){while((n=n.nextSibling)&&n.nodeType!=1);return n;};function prev(n){while((n=n.previousSibling)&&n.nodeType!=1);return n;};function clean(d){var n=d.firstChild,ni=-1;while(n){var nx=n.nextSibling;if(n.nodeType==3&&!nonSpace.test(n.nodeValue)){d.removeChild(n);}else{n.nodeIndex=++ni;} -n=nx;} -return this;};function byClassName(c,a,v,re,cn){if(!v){return c;} -var r=[];for(var i=0,ci;ci=c[i];i++){cn=ci.className;if(cn&&(' '+cn+' ').indexOf(v)!=-1){r[r.length]=ci;}} -return r;};function attrValue(n,attr){if(!n.tagName&&typeof n.length!="undefined"){n=n[0];} -if(!n){return null;} -if(attr=="for"){return n.htmlFor;} -if(attr=="class"||attr=="className"){return n.className;} -return n.getAttribute(attr)||n[attr];};function getNodes(ns,mode,tagName){var result=[],cs;if(!ns){return result;} -mode=mode?mode.replace(trimRe,""):"";tagName=tagName||"*";if(typeof ns.getElementsByTagName!="undefined"){ns=[ns];} -if(mode!="/"&&mode!=">"){for(var i=0,ni;ni=ns[i];i++){cs=ni.getElementsByTagName(tagName);for(var j=0,ci;ci=cs[j];j++){result[result.length]=ci;}}}else{for(var i=0,ni;ni=ns[i];i++){var cn=ni.getElementsByTagName(tagName);for(var j=0,cj;cj=cn[j];j++){if(cj.parentNode==ni){result[result.length]=cj;}}}} -return result;};function concat(a,b){if(b.slice){return a.concat(b);} -for(var i=0,l=b.length;i<l;i++){a[a.length]=b[i];} -return a;} -function byTag(cs,tagName){if(cs.tagName||cs==document){cs=[cs];} -if(!tagName){return cs;} -var r=[];tagName=tagName.toLowerCase();for(var i=0,ci;ci=cs[i];i++){if(ci.nodeType==1&&ci.tagName.toLowerCase()==tagName){r[r.length]=ci;}} -return r;};function byId(cs,attr,id){if(cs.tagName||cs==document){cs=[cs];} -if(!id){return cs;} -var r=[];for(var i=0,ci;ci=cs[i];i++){if(ci&&ci.id==id){r[r.length]=ci;return r;}} -return r;};function byAttribute(cs,attr,value,op,custom){var r=[],st=custom=="{";var f=Ext.DomQuery.operators[op];for(var i=0;ci=cs[i];i++){var a;if(st){a=Ext.DomQuery.getStyle(ci,attr);} -else if(attr=="class"||attr=="className"){a=ci.className;}else if(attr=="for"){a=ci.htmlFor;}else if(attr=="href"){a=ci.getAttribute("href",2);}else{a=ci.getAttribute(attr);} -if((f&&f(a,value))||(!f&&a)){r[r.length]=ci;}} -return r;};function byPseudo(cs,name,value){return Ext.DomQuery.pseudos[name](cs,value);};var isIE=window.ActiveXObject?true:false;var key=30803;function nodupIEXml(cs){var d=++key;cs[0].setAttribute("_nodup",d);var r=[cs[0]];for(var i=1,len=cs.length;i<len;i++){var c=cs[i];if(!c.getAttribute("_nodup")!=d){c.setAttribute("_nodup",d);r[r.length]=c;}} -for(var i=0,len=cs.length;i<len;i++){cs[i].removeAttribute("_nodup");} -return r;} -function nodup(cs){if(!cs){return[];} -var len=cs.length,c,i,r=cs,cj;if(!len||typeof cs.nodeType!="undefined"||len==1){return cs;} -if(isIE&&typeof cs[0].selectSingleNode!="undefined"){return nodupIEXml(cs);} -var d=++key;cs[0]._nodup=d;for(i=1;c=cs[i];i++){if(c._nodup!=d){c._nodup=d;}else{r=[];for(var j=0;j<i;j++){r[r.length]=cs[j];} -for(j=i+1;cj=cs[j];j++){if(cj._nodup!=d){cj._nodup=d;r[r.length]=cj;}} -return r;}} -return r;} -function quickDiffIEXml(c1,c2){var d=++key;for(var i=0,len=c1.length;i<len;i++){c1[i].setAttribute("_qdiff",d);} -var r=[];for(var i=0,len=c2.length;i<len;i++){if(c2[i].getAttribute("_qdiff")!=d){r[r.length]=c2[i];}} -for(var i=0,len=c1.length;i<len;i++){c1[i].removeAttribute("_qdiff");} -return r;} -function quickDiff(c1,c2){var len1=c1.length;if(!len1){return c2;} -if(isIE&&c1[0].selectSingleNode){return quickDiffIEXml(c1,c2);} -var d=++key;for(var i=0;i<len1;i++){c1[i]._qdiff=d;} -var r=[];for(var i=0,len=c2.length;i<len;i++){if(c2[i]._qdiff!=d){r[r.length]=c2[i];}} -return r;} -function quickId(ns,mode,root,id){if(ns==root){var d=root.ownerDocument||root;return d.getElementById(id);} -ns=getNodes(ns,mode,"*");return byId(ns,null,id);} -return{getStyle:function(el,name){return Ext.fly(el).getStyle(name);},compile:function(path,type){type=type||"select";var fn=["var f = function(root){\n var mode; var n = root || document;\n"];var q=path,mode,lq;var tk=Ext.DomQuery.matchers;var tklen=tk.length;var mm;var lmode=q.match(modeRe);if(lmode&&lmode[1]){fn[fn.length]='mode="'+lmode[1]+'";';q=q.replace(lmode[1],"");} -while(path.substr(0,1)=="/"){path=path.substr(1);} -while(q&&lq!=q){lq=q;var tm=q.match(tagTokenRe);if(type=="select"){if(tm){if(tm[1]=="#"){fn[fn.length]='n = quickId(n, mode, root, "'+tm[2]+'");';}else{fn[fn.length]='n = getNodes(n, mode, "'+tm[2]+'");';} -q=q.replace(tm[0],"");}else if(q.substr(0,1)!='@'){fn[fn.length]='n = getNodes(n, mode, "*");';}}else{if(tm){if(tm[1]=="#"){fn[fn.length]='n = byId(n, null, "'+tm[2]+'");';}else{fn[fn.length]='n = byTag(n, "'+tm[2]+'");';} -q=q.replace(tm[0],"");}} -while(!(mm=q.match(modeRe))){var matched=false;for(var j=0;j<tklen;j++){var t=tk[j];var m=q.match(t.re);if(m){fn[fn.length]=t.select.replace(tplRe,function(x,i){return m[i];});q=q.replace(m[0],"");matched=true;break;}} -if(!matched){throw'Error parsing selector, parsing failed at "'+q+'"';}} -if(mm[1]){fn[fn.length]='mode="'+mm[1]+'";';q=q.replace(mm[1],"");}} -fn[fn.length]="return nodup(n);\n}";eval(fn.join(""));return f;},select:function(path,root,type){if(!root||root==document){root=document;} -if(typeof root=="string"){root=document.getElementById(root);} -var paths=path.split(",");var results=[];for(var i=0,len=paths.length;i<len;i++){var p=paths[i].replace(trimRe,"");if(!cache[p]){cache[p]=Ext.DomQuery.compile(p);if(!cache[p]){throw p+" is not a valid selector";}} -var result=cache[p](root);if(result&&result!=document){results=results.concat(result);}} -return results;},selectNode:function(path,root){return Ext.DomQuery.select(path,root)[0];},selectValue:function(path,root,defaultValue){path=path.replace(trimRe,"");if(!valueCache[path]){valueCache[path]=Ext.DomQuery.compile(path,"select");} -var n=valueCache[path](root);n=n[0]?n[0]:n;var v=(n&&n.firstChild?n.firstChild.nodeValue:null);return(v===null?defaultValue:v);},selectNumber:function(path,root,defaultValue){var v=Ext.DomQuery.selectValue(path,root,defaultValue||0);return parseFloat(v);},is:function(el,ss){if(typeof el=="string"){el=document.getElementById(el);} -var isArray=(el instanceof Array);var result=Ext.DomQuery.filter(isArray?el:[el],ss);return isArray?(result.length==el.length):(result.length>0);},filter:function(els,ss,nonMatches){ss=ss.replace(trimRe,"");if(!simpleCache[ss]){simpleCache[ss]=Ext.DomQuery.compile(ss,"simple");} -var result=simpleCache[ss](els);return nonMatches?quickDiff(result,els):result;},matchers:[{re:/^\.([\w-]+)/,select:'n = byClassName(n, null, " {1} ");'},{re:/^\:([\w-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/,select:'n = byPseudo(n, "{1}", "{2}");'},{re:/^(?:([\[\{])(?:@)?([\w-]+)\s?(?:(=|.=)\s?['"]?(.*?)["']?)?[\]\}])/,select:'n = byAttribute(n, "{2}", "{4}", "{3}", "{1}");'},{re:/^#([\w-]+)/,select:'n = byId(n, null, "{1}");'},{re:/^@([\w-]+)/,select:'return {firstChild:{nodeValue:attrValue(n, "{1}")}};'}],operators:{"=":function(a,v){return a==v;},"!=":function(a,v){return a!=v;},"^=":function(a,v){return a&&a.substr(0,v.length)==v;},"$=":function(a,v){return a&&a.substr(a.length-v.length)==v;},"*=":function(a,v){return a&&a.indexOf(v)!==-1;},"%=":function(a,v){return(a%v)==0;}},pseudos:{"first-child":function(c){var r=[],n;for(var i=0,ci;ci=n=c[i];i++){while((n=n.previousSibling)&&n.nodeType!=1);if(!n){r[r.length]=ci;}} -return r;},"last-child":function(c){var r=[];for(var i=0,ci;ci=n=c[i];i++){while((n=n.nextSibling)&&n.nodeType!=1);if(!n){r[r.length]=ci;}} -return r;},"nth-child":function(c,a){var r=[];if(a!="odd"&&a!="even"){for(var i=0,ci;ci=c[i];i++){var m=child(ci.parentNode,a);if(m==ci){r[r.length]=m;}} -return r;} -var p;for(var i=0,l=c.length;i<l;i++){var cp=c[i].parentNode;if(cp!=p){clean(cp);p=cp;}} -for(var i=0,ci;ci=c[i];i++){var m=false;if(a=="odd"){m=((ci.nodeIndex+1)%2==1);}else if(a=="even"){m=((ci.nodeIndex+1)%2==0);} -if(m){r[r.length]=ci;}} -return r;},"only-child":function(c){var r=[];for(var i=0,ci;ci=c[i];i++){if(!prev(ci)&&!next(ci)){r[r.length]=ci;}} -return r;},"empty":function(c){var r=[];for(var i=0,ci;ci=c[i];i++){var cns=ci.childNodes,j=0,cn,empty=true;while(cn=cns[j]){++j;if(cn.nodeType==1||cn.nodeType==3){empty=false;break;}} -if(empty){r[r.length]=ci;}} -return r;},"contains":function(c,v){var r=[];for(var i=0,ci;ci=c[i];i++){if(ci.innerHTML.indexOf(v)!==-1){r[r.length]=ci;}} -return r;},"nodeValue":function(c,v){var r=[];for(var i=0,ci;ci=c[i];i++){if(ci.firstChild&&ci.firstChild.nodeValue==v){r[r.length]=ci;}} -return r;},"checked":function(c){var r=[];for(var i=0,ci;ci=c[i];i++){if(ci.checked==true){r[r.length]=ci;}} -return r;},"not":function(c,ss){return Ext.DomQuery.filter(c,ss,true);},"odd":function(c){return this["nth-child"](c,"odd");},"even":function(c){return this["nth-child"](c,"even");},"nth":function(c,a){return c[a-1]||[];},"first":function(c){return c[0]||[];},"last":function(c){return c[c.length-1]||[];},"has":function(c,ss){var s=Ext.DomQuery.select;var r=[];for(var i=0,ci;ci=c[i];i++){if(s(ss,ci).length>0){r[r.length]=ci;}} -return r;},"next":function(c,ss){var is=Ext.DomQuery.is;var r=[];for(var i=0,ci;ci=c[i];i++){var n=next(ci);if(n&&is(n,ss)){r[r.length]=ci;}} -return r;},"prev":function(c,ss){var is=Ext.DomQuery.is;var r=[];for(var i=0,ci;ci=c[i];i++){var n=prev(ci);if(n&&is(n,ss)){r[r.length]=ci;}} -return r;}}};}();Ext.query=Ext.DomQuery.select; - -Ext.util.Observable=function(){if(this.listeners){this.on(this.listeners);delete this.listeners;}};Ext.util.Observable.prototype={fireEvent:function(){var ce=this.events[arguments[0].toLowerCase()];if(typeof ce=="object"){return ce.fire.apply(ce,Array.prototype.slice.call(arguments,1));}else{return true;}},filterOptRe:/^(?:scope|delay|buffer|single)$/,addListener:function(eventName,fn,scope,o){if(typeof eventName=="object"){o=eventName;for(var e in o){if(this.filterOptRe.test(e)){continue;} -if(typeof o[e]=="function"){this.addListener(e,o[e],o.scope,o);}else{this.addListener(e,o[e].fn,o[e].scope,o[e]);}} -return;} -o=(!o||typeof o=="boolean")?{}:o;eventName=eventName.toLowerCase();var ce=this.events[eventName]||true;if(typeof ce=="boolean"){ce=new Ext.util.Event(this,eventName);this.events[eventName]=ce;} -ce.addListener(fn,scope,o);},removeListener:function(eventName,fn,scope){var ce=this.events[eventName.toLowerCase()];if(typeof ce=="object"){ce.removeListener(fn,scope);}},purgeListeners:function(){for(var evt in this.events){if(typeof this.events[evt]=="object"){this.events[evt].clearListeners();}}},relayEvents:function(o,events){var createHandler=function(ename){return function(){return this.fireEvent.apply(this,Ext.combine(ename,Array.prototype.slice.call(arguments,0)));};};for(var i=0,len=events.length;i<len;i++){var ename=events[i];if(!this.events[ename]){this.events[ename]=true;};o.on(ename,createHandler(ename),this);}},addEvents:function(o){if(!this.events){this.events={};} -Ext.applyIf(this.events,o);},hasListener:function(eventName){var e=this.events[eventName];return typeof e=="object"&&e.listeners.length>0;}};Ext.util.Observable.prototype.on=Ext.util.Observable.prototype.addListener;Ext.util.Observable.prototype.un=Ext.util.Observable.prototype.removeListener;Ext.util.Observable.capture=function(o,fn,scope){o.fireEvent=o.fireEvent.createInterceptor(fn,scope);};Ext.util.Observable.releaseCapture=function(o){o.fireEvent=Ext.util.Observable.prototype.fireEvent;};(function(){var createBuffered=function(h,o,scope){var task=new Ext.util.DelayedTask();return function(){task.delay(o.buffer,h,scope,Array.prototype.slice.call(arguments,0));};};var createSingle=function(h,e,fn,scope){return function(){e.removeListener(fn,scope);return h.apply(scope,arguments);};};var createDelayed=function(h,o,scope){return function(){var args=Array.prototype.slice.call(arguments,0);setTimeout(function(){h.apply(scope,args);},o.delay||10);};};Ext.util.Event=function(obj,name){this.name=name;this.obj=obj;this.listeners=[];};Ext.util.Event.prototype={addListener:function(fn,scope,options){var o=options||{};scope=scope||this.obj;if(!this.isListening(fn,scope)){var l={fn:fn,scope:scope,options:o};var h=fn;if(o.delay){h=createDelayed(h,o,scope);} -if(o.single){h=createSingle(h,this,fn,scope);} -if(o.buffer){h=createBuffered(h,o,scope);} -l.fireFn=h;if(!this.firing){this.listeners.push(l);}else{this.listeners=this.listeners.slice(0);this.listeners.push(l);}}},findListener:function(fn,scope){scope=scope||this.obj;var ls=this.listeners;for(var i=0,len=ls.length;i<len;i++){var l=ls[i];if(l.fn==fn&&l.scope==scope){return i;}} -return-1;},isListening:function(fn,scope){return this.findListener(fn,scope)!=-1;},removeListener:function(fn,scope){var index;if((index=this.findListener(fn,scope))!=-1){if(!this.firing){this.listeners.splice(index,1);}else{this.listeners=this.listeners.slice(0);this.listeners.splice(index,1);} -return true;} -return false;},clearListeners:function(){this.listeners=[];},fire:function(){var ls=this.listeners,scope,len=ls.length;if(len>0){this.firing=true;var args=Array.prototype.slice.call(arguments,0);for(var i=0;i<len;i++){var l=ls[i];if(l.fireFn.apply(l.scope,arguments)===false){this.firing=false;return false;}} -this.firing=false;} -return true;}};})(); - -Ext.EventManager=function(){var docReadyEvent,docReadyProcId,docReadyState=false;var resizeEvent,resizeTask,textEvent,textSize;var E=Ext.lib.Event;var D=Ext.lib.Dom;var fireDocReady=function(){if(!docReadyState){docReadyState=true;Ext.isReady=true;if(docReadyProcId){clearInterval(docReadyProcId);} -if(Ext.isGecko||Ext.isOpera){document.removeEventListener("DOMContentLoaded",fireDocReady,false);} -if(docReadyEvent){docReadyEvent.fire();docReadyEvent.clearListeners();}}};var initDocReady=function(){docReadyEvent=new Ext.util.Event();if(Ext.isGecko||Ext.isOpera){document.addEventListener("DOMContentLoaded",fireDocReady,false);}else if(Ext.isIE){document.write("<s"+'cript id="ie-deferred-loader" defer="defer" src="/'+'/:"></s'+"cript>");var defer=document.getElementById("ie-deferred-loader");defer.onreadystatechange=function(){if(this.readyState=="complete"){fireDocReady();defer.onreadystatechange=null;defer.parentNode.removeChild(defer);}};}else if(Ext.isSafari){docReadyProcId=setInterval(function(){var rs=document.readyState;if(rs=="complete"){fireDocReady();}},10);} -E.on(window,"load",fireDocReady);};var createBuffered=function(h,o){var task=new Ext.util.DelayedTask(h);return function(e){e=new Ext.EventObjectImpl(e);task.delay(o.buffer,h,null,[e]);};};var createSingle=function(h,el,ename,fn){return function(e){Ext.EventManager.removeListener(el,ename,fn);h(e);};};var createDelayed=function(h,o){return function(e){e=new Ext.EventObjectImpl(e);setTimeout(function(){h(e);},o.delay||10);};};var listen=function(element,ename,opt,fn,scope){var o=(!opt||typeof opt=="boolean")?{}:opt;fn=fn||o.fn;scope=scope||o.scope;var el=Ext.getDom(element);if(!el){throw"Error listening for \""+ename+'\". Element "'+element+'" doesn\'t exist.';} -var h=function(e){e=Ext.EventObject.setEvent(e);var t;if(o.delegate){t=e.getTarget(o.delegate,el);if(!t){return;}}else{t=e.target;} -if(o.stopEvent===true){e.stopEvent();} -if(o.preventDefault===true){e.preventDefault();} -if(o.stopPropagation===true){e.stopPropagation();} -if(o.normalized===false){e=e.browserEvent;} -fn.call(scope||el,e,t,o);};if(o.delay){h=createDelayed(h,o);} -if(o.single){h=createSingle(h,el,ename,fn);} -if(o.buffer){h=createBuffered(h,o);} -fn._handlers=fn._handlers||[];fn._handlers.push([Ext.id(el),ename,h]);E.on(el,ename,h);if(ename=="mousewheel"&&el.addEventListener){el.addEventListener("DOMMouseScroll",h,false);E.on(window,'unload',function(){el.removeEventListener("DOMMouseScroll",h,false);});} -if(ename=="mousedown"&&el==document){Ext.EventManager.stoppedMouseDownEvent.addListener(h);} -return h;};var stopListening=function(el,ename,fn){var id=Ext.id(el),hds=fn._handlers,hd=fn;if(hds){for(var i=0,len=hds.length;i<len;i++){var h=hds[i];if(h[0]==id&&h[1]==ename){hd=h[2];hds.splice(i,1);break;}}} -E.un(el,ename,hd);el=Ext.getDom(el);if(ename=="mousewheel"&&el.addEventListener){el.removeEventListener("DOMMouseScroll",hd,false);} -if(ename=="mousedown"&&el==document){Ext.EventManager.stoppedMouseDownEvent.removeListener(hd);}};var propRe=/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized)$/;var pub={wrap:function(fn,scope,override){return function(e){Ext.EventObject.setEvent(e);fn.call(override?scope||window:window,Ext.EventObject,scope);};},addListener:function(element,eventName,fn,scope,options){if(typeof eventName=="object"){var o=eventName;for(var e in o){if(propRe.test(e)){continue;} -if(typeof o[e]=="function"){listen(element,e,o,o[e],o.scope);}else{listen(element,e,o[e]);}} -return;} -return listen(element,eventName,options,fn,scope);},removeListener:function(element,eventName,fn){return stopListening(element,eventName,fn);},onDocumentReady:function(fn,scope,options){if(docReadyState){fn.call(scope||window,scope);return;} -if(!docReadyEvent){initDocReady();} -docReadyEvent.addListener(fn,scope,options);},onWindowResize:function(fn,scope,options){if(!resizeEvent){resizeEvent=new Ext.util.Event();resizeTask=new Ext.util.DelayedTask(function(){resizeEvent.fire(D.getViewWidth(),D.getViewHeight());});E.on(window,"resize",function(){if(Ext.isIE){resizeTask.delay(50);}else{resizeEvent.fire(D.getViewWidth(),D.getViewHeight());}});} -resizeEvent.addListener(fn,scope,options);},onTextResize:function(fn,scope,options){if(!textEvent){textEvent=new Ext.util.Event();var textEl=new Ext.Element(document.createElement('div'));textEl.dom.className='x-text-resize';textEl.dom.innerHTML='X';textEl.appendTo(document.body);textSize=textEl.dom.offsetHeight;setInterval(function(){if(textEl.dom.offsetHeight!=textSize){textEvent.fire(textSize,textSize=textEl.dom.offsetHeight);}},this.textResizeInterval);} -textEvent.addListener(fn,scope,options);},removeResizeListener:function(fn,scope){if(resizeEvent){resizeEvent.removeListener(fn,scope);}},fireResize:function(){if(resizeEvent){resizeEvent.fire(D.getViewWidth(),D.getViewHeight());}},ieDeferSrc:false,textResizeInterval:50};pub.on=pub.addListener;pub.un=pub.removeListener;pub.stoppedMouseDownEvent=new Ext.util.Event();return pub;}();Ext.onReady=Ext.EventManager.onDocumentReady;Ext.onReady(function(){var bd=Ext.get(document.body);if(!bd){return;} -var cls=Ext.isIE?"ext-ie":Ext.isGecko?"ext-gecko":Ext.isOpera?"ext-opera":Ext.isSafari?"ext-safari":"";if(Ext.isBorderBox){cls+=' ext-border-box';} -if(Ext.isStrict){cls+=' ext-strict';} -bd.addClass(cls);});Ext.EventObject=function(){var E=Ext.lib.Event;var safariKeys={63234:37,63235:39,63232:38,63233:40,63276:33,63277:34,63272:46,63273:36,63275:35};var btnMap=Ext.isIE?{1:0,4:1,2:2}:(Ext.isSafari?{1:0,2:1,3:2}:{0:0,1:1,2:2});Ext.EventObjectImpl=function(e){if(e){this.setEvent(e.browserEvent||e);}};Ext.EventObjectImpl.prototype={browserEvent:null,button:-1,shiftKey:false,ctrlKey:false,altKey:false,BACKSPACE:8,TAB:9,RETURN:13,ENTER:13,SHIFT:16,CONTROL:17,ESC:27,SPACE:32,PAGEUP:33,PAGEDOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46,F5:116,setEvent:function(e){if(e==this||(e&&e.browserEvent)){return e;} -this.browserEvent=e;if(e){this.button=e.button?btnMap[e.button]:(e.which?e.which-1:-1);if(e.type=='click'&&this.button==-1){this.button=0;} -this.shiftKey=e.shiftKey;this.ctrlKey=e.ctrlKey||e.metaKey;this.altKey=e.altKey;this.keyCode=e.keyCode;this.charCode=e.charCode;this.target=E.getTarget(e);this.xy=E.getXY(e);}else{this.button=-1;this.shiftKey=false;this.ctrlKey=false;this.altKey=false;this.keyCode=0;this.charCode=0;this.target=null;this.xy=[0,0];} -return this;},stopEvent:function(){if(this.browserEvent){if(this.browserEvent.type=='mousedown'){Ext.EventManager.stoppedMouseDownEvent.fire(this);} -E.stopEvent(this.browserEvent);}},preventDefault:function(){if(this.browserEvent){E.preventDefault(this.browserEvent);}},isNavKeyPress:function(){var k=this.keyCode;k=Ext.isSafari?(safariKeys[k]||k):k;return(k>=33&&k<=40)||k==this.RETURN||k==this.TAB||k==this.ESC;},isSpecialKey:function(){var k=this.keyCode;return k==9||k==13||k==40||k==27||(k==16)||(k==17)||(k>=18&&k<=20)||(k>=33&&k<=35)||(k>=36&&k<=39)||(k>=44&&k<=45);},stopPropagation:function(){if(this.browserEvent){if(this.browserEvent.type=='mousedown'){Ext.EventManager.stoppedMouseDownEvent.fire(this);} -E.stopPropagation(this.browserEvent);}},getCharCode:function(){return this.charCode||this.keyCode;},getKey:function(){var k=this.keyCode||this.charCode;return Ext.isSafari?(safariKeys[k]||k):k;},getPageX:function(){return this.xy[0];},getPageY:function(){return this.xy[1];},getTime:function(){if(this.browserEvent){return E.getTime(this.browserEvent);} -return null;},getXY:function(){return this.xy;},getTarget:function(selector,maxDepth,returnEl){return selector?Ext.fly(this.target).findParent(selector,maxDepth,returnEl):this.target;},getRelatedTarget:function(){if(this.browserEvent){return E.getRelatedTarget(this.browserEvent);} -return null;},getWheelDelta:function(){var e=this.browserEvent;var delta=0;if(e.wheelDelta){delta=e.wheelDelta/120;if(window.opera)delta=-delta;}else if(e.detail){delta=-e.detail/3;} -return delta;},hasModifier:function(){return((this.ctrlKey||this.altKey)||this.shiftKey)?true:false;},within:function(el,related){var t=this[related?"getRelatedTarget":"getTarget"]();return t&&Ext.fly(el).contains(t);},getPoint:function(){return new Ext.lib.Point(this.xy[0],this.xy[1]);}};return new Ext.EventObjectImpl();}(); - -(function(){var D=Ext.lib.Dom;var E=Ext.lib.Event;var A=Ext.lib.Anim;var propCache={};var camelRe=/(-[a-z])/gi;var camelFn=function(m,a){return a.charAt(1).toUpperCase();};var view=document.defaultView;Ext.Element=function(element,forceNew){var dom=typeof element=="string"?document.getElementById(element):element;if(!dom){return null;} -if(!forceNew&&Ext.Element.cache[dom.id]){return Ext.Element.cache[dom.id];} -this.dom=dom;this.id=dom.id||Ext.id(dom);};var El=Ext.Element;El.prototype={originalDisplay:"",visibilityMode:1,defaultUnit:"px",setVisibilityMode:function(visMode){this.visibilityMode=visMode;return this;},enableDisplayMode:function(display){this.setVisibilityMode(El.DISPLAY);if(typeof display!="undefined")this.originalDisplay=display;return this;},findParent:function(simpleSelector,maxDepth,returnEl){var p=this.dom,b=document.body,depth=0,dq=Ext.DomQuery,stopEl;maxDepth=maxDepth||50;if(typeof maxDepth!="number"){stopEl=Ext.getDom(maxDepth);maxDepth=10;} -while(p&&p.nodeType==1&&depth<maxDepth&&p!=b&&p!=stopEl){if(dq.is(p,simpleSelector)){return returnEl?Ext.get(p):p;} -depth++;p=p.parentNode;} -return null;},findParentNode:function(simpleSelector,maxDepth,returnEl){var p=Ext.fly(this.dom.parentNode,'_internal');return p?p.findParent(simpleSelector,maxDepth,returnEl):null;},up:function(simpleSelector,maxDepth){return this.findParentNode(simpleSelector,maxDepth,true);},is:function(simpleSelector){return Ext.DomQuery.is(this.dom,simpleSelector);},animate:function(args,duration,onComplete,easing,animType){this.anim(args,{duration:duration,callback:onComplete,easing:easing},animType);return this;},anim:function(args,opt,animType,defaultDur,defaultEase,cb){animType=animType||'run';opt=opt||{};var anim=Ext.lib.Anim[animType](this.dom,args,(opt.duration||defaultDur)||.35,(opt.easing||defaultEase)||'easeOut',function(){Ext.callback(cb,this);Ext.callback(opt.callback,opt.scope||this,[this,opt]);},this);opt.anim=anim;return anim;},preanim:function(a,i){return!a[i]?false:(typeof a[i]=="object"?a[i]:{duration:a[i+1],callback:a[i+2],easing:a[i+3]});},clean:function(forceReclean){if(this.isCleaned&&forceReclean!==true){return this;} -var ns=/\S/;var d=this.dom,n=d.firstChild,ni=-1;while(n){var nx=n.nextSibling;if(n.nodeType==3&&!ns.test(n.nodeValue)){d.removeChild(n);}else{n.nodeIndex=++ni;} -n=nx;} -this.isCleaned=true;return this;},calcOffsetsTo:function(el){el=Ext.get(el);var d=el.dom;var restorePos=false;if(el.getStyle('position')=='static'){el.position('relative');restorePos=true;} -var x=0,y=0;var op=this.dom;while(op&&op!=d&&op.tagName!='HTML'){x+=op.offsetLeft;y+=op.offsetTop;op=op.offsetParent;} -if(restorePos){el.position('static');} -return[x,y];},scrollIntoView:function(container,hscroll){var c=Ext.getDom(container)||document.body;var el=this.dom;var o=this.calcOffsetsTo(c),l=o[0],t=o[1],b=t+el.offsetHeight,r=l+el.offsetWidth;var ch=c.clientHeight;var ct=parseInt(c.scrollTop,10);var cl=parseInt(c.scrollLeft,10);var cb=ct+ch;var cr=cl+c.clientWidth;if(t<ct){c.scrollTop=t;}else if(b>cb){c.scrollTop=b-ch;} -if(hscroll!==false){if(l<cl){c.scrollLeft=l;}else if(r>cr){c.scrollLeft=r-c.clientWidth;}} -return this;},scrollChildIntoView:function(child,hscroll){Ext.fly(child,'_scrollChildIntoView').scrollIntoView(this,hscroll);},autoHeight:function(animate,duration,onComplete,easing){var oldHeight=this.getHeight();this.clip();this.setHeight(1);setTimeout(function(){var height=parseInt(this.dom.scrollHeight,10);if(!animate){this.setHeight(height);this.unclip();if(typeof onComplete=="function"){onComplete();}}else{this.setHeight(oldHeight);this.setHeight(height,animate,duration,function(){this.unclip();if(typeof onComplete=="function")onComplete();}.createDelegate(this),easing);}}.createDelegate(this),0);return this;},contains:function(el){if(!el){return false;} -return D.isAncestor(this.dom,el.dom?el.dom:el);},isVisible:function(deep){var vis=!(this.getStyle("visibility")=="hidden"||this.getStyle("display")=="none");if(deep!==true||!vis){return vis;} -var p=this.dom.parentNode;while(p&&p.tagName.toLowerCase()!="body"){if(!Ext.fly(p,'_isVisible').isVisible()){return false;} -p=p.parentNode;} -return true;},select:function(selector,unique){return El.select(selector,unique,this.dom);},query:function(selector,unique){return Ext.DomQuery.select(selector,this.dom);},child:function(selector,returnDom){var n=Ext.DomQuery.selectNode(selector,this.dom);return returnDom?n:Ext.get(n);},down:function(selector,returnDom){var n=Ext.DomQuery.selectNode(" > "+selector,this.dom);return returnDom?n:Ext.get(n);},initDD:function(group,config,overrides){var dd=new Ext.dd.DD(Ext.id(this.dom),group,config);return Ext.apply(dd,overrides);},initDDProxy:function(group,config,overrides){var dd=new Ext.dd.DDProxy(Ext.id(this.dom),group,config);return Ext.apply(dd,overrides);},initDDTarget:function(group,config,overrides){var dd=new Ext.dd.DDTarget(Ext.id(this.dom),group,config);return Ext.apply(dd,overrides);},setVisible:function(visible,animate){if(!animate||!A){if(this.visibilityMode==El.DISPLAY){this.setDisplayed(visible);}else{this.fixDisplay();this.dom.style.visibility=visible?"visible":"hidden";}}else{var dom=this.dom;var visMode=this.visibilityMode;if(visible){this.setOpacity(.01);this.setVisible(true);} -this.anim({opacity:{to:(visible?1:0)}},this.preanim(arguments,1),null,.35,'easeIn',function(){if(!visible){if(visMode==El.DISPLAY){dom.style.display="none";}else{dom.style.visibility="hidden";} -Ext.get(dom).setOpacity(1);}});} -return this;},isDisplayed:function(){return this.getStyle("display")!="none";},toggle:function(animate){this.setVisible(!this.isVisible(),this.preanim(arguments,0));return this;},setDisplayed:function(value){if(typeof value=="boolean"){value=value?this.originalDisplay:"none";} -this.setStyle("display",value);return this;},focus:function(){try{this.dom.focus();}catch(e){} -return this;},blur:function(){try{this.dom.blur();}catch(e){} -return this;},addClass:function(className){if(className instanceof Array){for(var i=0,len=className.length;i<len;i++){this.addClass(className[i]);}}else{if(className&&!this.hasClass(className)){this.dom.className=this.dom.className+" "+className;}} -return this;},radioClass:function(className){var siblings=this.dom.parentNode.childNodes;for(var i=0;i<siblings.length;i++){var s=siblings[i];if(s.nodeType==1){Ext.get(s).removeClass(className);}} -this.addClass(className);return this;},removeClass:function(className){if(!className||!this.dom.className){return this;} -if(className instanceof Array){for(var i=0,len=className.length;i<len;i++){this.removeClass(className[i]);}}else{if(this.hasClass(className)){var re=this.classReCache[className];if(!re){re=new RegExp('(?:^|\\s+)'+className+'(?:\\s+|$)',"g");this.classReCache[className]=re;} -this.dom.className=this.dom.className.replace(re," ");}} -return this;},classReCache:{},toggleClass:function(className){if(this.hasClass(className)){this.removeClass(className);}else{this.addClass(className);} -return this;},hasClass:function(className){return className&&(' '+this.dom.className+' ').indexOf(' '+className+' ')!=-1;},replaceClass:function(oldClassName,newClassName){this.removeClass(oldClassName);this.addClass(newClassName);return this;},getStyles:function(){var a=arguments,len=a.length,r={};for(var i=0;i<len;i++){r[a[i]]=this.getStyle(a[i]);} -return r;},getStyle:function(){return view&&view.getComputedStyle?function(prop){var el=this.dom,v,cs,camel;if(prop=='float'){prop="cssFloat";} -if(v=el.style[prop]){return v;} -if(cs=view.getComputedStyle(el,"")){if(!(camel=propCache[prop])){camel=propCache[prop]=prop.replace(camelRe,camelFn);} -return cs[camel];} -return null;}:function(prop){var el=this.dom,v,cs,camel;if(prop=='opacity'){if(typeof el.filter=='string'){var fv=parseFloat(el.filter.match(/alpha\(opacity=(.*)\)/i)[1]);if(!isNaN(fv)){return fv?fv/100:0;}} -return 1;}else if(prop=='float'){prop="styleFloat";} -if(!(camel=propCache[prop])){camel=propCache[prop]=prop.replace(camelRe,camelFn);} -if(v=el.style[camel]){return v;} -if(cs=el.currentStyle){return cs[camel];} -return null;};}(),setStyle:function(prop,value){if(typeof prop=="string"){var camel;if(!(camel=propCache[prop])){camel=propCache[prop]=prop.replace(camelRe,camelFn);} -if(camel=='opacity'){this.setOpacity(value);}else{this.dom.style[camel]=value;}}else{for(var style in prop){if(typeof prop[style]!="function"){this.setStyle(style,prop[style]);}}} -return this;},applyStyles:function(style){Ext.DomHelper.applyStyles(this.dom,style);return this;},getX:function(){return D.getX(this.dom);},getY:function(){return D.getY(this.dom);},getXY:function(){return D.getXY(this.dom);},setX:function(x,animate){if(!animate||!A){D.setX(this.dom,x);}else{this.setXY([x,this.getY()],this.preanim(arguments,1));} -return this;},setY:function(y,animate){if(!animate||!A){D.setY(this.dom,y);}else{this.setXY([this.getX(),y],this.preanim(arguments,1));} -return this;},setLeft:function(left){this.setStyle("left",this.addUnits(left));return this;},setTop:function(top){this.setStyle("top",this.addUnits(top));return this;},setRight:function(right){this.setStyle("right",this.addUnits(right));return this;},setBottom:function(bottom){this.setStyle("bottom",this.addUnits(bottom));return this;},setXY:function(pos,animate){if(!animate||!A){D.setXY(this.dom,pos);}else{this.anim({points:{to:pos}},this.preanim(arguments,1),'motion');} -return this;},setLocation:function(x,y,animate){this.setXY([x,y],this.preanim(arguments,2));return this;},moveTo:function(x,y,animate){this.setXY([x,y],this.preanim(arguments,2));return this;},getRegion:function(){return D.getRegion(this.dom);},getHeight:function(contentHeight){var h=this.dom.offsetHeight||0;return contentHeight!==true?h:h-this.getBorderWidth("tb")-this.getPadding("tb");},getWidth:function(contentWidth){var w=this.dom.offsetWidth||0;return contentWidth!==true?w:w-this.getBorderWidth("lr")-this.getPadding("lr");},getComputedHeight:function(){var h=Math.max(this.dom.offsetHeight,this.dom.clientHeight);if(!h){h=parseInt(this.getStyle('height'),10)||0;if(!this.isBorderBox()){h+=this.getFrameWidth('tb');}} -return h;},getComputedWidth:function(){var w=Math.max(this.dom.offsetWidth,this.dom.clientWidth);if(!w){w=parseInt(this.getStyle('width'),10)||0;if(!this.isBorderBox()){w+=this.getFrameWidth('lr');}} -return w;},getSize:function(contentSize){return{width:this.getWidth(contentSize),height:this.getHeight(contentSize)};},getViewSize:function(){var d=this.dom,doc=document,aw=0,ah=0;if(d==doc||d==doc.body){return{width:D.getViewWidth(),height:D.getViewHeight()};}else{return{width:d.clientWidth,height:d.clientHeight};}},getValue:function(asNumber){return asNumber?parseInt(this.dom.value,10):this.dom.value;},adjustWidth:function(width){if(typeof width=="number"){if(this.autoBoxAdjust&&!this.isBorderBox()){width-=(this.getBorderWidth("lr")+this.getPadding("lr"));} -if(width<0){width=0;}} -return width;},adjustHeight:function(height){if(typeof height=="number"){if(this.autoBoxAdjust&&!this.isBorderBox()){height-=(this.getBorderWidth("tb")+this.getPadding("tb"));} -if(height<0){height=0;}} -return height;},setWidth:function(width,animate){width=this.adjustWidth(width);if(!animate||!A){this.dom.style.width=this.addUnits(width);}else{this.anim({width:{to:width}},this.preanim(arguments,1));} -return this;},setHeight:function(height,animate){height=this.adjustHeight(height);if(!animate||!A){this.dom.style.height=this.addUnits(height);}else{this.anim({height:{to:height}},this.preanim(arguments,1));} -return this;},setSize:function(width,height,animate){if(typeof width=="object"){height=width.height;width=width.width;} -width=this.adjustWidth(width);height=this.adjustHeight(height);if(!animate||!A){this.dom.style.width=this.addUnits(width);this.dom.style.height=this.addUnits(height);}else{this.anim({width:{to:width},height:{to:height}},this.preanim(arguments,2));} -return this;},setBounds:function(x,y,width,height,animate){if(!animate||!A){this.setSize(width,height);this.setLocation(x,y);}else{width=this.adjustWidth(width);height=this.adjustHeight(height);this.anim({points:{to:[x,y]},width:{to:width},height:{to:height}},this.preanim(arguments,4),'motion');} -return this;},setRegion:function(region,animate){this.setBounds(region.left,region.top,region.right-region.left,region.bottom-region.top,this.preanim(arguments,1));return this;},addListener:function(eventName,fn,scope,options){Ext.EventManager.on(this.dom,eventName,fn,scope||this,options);},removeListener:function(eventName,fn){Ext.EventManager.removeListener(this.dom,eventName,fn);return this;},removeAllListeners:function(){E.purgeElement(this.dom);return this;},relayEvent:function(eventName,observable){this.on(eventName,function(e){observable.fireEvent(eventName,e);});},setOpacity:function(opacity,animate){if(!animate||!A){var s=this.dom.style;if(Ext.isIE){s.zoom=1;s.filter=(s.filter||'').replace(/alpha\([^\)]*\)/gi,"")+ -(opacity==1?"":"alpha(opacity="+opacity*100+")");}else{s.opacity=opacity;}}else{this.anim({opacity:{to:opacity}},this.preanim(arguments,1),null,.35,'easeIn');} -return this;},getLeft:function(local){if(!local){return this.getX();}else{return parseInt(this.getStyle("left"),10)||0;}},getRight:function(local){if(!local){return this.getX()+this.getWidth();}else{return(this.getLeft(true)+this.getWidth())||0;}},getTop:function(local){if(!local){return this.getY();}else{return parseInt(this.getStyle("top"),10)||0;}},getBottom:function(local){if(!local){return this.getY()+this.getHeight();}else{return(this.getTop(true)+this.getHeight())||0;}},position:function(pos,zIndex,x,y){if(!pos){if(this.getStyle('position')=='static'){this.setStyle('position','relative');}}else{this.setStyle("position",pos);} -if(zIndex){this.setStyle("z-index",zIndex);} -if(x!==undefined&&y!==undefined){this.setXY([x,y]);}else if(x!==undefined){this.setX(x);}else if(y!==undefined){this.setY(y);}},clearPositioning:function(value){value=value||'';this.setStyle({"left":value,"right":value,"top":value,"bottom":value,"z-index":"","position":"static"});return this;},getPositioning:function(){var l=this.getStyle("left");var t=this.getStyle("top");return{"position":this.getStyle("position"),"left":l,"right":l?"":this.getStyle("right"),"top":t,"bottom":t?"":this.getStyle("bottom"),"z-index":this.getStyle("z-index")};},getBorderWidth:function(side){return this.addStyles(side,El.borders);},getPadding:function(side){return this.addStyles(side,El.paddings);},setPositioning:function(pc){this.applyStyles(pc);if(pc.right=="auto"){this.dom.style.right="";} -if(pc.bottom=="auto"){this.dom.style.bottom="";} -return this;},fixDisplay:function(){if(this.getStyle("display")=="none"){this.setStyle("visibility","hidden");this.setStyle("display",this.originalDisplay);if(this.getStyle("display")=="none"){this.setStyle("display","block");}}},setLeftTop:function(left,top){this.dom.style.left=this.addUnits(left);this.dom.style.top=this.addUnits(top);return this;},move:function(direction,distance,animate){var xy=this.getXY();direction=direction.toLowerCase();switch(direction){case"l":case"left":this.moveTo(xy[0]-distance,xy[1],this.preanim(arguments,2));break;case"r":case"right":this.moveTo(xy[0]+distance,xy[1],this.preanim(arguments,2));break;case"t":case"top":case"up":this.moveTo(xy[0],xy[1]-distance,this.preanim(arguments,2));break;case"b":case"bottom":case"down":this.moveTo(xy[0],xy[1]+distance,this.preanim(arguments,2));break;} -return this;},clip:function(){if(!this.isClipped){this.isClipped=true;this.originalClip={"o":this.getStyle("overflow"),"x":this.getStyle("overflow-x"),"y":this.getStyle("overflow-y")};this.setStyle("overflow","hidden");this.setStyle("overflow-x","hidden");this.setStyle("overflow-y","hidden");} -return this;},unclip:function(){if(this.isClipped){this.isClipped=false;var o=this.originalClip;if(o.o){this.setStyle("overflow",o.o);} -if(o.x){this.setStyle("overflow-x",o.x);} -if(o.y){this.setStyle("overflow-y",o.y);}} -return this;},getAnchorXY:function(anchor,local,s){var w,h,vp=false;if(!s){var d=this.dom;if(d==document.body||d==document){vp=true;w=D.getViewWidth();h=D.getViewHeight();}else{w=this.getWidth();h=this.getHeight();}}else{w=s.width;h=s.height;} -var x=0,y=0,r=Math.round;switch((anchor||"tl").toLowerCase()){case"c":x=r(w*.5);y=r(h*.5);break;case"t":x=r(w*.5);y=0;break;case"l":x=0;y=r(h*.5);break;case"r":x=w;y=r(h*.5);break;case"b":x=r(w*.5);y=h;break;case"tl":x=0;y=0;break;case"bl":x=0;y=h;break;case"br":x=w;y=h;break;case"tr":x=w;y=0;break;} -if(local===true){return[x,y];} -if(vp){var sc=this.getScroll();return[x+sc.left,y+sc.top];} -var o=this.getXY();return[x+o[0],y+o[1]];},getAlignToXY:function(el,p,o){el=Ext.get(el);var d=this.dom;if(!el.dom){throw"Element.alignTo with an element that doesn't exist";} -var c=false;var p1="",p2="";o=o||[0,0];if(!p){p="tl-bl";}else if(p=="?"){p="tl-bl?";}else if(p.indexOf("-")==-1){p="tl-"+p;} -p=p.toLowerCase();var m=p.match(/^([a-z]+)-([a-z]+)(\?)?$/);if(!m){throw"Element.alignTo with an invalid alignment "+p;} -p1=m[1];p2=m[2];c=!!m[3];var a1=this.getAnchorXY(p1,true);var a2=el.getAnchorXY(p2,false);var x=a2[0]-a1[0]+o[0];var y=a2[1]-a1[1]+o[1];if(c){var w=this.getWidth(),h=this.getHeight(),r=el.getRegion();var dw=D.getViewWidth()-5,dh=D.getViewHeight()-5;var p1y=p1.charAt(0),p1x=p1.charAt(p1.length-1);var p2y=p2.charAt(0),p2x=p2.charAt(p2.length-1);var swapY=((p1y=="t"&&p2y=="b")||(p1y=="b"&&p2y=="t"));var swapX=((p1x=="r"&&p2x=="l")||(p1x=="l"&&p2x=="r"));var doc=document;var scrollX=(doc.documentElement.scrollLeft||doc.body.scrollLeft||0)+5;var scrollY=(doc.documentElement.scrollTop||doc.body.scrollTop||0)+5;if((x+w)>dw+scrollX){x=swapX?r.left-w:dw+scrollX-w;} -if(x<scrollX){x=swapX?r.right:scrollX;} -if((y+h)>dh+scrollY){y=swapY?r.top-h:dh+scrollY-h;} -if(y<scrollY){y=swapY?r.bottom:scrollY;}} -return[x,y];},getConstrainToXY:function(){var os={top:0,left:0,bottom:0,right:0};return function(el,local,offsets){el=Ext.get(el);offsets=offsets?Ext.applyIf(offsets,os):os;var vw,vh,vx=0,vy=0;if(el.dom==document.body||el.dom==document){vw=Ext.lib.Dom.getViewWidth();vh=Ext.lib.Dom.getViewHeight();}else{vw=el.dom.clientWidth;vh=el.dom.clientHeight;if(!local){var vxy=el.getXY();vx=vxy[0];vy=vxy[1];}} -var s=el.getScroll();vx+=offsets.left+s.left;vy+=offsets.top+s.top;vw-=offsets.right;vh-=offsets.bottom;var vr=vx+vw;var vb=vy+vh;var xy=!local?this.getXY():[this.getLeft(true),this.getTop(true)];var x=xy[0],y=xy[1];var w=this.dom.offsetWidth,h=this.dom.offsetHeight;var moved=false;if((x+w)>vr){x=vr-w;moved=true;} -if((y+h)>vb){y=vb-h;moved=true;} -if(x<vx){x=vx;moved=true;} -if(y<vy){y=vy;moved=true;} -return moved?[x,y]:false;};}(),alignTo:function(element,position,offsets,animate){var xy=this.getAlignToXY(element,position,offsets);this.setXY(xy,this.preanim(arguments,3));return this;},anchorTo:function(el,alignment,offsets,animate,monitorScroll,callback){var action=function(){this.alignTo(el,alignment,offsets,animate);Ext.callback(callback,this);};Ext.EventManager.onWindowResize(action,this);var tm=typeof monitorScroll;if(tm!='undefined'){Ext.EventManager.on(window,'scroll',action,this,{buffer:tm=='number'?monitorScroll:50});} -action.call(this);return this;},clearOpacity:function(){if(window.ActiveXObject){if(typeof this.dom.style.filter=='string'&&(/alpha/i).test(this.dom.style.filter)){this.dom.style.filter="";}}else{this.dom.style.opacity="";this.dom.style["-moz-opacity"]="";this.dom.style["-khtml-opacity"]="";} -return this;},hide:function(animate){this.setVisible(false,this.preanim(arguments,0));return this;},show:function(animate){this.setVisible(true,this.preanim(arguments,0));return this;},addUnits:function(size){return Ext.Element.addUnits(size,this.defaultUnit);},beginMeasure:function(){var el=this.dom;if(el.offsetWidth||el.offsetHeight){return this;} -var changed=[];var p=this.dom,b=document.body;while((!el.offsetWidth&&!el.offsetHeight)&&p&&p.tagName&&p!=b){var pe=Ext.get(p);if(pe.getStyle('display')=='none'){changed.push({el:p,visibility:pe.getStyle("visibility")});p.style.visibility="hidden";p.style.display="block";} -p=p.parentNode;} -this._measureChanged=changed;return this;},endMeasure:function(){var changed=this._measureChanged;if(changed){for(var i=0,len=changed.length;i<len;i++){var r=changed[i];r.el.style.visibility=r.visibility;r.el.style.display="none";} -this._measureChanged=null;} -return this;},update:function(html,loadScripts,callback){if(typeof html=="undefined"){html="";} -if(loadScripts!==true){this.dom.innerHTML=html;if(typeof callback=="function"){callback();} -return this;} -var id=Ext.id();var dom=this.dom;html+='<span id="'+id+'"></span>';E.onAvailable(id,function(){var hd=document.getElementsByTagName("head")[0];var re=/(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig;var srcRe=/\ssrc=([\'\"])(.*?)\1/i;var typeRe=/\stype=([\'\"])(.*?)\1/i;var match;while(match=re.exec(html)){var attrs=match[1];var srcMatch=attrs?attrs.match(srcRe):false;if(srcMatch&&srcMatch[2]){var s=document.createElement("script");s.src=srcMatch[2];var typeMatch=attrs.match(typeRe);if(typeMatch&&typeMatch[2]){s.type=typeMatch[2];} -hd.appendChild(s);}else if(match[2]&&match[2].length>0){eval(match[2]);}} -var el=document.getElementById(id);if(el){el.parentNode.removeChild(el);} -if(typeof callback=="function"){callback();}});dom.innerHTML=html.replace(/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,"");return this;},load:function(){var um=this.getUpdateManager();um.update.apply(um,arguments);return this;},getUpdateManager:function(){if(!this.updateManager){this.updateManager=new Ext.UpdateManager(this);} -return this.updateManager;},unselectable:function(){this.dom.unselectable="on";this.swallowEvent("selectstart",true);this.applyStyles("-moz-user-select:none;-khtml-user-select:none;");this.addClass("x-unselectable");return this;},getCenterXY:function(){return this.getAlignToXY(document,'c-c');},center:function(centerIn){this.alignTo(centerIn||document,'c-c');return this;},isBorderBox:function(){return noBoxAdjust[this.dom.tagName.toLowerCase()]||Ext.isBorderBox;},getBox:function(contentBox,local){var xy;if(!local){xy=this.getXY();}else{var left=parseInt(this.getStyle("left"),10)||0;var top=parseInt(this.getStyle("top"),10)||0;xy=[left,top];} -var el=this.dom,w=el.offsetWidth,h=el.offsetHeight,bx;if(!contentBox){bx={x:xy[0],y:xy[1],0:xy[0],1:xy[1],width:w,height:h};}else{var l=this.getBorderWidth("l")+this.getPadding("l");var r=this.getBorderWidth("r")+this.getPadding("r");var t=this.getBorderWidth("t")+this.getPadding("t");var b=this.getBorderWidth("b")+this.getPadding("b");bx={x:xy[0]+l,y:xy[1]+t,0:xy[0]+l,1:xy[1]+t,width:w-(l+r),height:h-(t+b)};} -bx.right=bx.x+bx.width;bx.bottom=bx.y+bx.height;return bx;},getFrameWidth:function(sides,onlyContentBox){return onlyContentBox&&Ext.isBorderBox?0:(this.getPadding(sides)+this.getBorderWidth(sides));},setBox:function(box,adjust,animate){var w=box.width,h=box.height;if((adjust&&!this.autoBoxAdjust)&&!this.isBorderBox()){w-=(this.getBorderWidth("lr")+this.getPadding("lr"));h-=(this.getBorderWidth("tb")+this.getPadding("tb"));} -this.setBounds(box.x,box.y,w,h,this.preanim(arguments,2));return this;},repaint:function(){var dom=this.dom;this.addClass("x-repaint");setTimeout(function(){Ext.get(dom).removeClass("x-repaint");},1);return this;},getMargins:function(side){if(!side){return{top:parseInt(this.getStyle("margin-top"),10)||0,left:parseInt(this.getStyle("margin-left"),10)||0,bottom:parseInt(this.getStyle("margin-bottom"),10)||0,right:parseInt(this.getStyle("margin-right"),10)||0};}else{return this.addStyles(side,El.margins);}},addStyles:function(sides,styles){var val=0;for(var i=0,len=sides.length;i<len;i++){var w=parseInt(this.getStyle(styles[sides.charAt(i)]),10);if(!isNaN(w))val+=w;} -return val;},createProxy:function(config,renderTo,matchBox){if(renderTo){renderTo=Ext.getDom(renderTo);}else{renderTo=document.body;} -config=typeof config=="object"?config:{tag:"div",cls:config};var proxy=Ext.DomHelper.append(renderTo,config,true);if(matchBox){proxy.setBox(this.getBox());} -return proxy;},mask:function(msg,msgCls){if(this.getStyle("position")=="static"){this.setStyle("position","relative");} -if(!this._mask){this._mask=Ext.DomHelper.append(this.dom,{tag:"div",cls:"ext-el-mask"},true);} -this.addClass("x-masked");this._mask.setDisplayed(true);if(typeof msg=='string'){if(!this._maskMsg){this._maskMsg=Ext.DomHelper.append(this.dom,{tag:"div",cls:"ext-el-mask-msg",cn:{tag:'div'}},true);} -var mm=this._maskMsg;mm.dom.className=msgCls?"ext-el-mask-msg "+msgCls:"ext-el-mask-msg";mm.dom.firstChild.innerHTML=msg;mm.setDisplayed(true);mm.center(this);} -return this._mask;},unmask:function(removeEl){if(this._mask){if(removeEl===true){this._mask.remove();delete this._mask;if(this._maskMsg){this._maskMsg.remove();delete this._maskMsg;}}else{this._mask.setDisplayed(false);if(this._maskMsg){this._maskMsg.setDisplayed(false);}}} -this.removeClass("x-masked");},isMasked:function(){return this._mask&&this._mask.isVisible();},createShim:function(){var el=document.createElement('iframe');el.frameBorder='no';el.className='ext-shim';if(Ext.isIE&&Ext.isSecure){el.src=Ext.SSL_SECURE_URL;} -var shim=Ext.get(this.dom.parentNode.insertBefore(el,this.dom));shim.autoBoxAdjust=false;return shim;},remove:function(){if(this.dom.parentNode){this.dom.parentNode.removeChild(this.dom);} -delete El.cache[this.dom.id];},addClassOnOver:function(className,preventFlicker){this.on("mouseover",function(){Ext.fly(this,'_internal').addClass(className);},this.dom);var removeFn=function(e){if(preventFlicker!==true||!e.within(this,true)){Ext.fly(this,'_internal').removeClass(className);}};this.on("mouseout",removeFn,this.dom);return this;},addClassOnFocus:function(className){this.on("focus",function(){Ext.fly(this,'_internal').addClass(className);},this.dom);this.on("blur",function(){Ext.fly(this,'_internal').removeClass(className);},this.dom);return this;},addClassOnClick:function(className){var dom=this.dom;this.on("mousedown",function(){Ext.fly(dom,'_internal').addClass(className);var d=Ext.get(document);var fn=function(){Ext.fly(dom,'_internal').removeClass(className);d.removeListener("mouseup",fn);};d.on("mouseup",fn);});return this;},swallowEvent:function(eventName,preventDefault){var fn=function(e){e.stopPropagation();if(preventDefault){e.preventDefault();}};if(eventName instanceof Array){for(var i=0,len=eventName.length;i<len;i++){this.on(eventName[i],fn);} -return this;} -this.on(eventName,fn);return this;},fitToParent:function(monitorResize,targetParent){var p=Ext.get(targetParent||this.dom.parentNode);this.setSize(p.getComputedWidth()-p.getFrameWidth('lr'),p.getComputedHeight()-p.getFrameWidth('tb'));if(monitorResize===true){Ext.EventManager.onWindowResize(this.fitToParent.createDelegate(this,[]));} -return this;},getNextSibling:function(){var n=this.dom.nextSibling;while(n&&n.nodeType!=1){n=n.nextSibling;} -return n;},getPrevSibling:function(){var n=this.dom.previousSibling;while(n&&n.nodeType!=1){n=n.previousSibling;} -return n;},appendChild:function(el){el=Ext.get(el);el.appendTo(this);return this;},createChild:function(config,insertBefore,returnDom){config=config||{tag:'div'};if(insertBefore){return Ext.DomHelper.insertBefore(insertBefore,config,returnDom!==true);} -return Ext.DomHelper[!this.dom.firstChild?'overwrite':'append'](this.dom,config,returnDom!==true);},appendTo:function(el){el=Ext.getDom(el);el.appendChild(this.dom);return this;},insertBefore:function(el){el=Ext.getDom(el);el.parentNode.insertBefore(this.dom,el);return this;},insertAfter:function(el){el=Ext.getDom(el);el.parentNode.insertBefore(this.dom,el.nextSibling);return this;},insertFirst:function(el,returnDom){el=el||{};if(typeof el=='object'&&!el.nodeType){return this.createChild(el,this.dom.firstChild,returnDom);}else{el=Ext.getDom(el);this.dom.insertBefore(el,this.dom.firstChild);return!returnDom?Ext.get(el):el;}},insertSibling:function(el,where,returnDom){where=where?where.toLowerCase():'before';el=el||{};var rt,refNode=where=='before'?this.dom:this.dom.nextSibling;if(typeof el=='object'&&!el.nodeType){if(where=='after'&&!this.dom.nextSibling){rt=Ext.DomHelper.append(this.dom.parentNode,el,!returnDom);}else{rt=Ext.DomHelper[where=='after'?'insertAfter':'insertBefore'](this.dom,el,!returnDom);}}else{rt=this.dom.parentNode.insertBefore(Ext.getDom(el),where=='before'?this.dom:this.dom.nextSibling);if(!returnDom){rt=Ext.get(rt);}} -return rt;},wrap:function(config,returnDom){if(!config){config={tag:"div"};} -var newEl=Ext.DomHelper.insertBefore(this.dom,config,!returnDom);newEl.dom?newEl.dom.appendChild(this.dom):newEl.appendChild(this.dom);return newEl;},replace:function(el){el=Ext.get(el);this.insertBefore(el);el.remove();return this;},insertHtml:function(where,html,returnEl){var el=Ext.DomHelper.insertHtml(where,this.dom,html);return returnEl?Ext.get(el):el;},set:function(o,useSet){var el=this.dom;useSet=typeof useSet=='undefined'?(el.setAttribute?true:false):useSet;for(var attr in o){if(attr=="style"||typeof o[attr]=="function")continue;if(attr=="cls"){el.className=o["cls"];}else{if(useSet)el.setAttribute(attr,o[attr]);else el[attr]=o[attr];}} -Ext.DomHelper.applyStyles(el,o.style);return this;},addKeyListener:function(key,fn,scope){var config;if(typeof key!="object"||key instanceof Array){config={key:key,fn:fn,scope:scope};}else{config={key:key.key,shift:key.shift,ctrl:key.ctrl,alt:key.alt,fn:fn,scope:scope};} -return new Ext.KeyMap(this,config);},addKeyMap:function(config){return new Ext.KeyMap(this,config);},isScrollable:function(){var dom=this.dom;return dom.scrollHeight>dom.clientHeight||dom.scrollWidth>dom.clientWidth;},scrollTo:function(side,value,animate){var prop=side.toLowerCase()=="left"?"scrollLeft":"scrollTop";if(!animate||!A){this.dom[prop]=value;}else{var to=prop=="scrollLeft"?[value,this.dom.scrollTop]:[this.dom.scrollLeft,value];this.anim({scroll:{"to":to}},this.preanim(arguments,2),'scroll');} -return this;},scroll:function(direction,distance,animate){if(!this.isScrollable()){return;} -var el=this.dom;var l=el.scrollLeft,t=el.scrollTop;var w=el.scrollWidth,h=el.scrollHeight;var cw=el.clientWidth,ch=el.clientHeight;direction=direction.toLowerCase();var scrolled=false;var a=this.preanim(arguments,2);switch(direction){case"l":case"left":if(w-l>cw){var v=Math.min(l+distance,w-cw);this.scrollTo("left",v,a);scrolled=true;} -break;case"r":case"right":if(l>0){var v=Math.max(l-distance,0);this.scrollTo("left",v,a);scrolled=true;} -break;case"t":case"top":case"up":if(t>0){var v=Math.max(t-distance,0);this.scrollTo("top",v,a);scrolled=true;} -break;case"b":case"bottom":case"down":if(h-t>ch){var v=Math.min(t+distance,h-ch);this.scrollTo("top",v,a);scrolled=true;} -break;} -return scrolled;},translatePoints:function(x,y){if(typeof x=='object'||x instanceof Array){y=x[1];x=x[0];} -var p=this.getStyle('position');var o=this.getXY();var l=parseInt(this.getStyle('left'),10);var t=parseInt(this.getStyle('top'),10);if(isNaN(l)){l=(p=="relative")?0:this.dom.offsetLeft;} -if(isNaN(t)){t=(p=="relative")?0:this.dom.offsetTop;} -return{left:(x-o[0]+l),top:(y-o[1]+t)};},getScroll:function(){var d=this.dom,doc=document;if(d==doc||d==doc.body){var l=window.pageXOffset||doc.documentElement.scrollLeft||doc.body.scrollLeft||0;var t=window.pageYOffset||doc.documentElement.scrollTop||doc.body.scrollTop||0;return{left:l,top:t};}else{return{left:d.scrollLeft,top:d.scrollTop};}},getColor:function(attr,defaultValue,prefix){var v=this.getStyle(attr);if(!v||v=="transparent"||v=="inherit"){return defaultValue;} -var color=typeof prefix=="undefined"?"#":prefix;if(v.substr(0,4)=="rgb("){var rvs=v.slice(4,v.length-1).split(",");for(var i=0;i<3;i++){var h=parseInt(rvs[i]).toString(16);if(h<16){h="0"+h;} -color+=h;}}else{if(v.substr(0,1)=="#"){if(v.length==4){for(var i=1;i<4;i++){var c=v.charAt(i);color+=c+c;}}else if(v.length==7){color+=v.substr(1);}}} -return(color.length>5?color.toLowerCase():defaultValue);},boxWrap:function(cls){cls=cls||'x-box';var el=Ext.get(this.insertHtml('beforeBegin',String.format('<div class="{0}">'+El.boxMarkup+'</div>',cls)));el.child('.'+cls+'-mc').dom.appendChild(this.dom);return el;},getAttributeNS:Ext.isIE?function(ns,name){var d=this.dom;var type=typeof d[ns+":"+name];if(type!='undefined'&&type!='unknown'){return d[ns+":"+name];} -return d[name];}:function(ns,name){var d=this.dom;return d.getAttributeNS(ns,name)||d.getAttribute(ns+":"+name)||d.getAttribute(name)||d[name];}};var ep=El.prototype;ep.on=ep.addListener;ep.mon=ep.addListener;ep.un=ep.removeListener;ep.autoBoxAdjust=true;ep.autoDisplayMode=true;El.unitPattern=/\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i;El.addUnits=function(v,defaultUnit){if(v===""||v=="auto"){return v;} -if(v===undefined){return'';} -if(typeof v=="number"||!El.unitPattern.test(v)){return v+(defaultUnit||'px');} -return v;};El.boxMarkup='<div class="{0}-tl"><div class="{0}-tr"><div class="{0}-tc"></div></div></div><div class="{0}-ml"><div class="{0}-mr"><div class="{0}-mc"></div></div></div><div class="{0}-bl"><div class="{0}-br"><div class="{0}-bc"></div></div></div>';El.VISIBILITY=1;El.DISPLAY=2;El.borders={l:"border-left-width",r:"border-right-width",t:"border-top-width",b:"border-bottom-width"};El.paddings={l:"padding-left",r:"padding-right",t:"padding-top",b:"padding-bottom"};El.margins={l:"margin-left",r:"margin-right",t:"margin-top",b:"margin-bottom"};El.cache={};var docEl;El.get=function(el){var ex,elm,id;if(!el){return null;} -if(typeof el=="string"){if(!(elm=document.getElementById(el))){return null;} -if(ex=El.cache[el]){ex.dom=elm;}else{ex=El.cache[el]=new El(elm);} -return ex;}else if(el.tagName){if(!(id=el.id)){id=Ext.id(el);} -if(ex=El.cache[id]){ex.dom=el;}else{ex=El.cache[id]=new El(el);} -return ex;}else if(el instanceof El){if(el!=docEl){el.dom=document.getElementById(el.id)||el.dom;El.cache[el.id]=el;} -return el;}else if(el.isComposite){return el;}else if(el instanceof Array){return El.select(el);}else if(el==document){if(!docEl){var f=function(){};f.prototype=El.prototype;docEl=new f();docEl.dom=document;} -return docEl;} -return null;};El.uncache=function(el){for(var i=0,a=arguments,len=a.length;i<len;i++){if(a[i]){delete El.cache[a[i].id||a[i]];}}};El.garbageCollect=function(){if(!Ext.enableGarbageCollector){clearInterval(El.collectorThread);return;} -for(var eid in El.cache){var el=El.cache[eid],d=el.dom;if(!d||!d.parentNode||(!d.offsetParent&&!document.getElementById(eid))){delete El.cache[eid];if(Ext.enableListenerCollection){Ext.lib.Dom.purgeElement(d);}}}} -El.collectorThreadId=setInterval(El.garbageCollect,30000);El.Flyweight=function(dom){this.dom=dom;};El.Flyweight.prototype=El.prototype;El._flyweights={};El.fly=function(el,named){named=named||'_global';el=Ext.getDom(el);if(!el){return null;} -if(!El._flyweights[named]){El._flyweights[named]=new El.Flyweight();} -El._flyweights[named].dom=el;return El._flyweights[named];};Ext.get=El.get;Ext.fly=El.fly;var noBoxAdjust=Ext.isStrict?{select:1}:{input:1,select:1,textarea:1};if(Ext.isIE||Ext.isGecko){noBoxAdjust['button']=1;} -Ext.EventManager.on(window,'unload',function(){delete El.cache;delete El._flyweights;});})(); - -Ext.enableFx=true;Ext.Fx={slideIn:function(anchor,o){var el=this.getFxEl();o=o||{};el.queueFx(o,function(){anchor=anchor||"t";this.fixDisplay();var r=this.getFxRestore();var b=this.getBox();this.setSize(b);var wrap=this.fxWrap(r.pos,o,"hidden");var st=this.dom.style;st.visibility="visible";st.position="absolute";var after=function(){el.fxUnwrap(wrap,r.pos,o);st.width=r.width;st.height=r.height;el.afterFx(o);};var a,pt={to:[b.x,b.y]},bw={to:b.width},bh={to:b.height};switch(anchor.toLowerCase()){case"t":wrap.setSize(b.width,0);st.left=st.bottom="0";a={height:bh};break;case"l":wrap.setSize(0,b.height);st.right=st.top="0";a={width:bw};break;case"r":wrap.setSize(0,b.height);wrap.setX(b.right);st.left=st.top="0";a={width:bw,points:pt};break;case"b":wrap.setSize(b.width,0);wrap.setY(b.bottom);st.left=st.top="0";a={height:bh,points:pt};break;case"tl":wrap.setSize(0,0);st.right=st.bottom="0";a={width:bw,height:bh};break;case"bl":wrap.setSize(0,0);wrap.setY(b.y+b.height);st.right=st.top="0";a={width:bw,height:bh,points:pt};break;case"br":wrap.setSize(0,0);wrap.setXY([b.right,b.bottom]);st.left=st.top="0";a={width:bw,height:bh,points:pt};break;case"tr":wrap.setSize(0,0);wrap.setX(b.x+b.width);st.left=st.bottom="0";a={width:bw,height:bh,points:pt};break;} -this.dom.style.visibility="visible";wrap.show();arguments.callee.anim=wrap.fxanim(a,o,'motion',.5,'easeOut',after);});return this;},slideOut:function(anchor,o){var el=this.getFxEl();o=o||{};el.queueFx(o,function(){anchor=anchor||"t";var r=this.getFxRestore();var b=this.getBox();this.setSize(b);var wrap=this.fxWrap(r.pos,o,"visible");var st=this.dom.style;st.visibility="visible";st.position="absolute";wrap.setSize(b);var after=function(){if(o.useDisplay){el.setDisplayed(false);}else{el.hide();} -el.fxUnwrap(wrap,r.pos,o);st.width=r.width;st.height=r.height;el.afterFx(o);};var a,zero={to:0};switch(anchor.toLowerCase()){case"t":st.left=st.bottom="0";a={height:zero};break;case"l":st.right=st.top="0";a={width:zero};break;case"r":st.left=st.top="0";a={width:zero,points:{to:[b.right,b.y]}};break;case"b":st.left=st.top="0";a={height:zero,points:{to:[b.x,b.bottom]}};break;case"tl":st.right=st.bottom="0";a={width:zero,height:zero};break;case"bl":st.right=st.top="0";a={width:zero,height:zero,points:{to:[b.x,b.bottom]}};break;case"br":st.left=st.top="0";a={width:zero,height:zero,points:{to:[b.x+b.width,b.bottom]}};break;case"tr":st.left=st.bottom="0";a={width:zero,height:zero,points:{to:[b.right,b.y]}};break;} -arguments.callee.anim=wrap.fxanim(a,o,'motion',.5,"easeOut",after);});return this;},puff:function(o){var el=this.getFxEl();o=o||{};el.queueFx(o,function(){this.clearOpacity();this.show();var r=this.getFxRestore();var st=this.dom.style;var after=function(){if(o.useDisplay){el.setDisplayed(false);}else{el.hide();} -el.clearOpacity();el.setPositioning(r.pos);st.width=r.width;st.height=r.height;st.fontSize='';el.afterFx(o);};var width=this.getWidth();var height=this.getHeight();arguments.callee.anim=this.fxanim({width:{to:this.adjustWidth(width*2)},height:{to:this.adjustHeight(height*2)},points:{by:[-(width*.5),-(height*.5)]},opacity:{to:0},fontSize:{to:200,unit:"%"}},o,'motion',.5,"easeOut",after);});return this;},switchOff:function(o){var el=this.getFxEl();o=o||{};el.queueFx(o,function(){this.clearOpacity();this.clip();var r=this.getFxRestore();var st=this.dom.style;var after=function(){if(o.useDisplay){el.setDisplayed(false);}else{el.hide();} -el.clearOpacity();el.setPositioning(r.pos);st.width=r.width;st.height=r.height;el.afterFx(o);};this.fxanim({opacity:{to:0.3}},null,null,.1,null,function(){this.clearOpacity();(function(){this.fxanim({height:{to:1},points:{by:[0,this.getHeight()*.5]}},o,'motion',0.3,'easeIn',after);}).defer(100,this);});});return this;},highlight:function(color,o){var el=this.getFxEl();o=o||{};el.queueFx(o,function(){color=color||"ffff9c";attr=o.attr||"backgroundColor";this.clearOpacity();this.show();var origColor=this.getColor(attr);var restoreColor=this.dom.style[attr];endColor=(o.endColor||origColor)||"ffffff";var after=function(){el.dom.style[attr]=restoreColor;el.afterFx(o);};var a={};a[attr]={from:color,to:endColor};arguments.callee.anim=this.fxanim(a,o,'color',1,'easeIn',after);});return this;},frame:function(color,count,o){var el=this.getFxEl();o=o||{};el.queueFx(o,function(){color=color||"#C3DAF9";if(color.length==6){color="#"+color;} -count=count||1;duration=o.duration||1;this.show();var b=this.getBox();var animFn=function(){var proxy=this.createProxy({tag:"div",style:{visbility:"hidden",position:"absolute","z-index":"35000",border:"0px solid "+color}});var scale=Ext.isBorderBox?2:1;proxy.animate({top:{from:b.y,to:b.y-20},left:{from:b.x,to:b.x-20},borderWidth:{from:0,to:10},opacity:{from:1,to:0},height:{from:b.height,to:(b.height+(20*scale))},width:{from:b.width,to:(b.width+(20*scale))}},duration,function(){proxy.remove();});if(--count>0){animFn.defer((duration/2)*1000,this);}else{el.afterFx(o);}};animFn.call(this);});return this;},pause:function(seconds){var el=this.getFxEl();var o={};el.queueFx(o,function(){setTimeout(function(){el.afterFx(o);},seconds*1000);});return this;},fadeIn:function(o){var el=this.getFxEl();o=o||{};el.queueFx(o,function(){this.setOpacity(0);this.fixDisplay();this.dom.style.visibility='visible';var to=o.endOpacity||1;arguments.callee.anim=this.fxanim({opacity:{to:to}},o,null,.5,"easeOut",function(){if(to==1){this.clearOpacity();} -el.afterFx(o);});});return this;},fadeOut:function(o){var el=this.getFxEl();o=o||{};el.queueFx(o,function(){arguments.callee.anim=this.fxanim({opacity:{to:o.endOpacity||0}},o,null,.5,"easeOut",function(){if(this.visibilityMode==Ext.Element.DISPLAY||o.useDisplay){this.dom.style.display="none";}else{this.dom.style.visibility="hidden";} -this.clearOpacity();el.afterFx(o);});});return this;},scale:function(w,h,o){this.shift(Ext.apply({},o,{width:w,height:h}));return this;},shift:function(o){var el=this.getFxEl();o=o||{};el.queueFx(o,function(){var a={},w=o.width,h=o.height,x=o.x,y=o.y,op=o.opacity;if(w!==undefined){a.width={to:this.adjustWidth(w)};} -if(h!==undefined){a.height={to:this.adjustHeight(h)};} -if(x!==undefined||y!==undefined){a.points={to:[x!==undefined?x:this.getX(),y!==undefined?y:this.getY()]};} -if(op!==undefined){a.opacity={to:op};} -if(o.xy!==undefined){a.points={to:o.xy};} -arguments.callee.anim=this.fxanim(a,o,'motion',.35,"easeOut",function(){el.afterFx(o);});});return this;},ghost:function(anchor,o){var el=this.getFxEl();o=o||{};el.queueFx(o,function(){anchor=anchor||"b";var r=this.getFxRestore();var w=this.getWidth(),h=this.getHeight();var st=this.dom.style;var after=function(){if(o.useDisplay){el.setDisplayed(false);}else{el.hide();} -el.clearOpacity();el.setPositioning(r.pos);st.width=r.width;st.height=r.height;el.afterFx(o);};var a={opacity:{to:0},points:{}},pt=a.points;switch(anchor.toLowerCase()){case"t":pt.by=[0,-h];break;case"l":pt.by=[-w,0];break;case"r":pt.by=[w,0];break;case"b":pt.by=[0,h];break;case"tl":pt.by=[-w,-h];break;case"bl":pt.by=[-w,h];break;case"br":pt.by=[w,h];break;case"tr":pt.by=[w,-h];break;} -arguments.callee.anim=this.fxanim(a,o,'motion',.5,"easeOut",after);});return this;},syncFx:function(){this.fxDefaults=Ext.apply(this.fxDefaults||{},{block:false,concurrent:true,stopFx:false});return this;},sequenceFx:function(){this.fxDefaults=Ext.apply(this.fxDefaults||{},{block:false,concurrent:false,stopFx:false});return this;},nextFx:function(){var ef=this.fxQueue[0];if(ef){ef.call(this);}},hasActiveFx:function(){return this.fxQueue&&this.fxQueue[0];},stopFx:function(){if(this.hasActiveFx()){var cur=this.fxQueue[0];if(cur&&cur.anim&&cur.anim.isAnimated()){this.fxQueue=[cur];cur.anim.stop(true);}} -return this;},beforeFx:function(o){if(this.hasActiveFx()&&!o.concurrent){if(o.stopFx){this.stopFx();return true;} -return false;} -return true;},hasFxBlock:function(){var q=this.fxQueue;return q&&q[0]&&q[0].block;},queueFx:function(o,fn){if(!this.fxQueue){this.fxQueue=[];} -if(!this.hasFxBlock()){Ext.applyIf(o,this.fxDefaults);if(!o.concurrent){var run=this.beforeFx(o);fn.block=o.block;this.fxQueue.push(fn);if(run){this.nextFx();}}else{fn.call(this);}} -return this;},fxWrap:function(pos,o,vis){var wrap;if(!o.wrap||!(wrap=Ext.get(o.wrap))){var wrapXY;if(o.fixPosition){wrapXY=this.getXY();} -var div=document.createElement("div");div.style.visibility=vis;wrap=Ext.get(this.dom.parentNode.insertBefore(div,this.dom));wrap.setPositioning(pos);if(wrap.getStyle("position")=="static"){wrap.position("relative");} -this.clearPositioning('auto');wrap.clip();wrap.dom.appendChild(this.dom);if(wrapXY){wrap.setXY(wrapXY);}} -return wrap;},fxUnwrap:function(wrap,pos,o){this.clearPositioning();this.setPositioning(pos);if(!o.wrap){wrap.dom.parentNode.insertBefore(this.dom,wrap.dom);wrap.remove();}},getFxRestore:function(){var st=this.dom.style;return{pos:this.getPositioning(),width:st.width,height:st.height};},afterFx:function(o){if(o.afterStyle){this.applyStyles(o.afterStyle);} -if(o.afterCls){this.addClass(o.afterCls);} -if(o.remove===true){this.remove();} -Ext.callback(o.callback,o.scope,[this]);if(!o.concurrent){this.fxQueue.shift();this.nextFx();}},getFxEl:function(){return Ext.get(this.dom);},fxanim:function(args,opt,animType,defaultDur,defaultEase,cb){animType=animType||'run';opt=opt||{};var anim=Ext.lib.Anim[animType](this.dom,args,(opt.duration||defaultDur)||.35,(opt.easing||defaultEase)||'easeOut',function(){Ext.callback(cb,this);},this);opt.anim=anim;return anim;}};Ext.Fx.resize=Ext.Fx.scale;Ext.apply(Ext.Element.prototype,Ext.Fx); - -Ext.CompositeElement=function(els){this.elements=[];this.addElements(els);};Ext.CompositeElement.prototype={isComposite:true,addElements:function(els){if(!els)return this;if(typeof els=="string"){els=Ext.Element.selectorFunction(els);} -var yels=this.elements;var index=yels.length-1;for(var i=0,len=els.length;i<len;i++){yels[++index]=Ext.get(els[i],true);} -return this;},invoke:function(fn,args){var els=this.elements;for(var i=0,len=els.length;i<len;i++){Ext.Element.prototype[fn].apply(els[i],args);} -return this;},add:function(els){if(typeof els=="string"){this.addElements(Ext.Element.selectorFunction(els));}else if(els.length!==undefined){this.addElements(els);}else{this.addElements([els]);} -return this;},each:function(fn,scope){var els=this.elements;for(var i=0,len=els.length;i<len;i++){if(fn.call(scope||els[i],els[i],this,i)===false){break;}} -return this;},item:function(index){return this.elements[index];}};(function(){Ext.CompositeElement.createCall=function(proto,fnName){if(!proto[fnName]){proto[fnName]=function(){return this.invoke(fnName,arguments);};}};for(var fnName in Ext.Element.prototype){if(typeof Ext.Element.prototype[fnName]=="function"){Ext.CompositeElement.createCall(Ext.CompositeElement.prototype,fnName);}};})();Ext.CompositeElementLite=function(els){Ext.CompositeElementLite.superclass.constructor.call(this,els);var flyEl=function(){};flyEl.prototype=Ext.Element.prototype;this.el=new Ext.Element.Flyweight();};Ext.extend(Ext.CompositeElementLite,Ext.CompositeElement,{addElements:function(els){if(els){if(els instanceof Array){this.elements=this.elements.concat(els);}else{var yels=this.elements;var index=yels.length-1;for(var i=0,len=els.length;i<len;i++){yels[++index]=els[i];}}} -return this;},invoke:function(fn,args){var els=this.elements;var el=this.el;for(var i=0,len=els.length;i<len;i++){el.dom=els[i];Ext.Element.prototype[fn].apply(el,args);} -return this;},item:function(index){this.el.dom=this.elements[index];return this.el;},addListener:function(eventName,handler,scope,opt){var els=this.elements;for(var i=0,len=els.length;i<len;i++){Ext.EventManager.on(els[i],eventName,handler,scope||els[i],opt);} -return this;},each:function(fn,scope){var els=this.elements;var el=this.el;for(var i=0,len=els.length;i<len;i++){el.dom=els[i];if(fn.call(scope||el,el,this,i)===false){break;}} -return this;}});Ext.CompositeElementLite.prototype.on=Ext.CompositeElementLite.prototype.addListener;if(Ext.DomQuery){Ext.Element.selectorFunction=Ext.DomQuery.select;} -Ext.Element.select=function(selector,unique,root){var els;if(typeof selector=="string"){els=Ext.Element.selectorFunction(selector,root);}else if(selector.length!==undefined){els=selector;}else{throw"Invalid selector";} -if(unique===true){return new Ext.CompositeElement(els);}else{return new Ext.CompositeElementLite(els);}};Ext.select=Ext.Element.select; - -Ext.UpdateManager=function(el,forceNew){el=Ext.get(el);if(!forceNew&&el.updateManager){return el.updateManager;} -this.el=el;this.defaultUrl=null;this.addEvents({"beforeupdate":true,"update":true,"failure":true});var d=Ext.UpdateManager.defaults;this.sslBlankUrl=d.sslBlankUrl;this.disableCaching=d.disableCaching;this.indicatorText=d.indicatorText;this.showLoadIndicator=d.showLoadIndicator;this.timeout=d.timeout;this.loadScripts=d.loadScripts;this.transaction=null;this.autoRefreshProcId=null;this.refreshDelegate=this.refresh.createDelegate(this);this.updateDelegate=this.update.createDelegate(this);this.formUpdateDelegate=this.formUpdate.createDelegate(this);this.successDelegate=this.processSuccess.createDelegate(this);this.failureDelegate=this.processFailure.createDelegate(this);this.renderer=new Ext.UpdateManager.BasicRenderer();Ext.UpdateManager.superclass.constructor.call(this);};Ext.extend(Ext.UpdateManager,Ext.util.Observable,{getEl:function(){return this.el;},update:function(url,params,callback,discardUrl){if(this.fireEvent("beforeupdate",this.el,url,params)!==false){var method=this.method;if(typeof url=="object"){var cfg=url;url=cfg.url;params=params||cfg.params;callback=callback||cfg.callback;discardUrl=discardUrl||cfg.discardUrl;if(callback&&cfg.scope){callback=callback.createDelegate(cfg.scope);} -if(typeof cfg.method!="undefined"){method=cfg.method;};if(typeof cfg.nocache!="undefined"){this.disableCaching=cfg.nocache;};if(typeof cfg.text!="undefined"){this.indicatorText='<div class="loading-indicator">'+cfg.text+"</div>";};if(typeof cfg.scripts!="undefined"){this.loadScripts=cfg.scripts;};if(typeof cfg.timeout!="undefined"){this.timeout=cfg.timeout;};} -this.showLoading();if(!discardUrl){this.defaultUrl=url;} -if(typeof url=="function"){url=url.call(this);} -if(typeof params=="function"){params=params();} -if(params&&typeof params!="string"){var buf=[];for(var key in params){if(typeof params[key]!="function"){buf.push(encodeURIComponent(key),"=",encodeURIComponent(params[key]),"&");}} -delete buf[buf.length-1];params=buf.join("");} -var cb={success:this.successDelegate,failure:this.failureDelegate,timeout:(this.timeout*1000),argument:{"url":url,"form":null,"callback":callback,"params":params}};method=method||(params?"POST":"GET");if(method=="GET"){url=this.prepareUrl(url);} -this.transaction=Ext.lib.Ajax.request(method,url,cb,params);}},formUpdate:function(form,url,reset,callback){if(this.fireEvent("beforeupdate",this.el,form,url)!==false){formEl=Ext.getDom(form);if(typeof url=="function"){url=url.call(this);} -if(typeof params=="function"){params=params();} -url=url||formEl.action;var cb={success:this.successDelegate,failure:this.failureDelegate,timeout:(this.timeout*1000),argument:{"url":url,"form":formEl,"callback":callback,"reset":reset}};var isUpload=false;var enctype=formEl.getAttribute("enctype");if(enctype&&enctype.toLowerCase()=="multipart/form-data"){isUpload=true;cb.upload=this.successDelegate;} -this.transaction=Ext.lib.Ajax.formRequest(formEl,url,cb,null,isUpload,this.sslBlankUrl);this.showLoading.defer(1,this);}},refresh:function(callback){if(this.defaultUrl==null){return;} -this.update(this.defaultUrl,null,callback,true);},startAutoRefresh:function(interval,url,params,callback,refreshNow){if(refreshNow){this.update(url||this.defaultUrl,params,callback,true);} -if(this.autoRefreshProcId){clearInterval(this.autoRefreshProcId);} -this.autoRefreshProcId=setInterval(this.update.createDelegate(this,[url||this.defaultUrl,params,callback,true]),interval*1000);},stopAutoRefresh:function(){if(this.autoRefreshProcId){clearInterval(this.autoRefreshProcId);delete this.autoRefreshProcId;}},isAutoRefreshing:function(){return this.autoRefreshProcId?true:false;},showLoading:function(){if(this.showLoadIndicator){this.el.update(this.indicatorText);}},prepareUrl:function(url){if(this.disableCaching){var append="_dc="+(new Date().getTime());if(url.indexOf("?")!==-1){url+="&"+append;}else{url+="?"+append;}} -return url;},processSuccess:function(response){this.transaction=null;if(response.argument.form&&response.argument.reset){try{response.argument.form.reset();}catch(e){}} -if(this.loadScripts){this.renderer.render(this.el,response,this,this.updateComplete.createDelegate(this,[response]));}else{this.renderer.render(this.el,response,this);this.updateComplete(response);}},updateComplete:function(response){this.fireEvent("update",this.el,response);if(typeof response.argument.callback=="function"){response.argument.callback(this.el,true,response);}},processFailure:function(response){this.transaction=null;this.fireEvent("failure",this.el,response);if(typeof response.argument.callback=="function"){response.argument.callback(this.el,false,response);}},setRenderer:function(renderer){this.renderer=renderer;},getRenderer:function(){return this.renderer;},setDefaultUrl:function(defaultUrl){this.defaultUrl=defaultUrl;},abort:function(){if(this.transaction){Ext.lib.Ajax.abort(this.transaction);}},isUpdating:function(){if(this.transaction){return Ext.lib.Ajax.isCallInProgress(this.transaction);} -return false;}});Ext.UpdateManager.defaults={timeout:30,loadScripts:false,sslBlankUrl:(Ext.SSL_SECURE_URL||"javascript:false"),disableCaching:false,showLoadIndicator:true,indicatorText:'<div class="loading-indicator">Loading...</div>'};Ext.UpdateManager.updateElement=function(el,url,params,options){var um=Ext.get(el,true).getUpdateManager();Ext.apply(um,options);um.update(url,params,options?options.callback:null);};Ext.UpdateManager.update=Ext.UpdateManager.updateElement;Ext.UpdateManager.BasicRenderer=function(){};Ext.UpdateManager.BasicRenderer.prototype={render:function(el,response,updateManager,callback){el.update(response.responseText,updateManager.loadScripts,callback);}}; - -Ext.util.DelayedTask=function(fn,scope,args){var id=null,d,t;var call=function(){var now=new Date().getTime();if(now-t>=d){clearInterval(id);id=null;fn.apply(scope,args||[]);}};this.delay=function(delay,newFn,newScope,newArgs){if(id&&delay!=d){this.cancel();} -d=delay;t=new Date().getTime();fn=newFn||fn;scope=newScope||scope;args=newArgs||args;if(!id){id=setInterval(call,d);}};this.cancel=function(){if(id){clearInterval(id);id=null;}};}; diff --git a/lib/web/extjs/package/button/button-debug.js b/lib/web/extjs/package/button/button-debug.js deleted file mode 100644 index d745316f7e0dcb0f7d23b1af665f2a9b086f4c0f..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/button/button-debug.js +++ /dev/null @@ -1,391 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.Button = function(renderTo, config){ - Ext.apply(this, config); - this.addEvents({ - - "click" : true, - - "toggle" : true, - - 'mouseover' : true, - - 'mouseout': true - }); - if(this.menu){ - this.menu = Ext.menu.MenuMgr.get(this.menu); - } - if(renderTo){ - this.render(renderTo); - } - Ext.Button.superclass.constructor.call(this); -}; - -Ext.extend(Ext.Button, Ext.util.Observable, { - - hidden : false, - - disabled : false, - - pressed : false, - - - tabIndex : undefined, - - - enableToggle: false, - - menu : undefined, - - menuAlign : "tl-bl?", - - - iconCls : undefined, - - type : 'button', - - // private - menuClassTarget: 'tr', - - clickEvent : 'click', - handleMouseEvents : true, - - - tooltipType : 'qtip', - - - - - - // private - render : function(renderTo){ - var btn; - if(this.hideParent){ - this.parentEl = Ext.get(renderTo); - } - if(!this.dhconfig){ - if(!this.template){ - if(!Ext.Button.buttonTemplate){ - // hideous table template - Ext.Button.buttonTemplate = new Ext.Template( - '<table border="0" cellpadding="0" cellspacing="0" class="x-btn-wrap"><tbody><tr>', - '<td class="x-btn-left"><i> </i></td><td class="x-btn-center"><em unselectable="on"><button class="x-btn-text" type="{1}">{0}</button></em></td><td class="x-btn-right"><i> </i></td>', - "</tr></tbody></table>"); - } - this.template = Ext.Button.buttonTemplate; - } - btn = this.template.append(renderTo, [this.text || ' ', this.type], true); - var btnEl = btn.child("button:first"); - btnEl.on('focus', this.onFocus, this); - btnEl.on('blur', this.onBlur, this); - if(this.cls){ - btn.addClass(this.cls); - } - if(this.icon){ - btnEl.setStyle('background-image', 'url(' +this.icon +')'); - } - if(this.iconCls){ - btnEl.addClass(this.iconCls); - if(!this.cls){ - btn.addClass(this.text ? 'x-btn-text-icon' : 'x-btn-icon'); - } - } - if(this.tabIndex !== undefined){ - btnEl.dom.tabIndex = this.tabIndex; - } - if(this.tooltip){ - if(typeof this.tooltip == 'object'){ - Ext.QuickTips.tips(Ext.apply({ - target: btnEl.id - }, this.tooltip)); - } else { - btnEl.dom[this.tooltipType] = this.tooltip; - } - } - }else{ - btn = Ext.DomHelper.append(Ext.get(renderTo).dom, this.dhconfig, true); - } - this.el = btn; - if(this.id){ - this.el.dom.id = this.el.id = this.id; - } - if(this.menu){ - this.el.child(this.menuClassTarget).addClass("x-btn-with-menu"); - this.menu.on("show", this.onMenuShow, this); - this.menu.on("hide", this.onMenuHide, this); - } - btn.addClass("x-btn"); - if(Ext.isIE && !Ext.isIE7){ - this.autoWidth.defer(1, this); - }else{ - this.autoWidth(); - } - if(this.handleMouseEvents){ - btn.on("mouseover", this.onMouseOver, this); - btn.on("mouseout", this.onMouseOut, this); - btn.on("mousedown", this.onMouseDown, this); - } - btn.on(this.clickEvent, this.onClick, this); - //btn.on("mouseup", this.onMouseUp, this); - if(this.hidden){ - this.hide(); - } - if(this.disabled){ - this.disable(); - } - Ext.ButtonToggleMgr.register(this); - if(this.pressed){ - this.el.addClass("x-btn-pressed"); - } - if(this.repeat){ - var repeater = new Ext.util.ClickRepeater(btn, - typeof this.repeat == "object" ? this.repeat : {} - ); - repeater.on("click", this.onClick, this); - } - }, - - getEl : function(){ - return this.el; - }, - - - destroy : function(){ - Ext.ButtonToggleMgr.unregister(this); - this.el.removeAllListeners(); - this.purgeListeners(); - this.el.remove(); - }, - - // private - autoWidth : function(){ - if(this.el){ - this.el.setWidth("auto"); - if(Ext.isIE7 && Ext.isStrict){ - var ib = this.el.child('button'); - if(ib && ib.getWidth() > 20){ - ib.clip(); - ib.setWidth(Ext.util.TextMetrics.measure(ib, this.text).width+ib.getFrameWidth('lr')); - } - } - if(this.minWidth){ - if(this.hidden){ - this.el.beginMeasure(); - } - if(this.el.getWidth() < this.minWidth){ - this.el.setWidth(this.minWidth); - } - if(this.hidden){ - this.el.endMeasure(); - } - } - } - }, - - - setHandler : function(handler, scope){ - this.handler = handler; - this.scope = scope; - }, - - - setText : function(text){ - this.text = text; - if(this.el){ - this.el.child("td.x-btn-center button.x-btn-text").update(text); - } - this.autoWidth(); - }, - - - getText : function(){ - return this.text; - }, - - - show: function(){ - this.hidden = false; - if(this.el){ - this[this.hideParent? 'parentEl' : 'el'].setStyle("display", ""); - } - }, - - - hide: function(){ - this.hidden = true; - if(this.el){ - this[this.hideParent? 'parentEl' : 'el'].setStyle("display", "none"); - } - }, - - - setVisible: function(visible){ - if(visible) { - this.show(); - }else{ - this.hide(); - } - }, - - - toggle : function(state){ - state = state === undefined ? !this.pressed : state; - if(state != this.pressed){ - if(state){ - this.el.addClass("x-btn-pressed"); - this.pressed = true; - this.fireEvent("toggle", this, true); - }else{ - this.el.removeClass("x-btn-pressed"); - this.pressed = false; - this.fireEvent("toggle", this, false); - } - if(this.toggleHandler){ - this.toggleHandler.call(this.scope || this, this, state); - } - } - }, - - - focus : function(){ - this.el.child('button:first').focus(); - }, - - - disable : function(){ - if(this.el){ - this.el.addClass("x-btn-disabled"); - } - this.disabled = true; - }, - - - enable : function(){ - if(this.el){ - this.el.removeClass("x-btn-disabled"); - } - this.disabled = false; - }, - - - setDisabled : function(v){ - this[v !== true ? "enable" : "disable"](); - }, - - // private - onClick : function(e){ - if(e){ - e.preventDefault(); - } - if(e.button != 0){ - return; - } - if(!this.disabled){ - if(this.enableToggle){ - this.toggle(); - } - if(this.menu && !this.menu.isVisible()){ - this.menu.show(this.el, this.menuAlign); - } - this.fireEvent("click", this, e); - if(this.handler){ - this.el.removeClass("x-btn-over"); - this.handler.call(this.scope || this, this, e); - } - } - }, - // private - onMouseOver : function(e){ - if(!this.disabled){ - this.el.addClass("x-btn-over"); - this.fireEvent('mouseover', this, e); - } - }, - // private - onMouseOut : function(e){ - if(!e.within(this.el, true)){ - this.el.removeClass("x-btn-over"); - this.fireEvent('mouseout', this, e); - } - }, - // private - onFocus : function(e){ - if(!this.disabled){ - this.el.addClass("x-btn-focus"); - } - }, - // private - onBlur : function(e){ - this.el.removeClass("x-btn-focus"); - }, - // private - onMouseDown : function(e){ - if(!this.disabled && e.button == 0){ - this.el.addClass("x-btn-click"); - Ext.get(document).on('mouseup', this.onMouseUp, this); - } - }, - // private - onMouseUp : function(e){ - if(e.button == 0){ - this.el.removeClass("x-btn-click"); - Ext.get(document).un('mouseup', this.onMouseUp, this); - } - }, - // private - onMenuShow : function(e){ - this.el.addClass("x-btn-menu-active"); - }, - // private - onMenuHide : function(e){ - this.el.removeClass("x-btn-menu-active"); - } -}); - -// Private utility class used by Button -Ext.ButtonToggleMgr = function(){ - var groups = {}; - - function toggleGroup(btn, state){ - if(state){ - var g = groups[btn.toggleGroup]; - for(var i = 0, l = g.length; i < l; i++){ - if(g[i] != btn){ - g[i].toggle(false); - } - } - } - } - - return { - register : function(btn){ - if(!btn.toggleGroup){ - return; - } - var g = groups[btn.toggleGroup]; - if(!g){ - g = groups[btn.toggleGroup] = []; - } - g.push(btn); - btn.on("toggle", toggleGroup); - }, - - unregister : function(btn){ - if(!btn.toggleGroup){ - return; - } - var g = groups[btn.toggleGroup]; - if(g){ - g.remove(btn); - btn.un("toggle", toggleGroup); - } - } - }; -}(); diff --git a/lib/web/extjs/package/button/button.js b/lib/web/extjs/package/button/button.js deleted file mode 100644 index 54ad6dca924403a53ab5a4eb558dcaf015f5b694..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/button/button.js +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.Button=function(renderTo,config){Ext.apply(this,config);this.addEvents({"click":true,"toggle":true,'mouseover':true,'mouseout':true});if(this.menu){this.menu=Ext.menu.MenuMgr.get(this.menu);} -if(renderTo){this.render(renderTo);} -Ext.Button.superclass.constructor.call(this);};Ext.extend(Ext.Button,Ext.util.Observable,{hidden:false,disabled:false,pressed:false,tabIndex:undefined,enableToggle:false,menu:undefined,menuAlign:"tl-bl?",iconCls:undefined,type:'button',menuClassTarget:'tr',clickEvent:'click',handleMouseEvents:true,tooltipType:'qtip',render:function(renderTo){var btn;if(this.hideParent){this.parentEl=Ext.get(renderTo);} -if(!this.dhconfig){if(!this.template){if(!Ext.Button.buttonTemplate){Ext.Button.buttonTemplate=new Ext.Template('<table border="0" cellpadding="0" cellspacing="0" class="x-btn-wrap"><tbody><tr>','<td class="x-btn-left"><i> </i></td><td class="x-btn-center"><em unselectable="on"><button class="x-btn-text" type="{1}">{0}</button></em></td><td class="x-btn-right"><i> </i></td>',"</tr></tbody></table>");} -this.template=Ext.Button.buttonTemplate;} -btn=this.template.append(renderTo,[this.text||' ',this.type],true);var btnEl=btn.child("button:first");btnEl.on('focus',this.onFocus,this);btnEl.on('blur',this.onBlur,this);if(this.cls){btn.addClass(this.cls);} -if(this.icon){btnEl.setStyle('background-image','url('+this.icon+')');} -if(this.iconCls){btnEl.addClass(this.iconCls);if(!this.cls){btn.addClass(this.text?'x-btn-text-icon':'x-btn-icon');}} -if(this.tabIndex!==undefined){btnEl.dom.tabIndex=this.tabIndex;} -if(this.tooltip){if(typeof this.tooltip=='object'){Ext.QuickTips.tips(Ext.apply({target:btnEl.id},this.tooltip));}else{btnEl.dom[this.tooltipType]=this.tooltip;}}}else{btn=Ext.DomHelper.append(Ext.get(renderTo).dom,this.dhconfig,true);} -this.el=btn;if(this.id){this.el.dom.id=this.el.id=this.id;} -if(this.menu){this.el.child(this.menuClassTarget).addClass("x-btn-with-menu");this.menu.on("show",this.onMenuShow,this);this.menu.on("hide",this.onMenuHide,this);} -btn.addClass("x-btn");if(Ext.isIE&&!Ext.isIE7){this.autoWidth.defer(1,this);}else{this.autoWidth();} -if(this.handleMouseEvents){btn.on("mouseover",this.onMouseOver,this);btn.on("mouseout",this.onMouseOut,this);btn.on("mousedown",this.onMouseDown,this);} -btn.on(this.clickEvent,this.onClick,this);if(this.hidden){this.hide();} -if(this.disabled){this.disable();} -Ext.ButtonToggleMgr.register(this);if(this.pressed){this.el.addClass("x-btn-pressed");} -if(this.repeat){var repeater=new Ext.util.ClickRepeater(btn,typeof this.repeat=="object"?this.repeat:{});repeater.on("click",this.onClick,this);}},getEl:function(){return this.el;},destroy:function(){Ext.ButtonToggleMgr.unregister(this);this.el.removeAllListeners();this.purgeListeners();this.el.remove();},autoWidth:function(){if(this.el){this.el.setWidth("auto");if(Ext.isIE7&&Ext.isStrict){var ib=this.el.child('button');if(ib&&ib.getWidth()>20){ib.clip();ib.setWidth(Ext.util.TextMetrics.measure(ib,this.text).width+ib.getFrameWidth('lr'));}} -if(this.minWidth){if(this.hidden){this.el.beginMeasure();} -if(this.el.getWidth()<this.minWidth){this.el.setWidth(this.minWidth);} -if(this.hidden){this.el.endMeasure();}}}},setHandler:function(handler,scope){this.handler=handler;this.scope=scope;},setText:function(text){this.text=text;if(this.el){this.el.child("td.x-btn-center button.x-btn-text").update(text);} -this.autoWidth();},getText:function(){return this.text;},show:function(){this.hidden=false;if(this.el){this[this.hideParent?'parentEl':'el'].setStyle("display","");}},hide:function(){this.hidden=true;if(this.el){this[this.hideParent?'parentEl':'el'].setStyle("display","none");}},setVisible:function(visible){if(visible){this.show();}else{this.hide();}},toggle:function(state){state=state===undefined?!this.pressed:state;if(state!=this.pressed){if(state){this.el.addClass("x-btn-pressed");this.pressed=true;this.fireEvent("toggle",this,true);}else{this.el.removeClass("x-btn-pressed");this.pressed=false;this.fireEvent("toggle",this,false);} -if(this.toggleHandler){this.toggleHandler.call(this.scope||this,this,state);}}},focus:function(){this.el.child('button:first').focus();},disable:function(){if(this.el){this.el.addClass("x-btn-disabled");} -this.disabled=true;},enable:function(){if(this.el){this.el.removeClass("x-btn-disabled");} -this.disabled=false;},setDisabled:function(v){this[v!==true?"enable":"disable"]();},onClick:function(e){if(e){e.preventDefault();} -if(e.button!=0){return;} -if(!this.disabled){if(this.enableToggle){this.toggle();} -if(this.menu&&!this.menu.isVisible()){this.menu.show(this.el,this.menuAlign);} -this.fireEvent("click",this,e);if(this.handler){this.el.removeClass("x-btn-over");this.handler.call(this.scope||this,this,e);}}},onMouseOver:function(e){if(!this.disabled){this.el.addClass("x-btn-over");this.fireEvent('mouseover',this,e);}},onMouseOut:function(e){if(!e.within(this.el,true)){this.el.removeClass("x-btn-over");this.fireEvent('mouseout',this,e);}},onFocus:function(e){if(!this.disabled){this.el.addClass("x-btn-focus");}},onBlur:function(e){this.el.removeClass("x-btn-focus");},onMouseDown:function(e){if(!this.disabled&&e.button==0){this.el.addClass("x-btn-click");Ext.get(document).on('mouseup',this.onMouseUp,this);}},onMouseUp:function(e){if(e.button==0){this.el.removeClass("x-btn-click");Ext.get(document).un('mouseup',this.onMouseUp,this);}},onMenuShow:function(e){this.el.addClass("x-btn-menu-active");},onMenuHide:function(e){this.el.removeClass("x-btn-menu-active");}});Ext.ButtonToggleMgr=function(){var groups={};function toggleGroup(btn,state){if(state){var g=groups[btn.toggleGroup];for(var i=0,l=g.length;i<l;i++){if(g[i]!=btn){g[i].toggle(false);}}}} -return{register:function(btn){if(!btn.toggleGroup){return;} -var g=groups[btn.toggleGroup];if(!g){g=groups[btn.toggleGroup]=[];} -g.push(btn);btn.on("toggle",toggleGroup);},unregister:function(btn){if(!btn.toggleGroup){return;} -var g=groups[btn.toggleGroup];if(g){g.remove(btn);btn.un("toggle",toggleGroup);}}};}(); diff --git a/lib/web/extjs/package/color-palette.js b/lib/web/extjs/package/color-palette.js deleted file mode 100644 index 3d5d12d77ef0fe2285032b0da1a0aea582313a22..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/color-palette.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.ColorPalette=function(config){Ext.ColorPalette.superclass.constructor.call(this,config);this.addEvents({select:true});if(this.handler){this.on("select",this.handler,this.scope,true);}};Ext.extend(Ext.ColorPalette,Ext.Component,{itemCls:"x-color-palette",value:null,clickEvent:'click',ctype:"Ext.ColorPalette",allowReselect:false,colors:["000000","993300","333300","003300","003366","000080","333399","333333","800000","FF6600","808000","008000","008080","0000FF","666699","808080","FF0000","FF9900","99CC00","339966","33CCCC","3366FF","800080","969696","FF00FF","FFCC00","FFFF00","00FF00","00FFFF","00CCFF","993366","C0C0C0","FF99CC","FFCC99","FFFF99","CCFFCC","CCFFFF","99CCFF","CC99FF","FFFFFF"],onRender:function(container,position){var t=new Ext.MasterTemplate('<tpl><a href="#" class="color-{0}" hidefocus="on"><em><span style="background:#{0}" unselectable="on"> </span></em></a></tpl>');var c=this.colors;for(var i=0,len=c.length;i<len;i++){t.add([c[i]]);} -var el=document.createElement("div");el.className=this.itemCls;t.overwrite(el);container.dom.insertBefore(el,position);this.el=Ext.get(el);this.el.on(this.clickEvent,this.handleClick,this,{delegate:"a"});if(this.clickEvent!='click'){this.el.on('click',Ext.emptyFn,this,{delegate:"a",preventDefault:true});}},afterRender:function(){Ext.ColorPalette.superclass.afterRender.call(this);if(this.value){var s=this.value;this.value=null;this.select(s);}},handleClick:function(e,t){e.preventDefault();if(!this.disabled){var c=t.className.match(/(?:^|\s)color-(.{6})(?:\s|$)/)[1];this.select(c.toUpperCase());}},select:function(color){color=color.replace("#","");if(color!=this.value||this.allowReselect){var el=this.el;if(this.value){el.child("a.color-"+this.value).removeClass("x-color-palette-sel");} -el.child("a.color-"+color).addClass("x-color-palette-sel");this.value=color;this.fireEvent("select",this,color);}}}); diff --git a/lib/web/extjs/package/data/data.js b/lib/web/extjs/package/data/data.js deleted file mode 100644 index 1490fab25ea57ff7bbc3a2c7c6356f29d355047a..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/data/data.js +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.data.SortTypes={none:function(s){return s;},stripTagsRE:/<\/?[^>]+>/gi,asText:function(s){return String(s).replace(this.stripTagsRE,"");},asUCText:function(s){return String(s).toUpperCase().replace(this.stripTagsRE,"");},asUCString:function(s){return String(s).toUpperCase();},asDate:function(s){if(!s){return 0;} -if(s instanceof Date){return s.getTime();} -return Date.parse(String(s));},asFloat:function(s){var val=parseFloat(String(s).replace(/,/g,""));if(isNaN(val))val=0;return val;},asInt:function(s){var val=parseInt(String(s).replace(/,/g,""));if(isNaN(val))val=0;return val;}}; - -Ext.data.Record=function(data,id){this.id=(id||id===0)?id:++Ext.data.Record.AUTO_ID;this.data=data;};Ext.data.Record.create=function(o){var f=function(){f.superclass.constructor.apply(this,arguments);};Ext.extend(f,Ext.data.Record);var p=f.prototype;p.fields=new Ext.util.MixedCollection(false,function(field){return field.name;});for(var i=0,len=o.length;i<len;i++){p.fields.add(new Ext.data.Field(o[i]));} -f.getField=function(name){return p.fields.get(name);};return f;};Ext.data.Record.AUTO_ID=1000;Ext.data.Record.EDIT='edit';Ext.data.Record.REJECT='reject';Ext.data.Record.COMMIT='commit';Ext.data.Record.prototype={dirty:false,editing:false,error:null,modified:null,join:function(store){this.store=store;},set:function(name,value){if(this.data[name]==value){return;} -this.dirty=true;if(!this.modified){this.modified={};} -if(typeof this.modified[name]=='undefined'){this.modified[name]=this.data[name];} -this.data[name]=value;if(!this.editing){this.store.afterEdit(this);}},get:function(name){return this.data[name];},beginEdit:function(){this.editing=true;this.modified={};},cancelEdit:function(){this.editing=false;delete this.modified;},endEdit:function(){this.editing=false;if(this.dirty&&this.store){this.store.afterEdit(this);}},reject:function(){var m=this.modified;for(var n in m){if(typeof m[n]!="function"){this.data[n]=m[n];}} -this.dirty=false;delete this.modified;this.editing=false;if(this.store){this.store.afterReject(this);}},commit:function(){this.dirty=false;delete this.modified;this.editing=false;if(this.store){this.store.afterCommit(this);}},hasError:function(){return this.error!=null;},clearError:function(){this.error=null;}}; - -Ext.data.Store=function(config){this.data=new Ext.util.MixedCollection(false);this.data.getKey=function(o){return o.id;};this.baseParams={};this.paramNames={"start":"start","limit":"limit","sort":"sort","dir":"dir"};if(config&&config.data){this.inlineData=config.data;delete config.data;} -Ext.apply(this,config);if(this.reader){if(!this.recordType){this.recordType=this.reader.recordType;} -if(this.reader.onMetaChange){this.reader.onMetaChange=this.onMetaChange.createDelegate(this);}} -if(this.recordType){this.fields=this.recordType.prototype.fields;} -this.modified=[];this.addEvents({datachanged:true,metachange:true,add:true,remove:true,update:true,clear:true,beforeload:true,load:true,loadexception:true});if(this.proxy){this.relayEvents(this.proxy,["loadexception"]);} -this.sortToggle={};Ext.data.Store.superclass.constructor.call(this);if(this.inlineData){this.loadData(this.inlineData);delete this.inlineData;}};Ext.extend(Ext.data.Store,Ext.util.Observable,{remoteSort:false,lastOptions:null,add:function(records){records=[].concat(records);for(var i=0,len=records.length;i<len;i++){records[i].join(this);} -var index=this.data.length;this.data.addAll(records);this.fireEvent("add",this,records,index);},remove:function(record){var index=this.data.indexOf(record);this.data.removeAt(index);this.fireEvent("remove",this,record,index);},removeAll:function(){this.data.clear();this.fireEvent("clear",this);},insert:function(index,records){records=[].concat(records);for(var i=0,len=records.length;i<len;i++){this.data.insert(index,records[i]);records[i].join(this);} -this.fireEvent("add",this,records,index);},indexOf:function(record){return this.data.indexOf(record);},indexOfId:function(id){return this.data.indexOfKey(id);},getById:function(id){return this.data.key(id);},getAt:function(index){return this.data.itemAt(index);},getRange:function(start,end){return this.data.getRange(start,end);},storeOptions:function(o){o=Ext.apply({},o);delete o.callback;delete o.scope;this.lastOptions=o;},load:function(options){options=options||{};if(this.fireEvent("beforeload",this,options)!==false){this.storeOptions(options);var p=Ext.apply(options.params||{},this.baseParams);if(this.sortInfo&&this.remoteSort){var pn=this.paramNames;p[pn["sort"]]=this.sortInfo.field;p[pn["dir"]]=this.sortInfo.direction;} -this.proxy.load(p,this.reader,this.loadRecords,this,options);}},reload:function(options){this.load(Ext.applyIf(options||{},this.lastOptions));},loadRecords:function(o,options,success){if(!o||success===false){if(success!==false){this.fireEvent("load",this,[],options);} -if(options.callback){options.callback.call(options.scope||this,[],options,false);} -return;} -var r=o.records,t=o.totalRecords||r.length;for(var i=0,len=r.length;i<len;i++){r[i].join(this);} -if(!options||options.add!==true){this.data.clear();this.data.addAll(r);this.totalLength=t;this.applySort();this.fireEvent("datachanged",this);}else{this.totalLength=Math.max(t,this.data.length+r.length);this.data.addAll(r);} -this.fireEvent("load",this,r,options);if(options.callback){options.callback.call(options.scope||this,r,options,true);}},loadData:function(o,append){var r=this.reader.readRecords(o);this.loadRecords(r,{add:append},true);},getCount:function(){return this.data.length||0;},getTotalCount:function(){return this.totalLength||0;},getSortState:function(){return this.sortInfo;},applySort:function(){if(this.sortInfo&&!this.remoteSort){var s=this.sortInfo,f=s.field;var st=this.fields.get(f).sortType;var fn=function(r1,r2){var v1=st(r1.data[f]),v2=st(r2.data[f]);return v1>v2?1:(v1<v2?-1:0);};this.data.sort(s.direction,fn);if(this.snapshot&&this.snapshot!=this.data){this.snapshot.sort(s.direction,fn);}}},setDefaultSort:function(field,dir){this.sortInfo={field:field,direction:dir?dir.toUpperCase():"ASC"};},sort:function(fieldName,dir){var f=this.fields.get(fieldName);if(!dir){if(this.sortInfo&&this.sortInfo.field==f.name){dir=(this.sortToggle[f.name]||"ASC").toggle("ASC","DESC");}else{dir=f.sortDir;}} -this.sortToggle[f.name]=dir;this.sortInfo={field:f.name,direction:dir};if(!this.remoteSort){this.applySort();this.fireEvent("datachanged",this);}else{this.load(this.lastOptions);}},each:function(fn,scope){this.data.each(fn,scope);},getModifiedRecords:function(){return this.modified;},filter:function(property,value){if(!value.exec){value=String(value);if(value.length==0){return this.clearFilter();} -value=new RegExp("^"+Ext.escapeRe(value),"i");} -this.filterBy(function(r){return value.test(r.data[property]);});},filterBy:function(fn,scope){var data=this.snapshot||this.data;this.snapshot=data;this.data=data.filterBy(fn,scope);this.fireEvent("datachanged",this);},clearFilter:function(suppressEvent){if(this.snapshot&&this.snapshot!=this.data){this.data=this.snapshot;delete this.snapshot;if(suppressEvent!==true){this.fireEvent("datachanged",this);}}},afterEdit:function(record){if(this.modified.indexOf(record)==-1){this.modified.push(record);} -this.fireEvent("update",this,record,Ext.data.Record.EDIT);},afterReject:function(record){this.modified.remove(record);this.fireEvent("update",this,record,Ext.data.Record.REJECT);},afterCommit:function(record){this.modified.remove(record);this.fireEvent("update",this,record,Ext.data.Record.COMMIT);},commitChanges:function(){var m=this.modified.slice(0);this.modified=[];for(var i=0,len=m.length;i<len;i++){m[i].commit();}},rejectChanges:function(){var m=this.modified.slice(0);this.modified=[];for(var i=0,len=m.length;i<len;i++){m[i].reject();}},onMetaChange:function(meta,rtype,o){this.recordType=rtype;this.fields=rtype.prototype.fields;delete this.snapshot;this.sortInfo=meta.sortInfo;this.modified=[];this.fireEvent('metachange',this,this.reader.meta);}}); - -Ext.data.SimpleStore=function(config){Ext.data.SimpleStore.superclass.constructor.call(this,{reader:new Ext.data.ArrayReader({id:config.id},Ext.data.Record.create(config.fields)),proxy:new Ext.data.MemoryProxy(config.data)});this.load();};Ext.extend(Ext.data.SimpleStore,Ext.data.Store); - -Ext.data.Connection=function(config){Ext.apply(this,config);this.addEvents({"beforerequest":true,"requestcomplete":true,"requestexception":true});Ext.data.Connection.superclass.constructor.call(this);};Ext.extend(Ext.data.Connection,Ext.util.Observable,{timeout:30000,request:function(options){if(this.fireEvent("beforerequest",this,options)!==false){var p=options.params;if(typeof p=="object"){p=Ext.urlEncode(Ext.apply(options.params,this.extraParams));} -var cb={success:this.handleResponse,failure:this.handleFailure,scope:this,argument:{options:options},timeout:this.timeout};var method=options.method||this.method||(p?"POST":"GET");var url=options.url||this.url;if(this.autoAbort!==false){this.abort();} -if(method=='GET'&&p){url+=(url.indexOf('?')!=-1?'&':'?')+p;p='';} -this.transId=Ext.lib.Ajax.request(method,url,cb,p);}else{if(typeof options.callback=="function"){options.callback.call(options.scope||window,options,null,null);}}},isLoading:function(){return this.transId?true:false;},abort:function(){if(this.isLoading()){Ext.lib.Ajax.abort(this.transId);}},handleResponse:function(response){this.transId=false;var options=response.argument.options;this.fireEvent("requestcomplete",this,response,options);if(typeof options.callback=="function"){options.callback.call(options.scope||window,options,true,response);}},handleFailure:function(response,e){this.transId=false;var options=response.argument.options;this.fireEvent("requestexception",this,response,options,e);if(typeof options.callback=="function"){options.callback.call(options.scope||window,options,false,response);}}}); - -Ext.data.Field=function(config){if(typeof config=="string"){config={name:config};} -Ext.apply(this,config);if(!this.type){this.type="auto";} -var st=Ext.data.SortTypes;if(typeof this.sortType=="string"){this.sortType=st[this.sortType];} -if(!this.sortType){switch(this.type){case"string":this.sortType=st.asUCString;break;case"date":this.sortType=st.asDate;break;default:this.sortType=st.none;}} -var stripRe=/[\$,%]/g;if(!this.convert){var cv,dateFormat=this.dateFormat;switch(this.type){case"":case"auto":case undefined:cv=function(v){return v;};break;case"string":cv=function(v){return String(v);};break;case"int":cv=function(v){return v!==undefined&&v!==null&&v!==''?parseInt(String(v).replace(stripRe,""),10):'';};break;case"float":cv=function(v){return v!==undefined&&v!==null&&v!==''?parseFloat(String(v).replace(stripRe,""),10):'';};break;case"bool":case"boolean":cv=function(v){return v===true||v==="true"||v==1;};break;case"date":cv=function(v){if(!v){return'';} -if(v instanceof Date){return v;} -if(dateFormat){if(dateFormat=="timestamp"){return new Date(v*1000);} -return Date.parseDate(v,dateFormat);} -var parsed=Date.parse(v);return parsed?new Date(parsed):null;};break;} -this.convert=cv;}};Ext.data.Field.prototype={dateFormat:null,defaultValue:"",mapping:null,sortType:null,sortDir:"ASC"}; - -Ext.data.DataReader=function(meta,recordType){this.meta=meta;this.recordType=recordType instanceof Array?Ext.data.Record.create(recordType):recordType;};Ext.data.DataReader.prototype={}; - -Ext.data.DataProxy=function(){this.addEvents({beforeload:true,load:true,loadexception:true});Ext.data.DataProxy.superclass.constructor.call(this);};Ext.extend(Ext.data.DataProxy,Ext.util.Observable); - -Ext.data.MemoryProxy=function(data){Ext.data.MemoryProxy.superclass.constructor.call(this);this.data=data;};Ext.extend(Ext.data.MemoryProxy,Ext.data.DataProxy,{load:function(params,reader,callback,scope,arg){params=params||{};var result;try{result=reader.readRecords(this.data);}catch(e){this.fireEvent("loadexception",this,arg,null,e);callback.call(scope,null,arg,false);return;} -callback.call(scope,result,arg,true);},update:function(params,records){}}); - -Ext.data.HttpProxy=function(conn){Ext.data.HttpProxy.superclass.constructor.call(this);this.conn=conn.events?conn:new Ext.data.Connection(conn);};Ext.extend(Ext.data.HttpProxy,Ext.data.DataProxy,{getConnection:function(){return this.conn;},load:function(params,reader,callback,scope,arg){if(this.fireEvent("beforeload",this,params)!==false){this.conn.request({params:params||{},request:{callback:callback,scope:scope,arg:arg},reader:reader,callback:this.loadResponse,scope:this});}else{callback.call(scope||this,null,arg,false);}},loadResponse:function(o,success,response){if(!success){this.fireEvent("loadexception",this,o,response);o.request.callback.call(o.request.scope,null,o.request.arg,false);return;} -var result;try{result=o.reader.read(response);}catch(e){this.fireEvent("loadexception",this,o,response,e);o.request.callback.call(o.request.scope,null,o.request.arg,false);return;} -this.fireEvent("load",this,o,o.request.arg);o.request.callback.call(o.request.scope,result,o.request.arg,true);},update:function(dataSet){},updateResponse:function(dataSet){}}); - -Ext.data.ScriptTagProxy=function(config){Ext.data.ScriptTagProxy.superclass.constructor.call(this);Ext.apply(this,config);this.head=document.getElementsByTagName("head")[0];};Ext.data.ScriptTagProxy.TRANS_ID=1000;Ext.extend(Ext.data.ScriptTagProxy,Ext.data.DataProxy,{timeout:30000,callbackParam:"callback",nocache:true,load:function(params,reader,callback,scope,arg){if(this.fireEvent("beforeload",this,params)!==false){var p=Ext.urlEncode(Ext.apply(params,this.extraParams));var url=this.url;url+=(url.indexOf("?")!=-1?"&":"?")+p;if(this.nocache){url+="&_dc="+(new Date().getTime());} -var transId=++Ext.data.ScriptTagProxy.TRANS_ID;var trans={id:transId,cb:"stcCallback"+transId,scriptId:"stcScript"+transId,params:params,arg:arg,url:url,callback:callback,scope:scope,reader:reader};var conn=this;window[trans.cb]=function(o){conn.handleResponse(o,trans);};url+=String.format("&{0}={1}",this.callbackParam,trans.cb);if(this.autoAbort!==false){this.abort();} -trans.timeoutId=this.handleFailure.defer(this.timeout,this,[trans]);var script=document.createElement("script");script.setAttribute("src",url);script.setAttribute("type","text/javascript");script.setAttribute("id",trans.scriptId);this.head.appendChild(script);this.trans=trans;}else{callback.call(scope||this,null,arg,false);}},isLoading:function(){return this.trans?true:false;},abort:function(){if(this.isLoading()){this.destroyTrans(this.trans);}},destroyTrans:function(trans,isLoaded){this.head.removeChild(document.getElementById(trans.scriptId));clearTimeout(trans.timeoutId);if(isLoaded){window[trans.cb]=undefined;try{delete window[trans.cb];}catch(e){}}else{window[trans.cb]=function(){window[trans.cb]=undefined;try{delete window[trans.cb];}catch(e){}};}},handleResponse:function(o,trans){this.trans=false;this.destroyTrans(trans,true);var result;try{result=trans.reader.readRecords(o);}catch(e){this.fireEvent("loadexception",this,o,trans.arg,e);trans.callback.call(trans.scope||window,null,trans.arg,false);return;} -this.fireEvent("load",this,o,trans.arg);trans.callback.call(trans.scope||window,result,trans.arg,true);},handleFailure:function(trans){this.trans=false;this.destroyTrans(trans,false);this.fireEvent("loadexception",this,null,trans.arg);trans.callback.call(trans.scope||window,null,trans.arg,false);}}); - -Ext.data.JsonReader=function(meta,recordType){Ext.data.JsonReader.superclass.constructor.call(this,meta,recordType);};Ext.extend(Ext.data.JsonReader,Ext.data.DataReader,{read:function(response){var json=response.responseText;var o=eval("("+json+")");if(!o){throw{message:"JsonReader.read: Json object not found"};} -if(o.metaData){delete this.ef;this.meta=o.metaData;this.recordType=Ext.data.Record.create(o.metaData.fields);this.onMetaChange(this.meta,this.recordType,o);} -return this.readRecords(o);},onMetaChange:function(meta,recordType,o){},simpleAccess:function(obj,subsc){return obj[subsc];},getJsonAccessor:function(){var re=/[\[\.]/;return function(expr){try{return(re.test(expr))?new Function("obj","return obj."+expr):function(obj){return obj[expr];};}catch(e){} -return Ext.emptyFn;};}(),readRecords:function(o){this.jsonData=o;var s=this.meta,Record=this.recordType,f=Record.prototype.fields,fi=f.items,fl=f.length;if(!this.ef){if(s.totalProperty){this.getTotal=this.getJsonAccessor(s.totalProperty);} -if(s.successProperty){this.getSuccess=this.getJsonAccessor(s.successProperty);} -this.getRoot=s.root?this.getJsonAccessor(s.root):function(p){return p;};if(s.id){var g=this.getJsonAccessor(s.id);this.getId=function(rec){var r=g(rec);return(r===undefined||r==="")?null:r;};}else{this.getId=function(){return null;};} -this.ef=[];for(var i=0;i<fl;i++){f=fi[i];var map=(f.mapping!==undefined&&f.mapping!==null)?f.mapping:f.name;this.ef[i]=this.getJsonAccessor(map);}} -var root=this.getRoot(o),c=root.length,totalRecords=c,success=true;if(s.totalProperty){var v=parseInt(this.getTotal(o),10);if(!isNaN(v)){totalRecords=v;}} -if(s.successProperty){var v=this.getSuccess(o);if(v===false||v==='false'){success=false;}} -var records=[];for(var i=0;i<c;i++){var n=root[i];var values={};var id=this.getId(n);for(var j=0;j<fl;j++){f=fi[j];var v=this.ef[j](n);values[f.name]=f.convert((v!==undefined)?v:f.defaultValue);} -var record=new Record(values,id);record.json=n;records[i]=record;} -return{success:success,records:records,totalRecords:totalRecords};}}); - -Ext.data.XmlReader=function(meta,recordType){Ext.data.XmlReader.superclass.constructor.call(this,meta,recordType);};Ext.extend(Ext.data.XmlReader,Ext.data.DataReader,{read:function(response){var doc=response.responseXML;if(!doc){throw{message:"XmlReader.read: XML Document not available"};} -return this.readRecords(doc);},readRecords:function(doc){this.xmlData=doc;var root=doc.documentElement||doc;var q=Ext.DomQuery;var recordType=this.recordType,fields=recordType.prototype.fields;var sid=this.meta.id;var totalRecords=0,success=true;if(this.meta.totalRecords){totalRecords=q.selectNumber(this.meta.totalRecords,root,0);} -if(this.meta.success){var sv=q.selectValue(this.meta.success,root,true);success=sv!==false&&sv!=='false';} -var records=[];var ns=q.select(this.meta.record,root);for(var i=0,len=ns.length;i<len;i++){var n=ns[i];var values={};var id=sid?q.selectValue(sid,n):undefined;for(var j=0,jlen=fields.length;j<jlen;j++){var f=fields.items[j];var v=q.selectValue(f.mapping||f.name,n,f.defaultValue);v=f.convert(v);values[f.name]=v;} -var record=new recordType(values,id);record.node=n;records[records.length]=record;} -return{success:success,records:records,totalRecords:totalRecords||records.length};}}); - -Ext.data.ArrayReader=function(meta,recordType){Ext.data.ArrayReader.superclass.constructor.call(this,meta,recordType);};Ext.extend(Ext.data.ArrayReader,Ext.data.JsonReader,{readRecords:function(o){var sid=this.meta?this.meta.id:null;var recordType=this.recordType,fields=recordType.prototype.fields;var records=[];var root=o;for(var i=0;i<root.length;i++){var n=root[i];var values={};var id=((sid||sid===0)&&n[sid]!==undefined&&n[sid]!==""?n[sid]:null);for(var j=0,jlen=fields.length;j<jlen;j++){var f=fields.items[j];var k=f.mapping!==undefined&&f.mapping!==null?f.mapping:j;var v=n[k]!==undefined?n[k]:f.defaultValue;v=f.convert(v);values[f.name]=v;} -var record=new recordType(values,id);record.json=n;records[records.length]=record;} -return{records:records,totalRecords:records.length};}}); diff --git a/lib/web/extjs/package/date.js b/lib/web/extjs/package/date.js deleted file mode 100644 index 59be9bad8b9290f8cb338cb3ce757db61d384260..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/date.js +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Date.parseFunctions={count:0};Date.parseRegexes=[];Date.formatFunctions={count:0};Date.prototype.dateFormat=function(format){if(Date.formatFunctions[format]==null){Date.createNewFormat(format);} -var func=Date.formatFunctions[format];return this[func]();};Date.prototype.format=Date.prototype.dateFormat;Date.createNewFormat=function(format){var funcName="format"+Date.formatFunctions.count++;Date.formatFunctions[format]=funcName;var code="Date.prototype."+funcName+" = function(){return ";var special=false;var ch='';for(var i=0;i<format.length;++i){ch=format.charAt(i);if(!special&&ch=="\\"){special=true;} -else if(special){special=false;code+="'"+String.escape(ch)+"' + ";} -else{code+=Date.getFormatCode(ch);}} -eval(code.substring(0,code.length-3)+";}");};Date.getFormatCode=function(character){switch(character){case"d":return"String.leftPad(this.getDate(), 2, '0') + ";case"D":return"Date.dayNames[this.getDay()].substring(0, 3) + ";case"j":return"this.getDate() + ";case"l":return"Date.dayNames[this.getDay()] + ";case"S":return"this.getSuffix() + ";case"w":return"this.getDay() + ";case"z":return"this.getDayOfYear() + ";case"W":return"this.getWeekOfYear() + ";case"F":return"Date.monthNames[this.getMonth()] + ";case"m":return"String.leftPad(this.getMonth() + 1, 2, '0') + ";case"M":return"Date.monthNames[this.getMonth()].substring(0, 3) + ";case"n":return"(this.getMonth() + 1) + ";case"t":return"this.getDaysInMonth() + ";case"L":return"(this.isLeapYear() ? 1 : 0) + ";case"Y":return"this.getFullYear() + ";case"y":return"('' + this.getFullYear()).substring(2, 4) + ";case"a":return"(this.getHours() < 12 ? 'am' : 'pm') + ";case"A":return"(this.getHours() < 12 ? 'AM' : 'PM') + ";case"g":return"((this.getHours() %12) ? this.getHours() % 12 : 12) + ";case"G":return"this.getHours() + ";case"h":return"String.leftPad((this.getHours() %12) ? this.getHours() % 12 : 12, 2, '0') + ";case"H":return"String.leftPad(this.getHours(), 2, '0') + ";case"i":return"String.leftPad(this.getMinutes(), 2, '0') + ";case"s":return"String.leftPad(this.getSeconds(), 2, '0') + ";case"O":return"this.getGMTOffset() + ";case"T":return"this.getTimezone() + ";case"Z":return"(this.getTimezoneOffset() * -60) + ";default:return"'"+String.escape(character)+"' + ";}};Date.parseDate=function(input,format){if(Date.parseFunctions[format]==null){Date.createParser(format);} -var func=Date.parseFunctions[format];return Date[func](input);};Date.createParser=function(format){var funcName="parse"+Date.parseFunctions.count++;var regexNum=Date.parseRegexes.length;var currentGroup=1;Date.parseFunctions[format]=funcName;var code="Date."+funcName+" = function(input){\n" -+"var y = -1, m = -1, d = -1, h = -1, i = -1, s = -1;\n" -+"var d = new Date();\n" -+"y = d.getFullYear();\n" -+"m = d.getMonth();\n" -+"d = d.getDate();\n" -+"var results = input.match(Date.parseRegexes["+regexNum+"]);\n" -+"if (results && results.length > 0) {";var regex="";var special=false;var ch='';for(var i=0;i<format.length;++i){ch=format.charAt(i);if(!special&&ch=="\\"){special=true;} -else if(special){special=false;regex+=String.escape(ch);} -else{var obj=Date.formatCodeToRegex(ch,currentGroup);currentGroup+=obj.g;regex+=obj.s;if(obj.g&&obj.c){code+=obj.c;}}} -code+="if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0 && s >= 0)\n" -+"{return new Date(y, m, d, h, i, s);}\n" -+"else if (y > 0 && m >= 0 && d > 0 && h >= 0 && i >= 0)\n" -+"{return new Date(y, m, d, h, i);}\n" -+"else if (y > 0 && m >= 0 && d > 0 && h >= 0)\n" -+"{return new Date(y, m, d, h);}\n" -+"else if (y > 0 && m >= 0 && d > 0)\n" -+"{return new Date(y, m, d);}\n" -+"else if (y > 0 && m >= 0)\n" -+"{return new Date(y, m);}\n" -+"else if (y > 0)\n" -+"{return new Date(y);}\n" -+"}return null;}";Date.parseRegexes[regexNum]=new RegExp("^"+regex+"$");eval(code);};Date.formatCodeToRegex=function(character,currentGroup){switch(character){case"D":return{g:0,c:null,s:"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)"};case"j":case"d":return{g:1,c:"d = parseInt(results["+currentGroup+"], 10);\n",s:"(\\d{1,2})"};case"l":return{g:0,c:null,s:"(?:"+Date.dayNames.join("|")+")"};case"S":return{g:0,c:null,s:"(?:st|nd|rd|th)"};case"w":return{g:0,c:null,s:"\\d"};case"z":return{g:0,c:null,s:"(?:\\d{1,3})"};case"W":return{g:0,c:null,s:"(?:\\d{2})"};case"F":return{g:1,c:"m = parseInt(Date.monthNumbers[results["+currentGroup+"].substring(0, 3)], 10);\n",s:"("+Date.monthNames.join("|")+")"};case"M":return{g:1,c:"m = parseInt(Date.monthNumbers[results["+currentGroup+"]], 10);\n",s:"(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)"};case"n":case"m":return{g:1,c:"m = parseInt(results["+currentGroup+"], 10) - 1;\n",s:"(\\d{1,2})"};case"t":return{g:0,c:null,s:"\\d{1,2}"};case"L":return{g:0,c:null,s:"(?:1|0)"};case"Y":return{g:1,c:"y = parseInt(results["+currentGroup+"], 10);\n",s:"(\\d{4})"};case"y":return{g:1,c:"var ty = parseInt(results["+currentGroup+"], 10);\n" -+"y = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",s:"(\\d{1,2})"};case"a":return{g:1,c:"if (results["+currentGroup+"] == 'am') {\n" -+"if (h == 12) { h = 0; }\n" -+"} else { if (h < 12) { h += 12; }}",s:"(am|pm)"};case"A":return{g:1,c:"if (results["+currentGroup+"] == 'AM') {\n" -+"if (h == 12) { h = 0; }\n" -+"} else { if (h < 12) { h += 12; }}",s:"(AM|PM)"};case"g":case"G":case"h":case"H":return{g:1,c:"h = parseInt(results["+currentGroup+"], 10);\n",s:"(\\d{1,2})"};case"i":return{g:1,c:"i = parseInt(results["+currentGroup+"], 10);\n",s:"(\\d{2})"};case"s":return{g:1,c:"s = parseInt(results["+currentGroup+"], 10);\n",s:"(\\d{2})"};case"O":return{g:0,c:null,s:"[+-]\\d{4}"};case"T":return{g:0,c:null,s:"[A-Z]{3}"};case"Z":return{g:0,c:null,s:"[+-]\\d{1,5}"};default:return{g:0,c:null,s:String.escape(character)};}};Date.prototype.getTimezone=function(){return this.toString().replace(/^.*? ([A-Z]{3}) [0-9]{4}.*$/,"$1").replace(/^.*?\(([A-Z])[a-z]+ ([A-Z])[a-z]+ ([A-Z])[a-z]+\)$/,"$1$2$3");};Date.prototype.getGMTOffset=function(){return(this.getTimezoneOffset()>0?"-":"+") -+String.leftPad(Math.floor(this.getTimezoneOffset()/60),2,"0") -+String.leftPad(this.getTimezoneOffset()%60,2,"0");};Date.prototype.getDayOfYear=function(){var num=0;Date.daysInMonth[1]=this.isLeapYear()?29:28;for(var i=0;i<this.getMonth();++i){num+=Date.daysInMonth[i];} -return num+this.getDate()-1;};Date.prototype.getWeekOfYear=function(){var now=this.getDayOfYear()+(4-this.getDay());var jan1=new Date(this.getFullYear(),0,1);var then=(7-jan1.getDay()+4);return String.leftPad(((now-then)/7)+1,2,"0");};Date.prototype.isLeapYear=function(){var year=this.getFullYear();return((year&3)==0&&(year%100||(year%400==0&&year)));};Date.prototype.getFirstDayOfMonth=function(){var day=(this.getDay()-(this.getDate()-1))%7;return(day<0)?(day+7):day;};Date.prototype.getLastDayOfMonth=function(){var day=(this.getDay()+(Date.daysInMonth[this.getMonth()]-this.getDate()))%7;return(day<0)?(day+7):day;};Date.prototype.getFirstDateOfMonth=function(){return new Date(this.getFullYear(),this.getMonth(),1);};Date.prototype.getLastDateOfMonth=function(){return new Date(this.getFullYear(),this.getMonth(),this.getDaysInMonth());};Date.prototype.getDaysInMonth=function(){Date.daysInMonth[1]=this.isLeapYear()?29:28;return Date.daysInMonth[this.getMonth()];};Date.prototype.getSuffix=function(){switch(this.getDate()){case 1:case 21:case 31:return"st";case 2:case 22:return"nd";case 3:case 23:return"rd";default:return"th";}};Date.daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31];Date.monthNames=["January","February","March","April","May","June","July","August","September","October","November","December"];Date.dayNames=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];Date.y2kYear=50;Date.monthNumbers={Jan:0,Feb:1,Mar:2,Apr:3,May:4,Jun:5,Jul:6,Aug:7,Sep:8,Oct:9,Nov:10,Dec:11};Date.prototype.clone=function(){return new Date(this.getTime());};Date.prototype.clearTime=function(clone){if(clone){return this.clone().clearTime();} -this.setHours(0);this.setMinutes(0);this.setSeconds(0);this.setMilliseconds(0);return this;};if(Ext.isSafari){Date.brokenSetMonth=Date.prototype.setMonth;Date.prototype.setMonth=function(num){if(num<=-1){var n=Math.ceil(-num);var back_year=Math.ceil(n/12);var month=(n%12)?12-n%12:0;this.setFullYear(this.getFullYear()-back_year);return Date.brokenSetMonth.call(this,month);}else{return Date.brokenSetMonth.apply(this,arguments);}};} -Date.MILLI="ms";Date.SECOND="s";Date.MINUTE="mi";Date.HOUR="h";Date.DAY="d";Date.MONTH="mo";Date.YEAR="y";Date.prototype.add=function(interval,value){var d=this.clone();if(!interval||value===0)return d;switch(interval.toLowerCase()){case Date.MILLI:d.setMilliseconds(this.getMilliseconds()+value);break;case Date.SECOND:d.setSeconds(this.getSeconds()+value);break;case Date.MINUTE:d.setMinutes(this.getMinutes()+value);break;case Date.HOUR:d.setHours(this.getHours()+value);break;case Date.DAY:d.setDate(this.getDate()+value);break;case Date.MONTH:var day=this.getDate();if(day>28){day=Math.min(day,this.getFirstDateOfMonth().add('mo',value).getLastDateOfMonth().getDate());} -d.setDate(day);d.setMonth(this.getMonth()+value);break;case Date.YEAR:d.setFullYear(this.getFullYear()+value);break;} -return d;}; diff --git a/lib/web/extjs/package/datepicker/datepicker.js b/lib/web/extjs/package/datepicker/datepicker.js deleted file mode 100644 index b0508b5ad0d27eef68225af6c3d60559efe2bf90..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/datepicker/datepicker.js +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.DatePicker=function(config){Ext.DatePicker.superclass.constructor.call(this,config);this.value=config&&config.value?config.value.clearTime():new Date().clearTime();this.addEvents({select:true});if(this.handler){this.on("select",this.handler,this.scope||this);} -if(!this.disabledDatesRE&&this.disabledDates){var dd=this.disabledDates;var re="(?:";for(var i=0;i<dd.length;i++){re+=dd[i];if(i!=dd.length-1)re+="|";} -this.disabledDatesRE=new RegExp(re+")");}};Ext.extend(Ext.DatePicker,Ext.Component,{todayText:"Today",okText:" OK ",cancelText:"Cancel",todayTip:"{0} (Spacebar)",minDate:null,maxDate:null,minText:"This date is before the minimum date",maxText:"This date is after the maximum date",format:"m/d/y",disabledDays:null,disabledDaysText:"",disabledDatesRE:null,disabledDatesText:"",constrainToViewport:true,monthNames:Date.monthNames,dayNames:Date.dayNames,nextText:'Next Month (Control+Right)',prevText:'Previous Month (Control+Left)',monthYearText:'Choose a month (Control+Up/Down to move years)',startDay:0,setValue:function(value){var old=this.value;this.value=value.clearTime(true);if(this.el){this.update(this.value);}},getValue:function(){return this.value;},focus:function(){if(this.el){this.update(this.activeDate);}},onRender:function(container,position){var m=['<table cellspacing="0">','<tr><td class="x-date-left"><a href="#" title="',this.prevText,'"> </a></td><td class="x-date-middle" align="center"></td><td class="x-date-right"><a href="#" title="',this.nextText,'"> </a></td></tr>','<tr><td colspan="3"><table class="x-date-inner" cellspacing="0"><thead><tr>'];var dn=this.dayNames;for(var i=0;i<7;i++){var d=this.startDay+i;if(d>6){d=d-7;} -m.push("<th><span>",dn[d].substr(0,1),"</span></th>");} -m[m.length]="</tr></thead><tbody><tr>";for(var i=0;i<42;i++){if(i%7==0&&i!=0){m[m.length]="</tr><tr>";} -m[m.length]='<td><a href="#" hidefocus="on" class="x-date-date" tabIndex="1"><em><span></span></em></a></td>';} -m[m.length]='</tr></tbody></table></td></tr><tr><td colspan="3" class="x-date-bottom" align="center"></td></tr></table><div class="x-date-mp"></div>';var el=document.createElement("div");el.className="x-date-picker";el.innerHTML=m.join("");container.dom.insertBefore(el,position);this.el=Ext.get(el);this.eventEl=Ext.get(el.firstChild);new Ext.util.ClickRepeater(this.el.child("td.x-date-left a"),{handler:this.showPrevMonth,scope:this,preventDefault:true,stopDefault:true});new Ext.util.ClickRepeater(this.el.child("td.x-date-right a"),{handler:this.showNextMonth,scope:this,preventDefault:true,stopDefault:true});this.eventEl.on("mousewheel",this.handleMouseWheel,this);this.monthPicker=this.el.down('div.x-date-mp');this.monthPicker.enableDisplayMode('block');var kn=new Ext.KeyNav(this.eventEl,{"left":function(e){e.ctrlKey?this.showPrevMonth():this.update(this.activeDate.add("d",-1));},"right":function(e){e.ctrlKey?this.showNextMonth():this.update(this.activeDate.add("d",1));},"up":function(e){e.ctrlKey?this.showNextYear():this.update(this.activeDate.add("d",-7));},"down":function(e){e.ctrlKey?this.showPrevYear():this.update(this.activeDate.add("d",7));},"pageUp":function(e){this.showNextMonth();},"pageDown":function(e){this.showPrevMonth();},"enter":function(e){e.stopPropagation();return true;},scope:this});this.eventEl.on("click",this.handleDateClick,this,{delegate:"a.x-date-date"});this.eventEl.addKeyListener(Ext.EventObject.SPACE,this.selectToday,this);this.el.unselectable();this.cells=this.el.select("table.x-date-inner tbody td");this.textNodes=this.el.query("table.x-date-inner tbody span");this.mbtn=new Ext.Button(this.el.child("td.x-date-middle",true),{text:" ",tooltip:this.monthYearText});this.mbtn.on('click',this.showMonthPicker,this);this.mbtn.el.child(this.mbtn.menuClassTarget).addClass("x-btn-with-menu");var today=(new Date()).dateFormat(this.format);var todayBtn=new Ext.Button(this.el.child("td.x-date-bottom",true),{text:String.format(this.todayText,today),tooltip:String.format(this.todayTip,today),handler:this.selectToday,scope:this});if(Ext.isIE){this.el.repaint();} -this.update(this.value);},createMonthPicker:function(){if(!this.monthPicker.dom.firstChild){var buf=['<table border="0" cellspacing="0">'];for(var i=0;i<6;i++){buf.push('<tr><td class="x-date-mp-month"><a href="#">',this.monthNames[i].substr(0,3),'</a></td>','<td class="x-date-mp-month x-date-mp-sep"><a href="#">',this.monthNames[i+6].substr(0,3),'</a></td>',i==0?'<td class="x-date-mp-ybtn" align="center"><a class="x-date-mp-prev"></a></td><td class="x-date-mp-ybtn" align="center"><a class="x-date-mp-next"></a></td>':'<td class="x-date-mp-year"><a href="#"></a></td><td class="x-date-mp-year"><a href="#"></a></td></tr>');} -buf.push('<tr class="x-date-mp-btns"><td colspan="4"><button type="button" class="x-date-mp-ok">',this.okText,'</button><button type="button" class="x-date-mp-cancel">',this.cancelText,'</button></td></tr>','</table>');this.monthPicker.update(buf.join(''));this.monthPicker.on('click',this.onMonthClick,this);this.monthPicker.on('dblclick',this.onMonthDblClick,this);this.mpMonths=this.monthPicker.select('td.x-date-mp-month');this.mpYears=this.monthPicker.select('td.x-date-mp-year');this.mpMonths.each(function(m,a,i){i+=1;if((i%2)==0){m.dom.xmonth=5+Math.round(i*.5);}else{m.dom.xmonth=Math.round((i-1)*.5);}});}},showMonthPicker:function(){this.createMonthPicker();var size=this.el.getSize();this.monthPicker.setSize(size);this.monthPicker.child('table').setSize(size);this.mpSelMonth=(this.activeDate||this.value).getMonth();this.updateMPMonth(this.mpSelMonth);this.mpSelYear=(this.activeDate||this.value).getFullYear();this.updateMPYear(this.mpSelYear);this.monthPicker.slideIn('t',{duration:.2});},updateMPYear:function(y){this.mpyear=y;var ys=this.mpYears.elements;for(var i=1;i<=10;i++){var td=ys[i-1],y2;if((i%2)==0){y2=y+Math.round(i*.5);td.firstChild.innerHTML=y2;td.xyear=y2;}else{y2=y-(5-Math.round(i*.5));td.firstChild.innerHTML=y2;td.xyear=y2;} -this.mpYears.item(i-1)[y2==this.mpSelYear?'addClass':'removeClass']('x-date-mp-sel');}},updateMPMonth:function(sm){this.mpMonths.each(function(m,a,i){m[m.dom.xmonth==sm?'addClass':'removeClass']('x-date-mp-sel');});},selectMPMonth:function(m){},onMonthClick:function(e,t){e.stopEvent();var el=new Ext.Element(t),pn;if(el.is('button.x-date-mp-cancel')){this.hideMonthPicker();} -else if(el.is('button.x-date-mp-ok')){this.update(new Date(this.mpSelYear,this.mpSelMonth,(this.activeDate||this.value).getDate()));this.hideMonthPicker();} -else if(pn=el.up('td.x-date-mp-month',2)){this.mpMonths.removeClass('x-date-mp-sel');pn.addClass('x-date-mp-sel');this.mpSelMonth=pn.dom.xmonth;} -else if(pn=el.up('td.x-date-mp-year',2)){this.mpYears.removeClass('x-date-mp-sel');pn.addClass('x-date-mp-sel');this.mpSelYear=pn.dom.xyear;} -else if(el.is('a.x-date-mp-prev')){this.updateMPYear(this.mpyear-10);} -else if(el.is('a.x-date-mp-next')){this.updateMPYear(this.mpyear+10);}},onMonthDblClick:function(e,t){e.stopEvent();var el=new Ext.Element(t),pn;if(pn=el.up('td.x-date-mp-month',2)){this.update(new Date(this.mpSelYear,pn.dom.xmonth,(this.activeDate||this.value).getDate()));this.hideMonthPicker();} -else if(pn=el.up('td.x-date-mp-year',2)){this.update(new Date(pn.dom.xyear,this.mpSelMonth,(this.activeDate||this.value).getDate()));this.hideMonthPicker();}},hideMonthPicker:function(disableAnim){if(this.monthPicker){if(disableAnim===true){this.monthPicker.hide();}else{this.monthPicker.slideOut('t',{duration:.2});}}},showPrevMonth:function(e){this.update(this.activeDate.add("mo",-1));},showNextMonth:function(e){this.update(this.activeDate.add("mo",1));},showPrevYear:function(){this.update(this.activeDate.add("y",-1));},showNextYear:function(){this.update(this.activeDate.add("y",1));},handleMouseWheel:function(e){var delta=e.getWheelDelta();if(delta>0){this.showPrevMonth();e.stopEvent();}else if(delta<0){this.showNextMonth();e.stopEvent();}},handleDateClick:function(e,t){e.stopEvent();if(t.dateValue&&!Ext.fly(t.parentNode).hasClass("x-date-disabled")){this.setValue(new Date(t.dateValue));this.fireEvent("select",this,this.value);}},selectToday:function(){this.setValue(new Date().clearTime());this.fireEvent("select",this,this.value);},update:function(date){var vd=this.activeDate;this.activeDate=date;if(vd&&this.el){var t=date.getTime();if(vd.getMonth()==date.getMonth()&&vd.getFullYear()==date.getFullYear()){this.cells.removeClass("x-date-selected");this.cells.each(function(c){if(c.dom.firstChild.dateValue==t){c.addClass("x-date-selected");setTimeout(function(){try{c.dom.firstChild.focus();}catch(e){}},50);return false;}});return;}} -var days=date.getDaysInMonth();var firstOfMonth=date.getFirstDateOfMonth();var startingPos=firstOfMonth.getDay()-this.startDay;if(startingPos<=this.startDay){startingPos+=7;} -var pm=date.add("mo",-1);var prevStart=pm.getDaysInMonth()-startingPos;var cells=this.cells.elements;var textEls=this.textNodes;days+=startingPos;var day=86400000;var d=(new Date(pm.getFullYear(),pm.getMonth(),prevStart)).clearTime();var today=new Date().clearTime().getTime();var sel=date.clearTime().getTime();var min=this.minDate?this.minDate.clearTime():Number.NEGATIVE_INFINITY;var max=this.maxDate?this.maxDate.clearTime():Number.POSITIVE_INFINITY;var ddMatch=this.disabledDatesRE;var ddText=this.disabledDatesText;var ddays=this.disabledDays?this.disabledDays.join(""):false;var ddaysText=this.disabledDaysText;var format=this.format;var setCellClass=function(cal,cell){cell.title="";var t=d.getTime();cell.firstChild.dateValue=t;if(t==today){cell.className+=" x-date-today";cell.title=cal.todayText;} -if(t==sel){cell.className+=" x-date-selected";setTimeout(function(){try{cell.firstChild.focus();}catch(e){}},50);} -if(t<min){cell.className=" x-date-disabled";cell.title=cal.minText;return;} -if(t>max){cell.className=" x-date-disabled";cell.title=cal.maxText;return;} -if(ddays){if(ddays.indexOf(d.getDay())!=-1){cell.title=ddaysText;cell.className=" x-date-disabled";}} -if(ddMatch&&format){var fvalue=d.dateFormat(format);if(ddMatch.test(fvalue)){cell.title=ddText.replace("%0",fvalue);cell.className=" x-date-disabled";}}};var i=0;for(;i<startingPos;i++){textEls[i].innerHTML=(++prevStart);d.setDate(d.getDate()+1);cells[i].className="x-date-prevday";setCellClass(this,cells[i]);} -for(;i<days;i++){intDay=i-startingPos+1;textEls[i].innerHTML=(intDay);d.setDate(d.getDate()+1);cells[i].className="x-date-active";setCellClass(this,cells[i]);} -var extraDays=0;for(;i<42;i++){textEls[i].innerHTML=(++extraDays);d.setDate(d.getDate()+1);cells[i].className="x-date-nextday";setCellClass(this,cells[i]);} -this.mbtn.setText(this.monthNames[date.getMonth()]+" "+date.getFullYear());if(!this.internalRender){var main=this.el.dom.firstChild;var w=main.offsetWidth;this.el.setWidth(w+this.el.getBorderWidth("lr"));Ext.fly(main).setWidth(w);this.internalRender=true;if(Ext.isOpera&&!this.secondPass){main.rows[0].cells[1].style.width=(w-(main.rows[0].cells[0].offsetWidth+main.rows[0].cells[2].offsetWidth))+"px";this.secondPass=true;this.update.defer(10,this,[date]);}}}}); diff --git a/lib/web/extjs/package/dialog/dialogs-debug.js b/lib/web/extjs/package/dialog/dialogs-debug.js deleted file mode 100644 index 42b360c7cf2cee9165cfc9f6840d910dc1910e6c..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/dialog/dialogs-debug.js +++ /dev/null @@ -1,1241 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.BasicDialog = function(el, config){ - this.el = Ext.get(el); - var dh = Ext.DomHelper; - if(!this.el && config && config.autoCreate){ - if(typeof config.autoCreate == "object"){ - if(!config.autoCreate.id){ - config.autoCreate.id = el; - } - this.el = dh.append(document.body, - config.autoCreate, true); - }else{ - this.el = dh.append(document.body, - {tag: "div", id: el, style:'visibility:hidden;'}, true); - } - } - el = this.el; - el.setDisplayed(true); - el.hide = this.hideAction; - this.id = el.id; - el.addClass("x-dlg"); - - Ext.apply(this, config); - - this.proxy = el.createProxy("x-dlg-proxy"); - this.proxy.hide = this.hideAction; - this.proxy.setOpacity(.5); - this.proxy.hide(); - - if(config.width){ - el.setWidth(config.width); - } - if(config.height){ - el.setHeight(config.height); - } - this.size = el.getSize(); - if(typeof config.x != "undefined" && typeof config.y != "undefined"){ - this.xy = [config.x,config.y]; - }else{ - this.xy = el.getCenterXY(true); - } - - this.header = el.child("> .x-dlg-hd"); - - this.body = el.child("> .x-dlg-bd"); - - this.footer = el.child("> .x-dlg-ft"); - - if(!this.header){ - this.header = el.createChild({tag: "div", cls:"x-dlg-hd", html: " "}, this.body ? this.body.dom : null); - } - if(!this.body){ - this.body = el.createChild({tag: "div", cls:"x-dlg-bd"}); - } - - this.header.unselectable(); - if(this.title){ - this.header.update(this.title); - } - // this element allows the dialog to be focused for keyboard event - this.focusEl = el.createChild({tag: "a", href:"#", cls:"x-dlg-focus", tabIndex:"-1"}); - this.focusEl.swallowEvent("click", true); - - this.header.wrap({cls:"x-dlg-hd-right"}).wrap({cls:"x-dlg-hd-left"}, true); - - // wrap the body and footer for special rendering - this.bwrap = this.body.wrap({tag: "div", cls:"x-dlg-dlg-body"}); - if(this.footer){ - this.bwrap.dom.appendChild(this.footer.dom); - } - - this.bg = this.el.createChild({ - tag: "div", cls:"x-dlg-bg", - html: '<div class="x-dlg-bg-left"><div class="x-dlg-bg-right"><div class="x-dlg-bg-center"> </div></div></div>' - }); - this.centerBg = this.bg.child("div.x-dlg-bg-center"); - - - if(this.autoScroll !== false && !this.autoTabs){ - this.body.setStyle("overflow", "auto"); - } - - this.toolbox = this.el.createChild({cls: "x-dlg-toolbox"}); - - if(this.closable !== false){ - this.el.addClass("x-dlg-closable"); - this.close = this.toolbox.createChild({cls:"x-dlg-close"}); - this.close.on("click", this.closeClick, this); - this.close.addClassOnOver("x-dlg-close-over"); - } - if(this.collapsible !== false){ - this.collapseBtn = this.toolbox.createChild({cls:"x-dlg-collapse"}); - this.collapseBtn.on("click", this.collapseClick, this); - this.collapseBtn.addClassOnOver("x-dlg-collapse-over"); - this.header.on("dblclick", this.collapseClick, this); - } - if(this.resizable !== false){ - this.el.addClass("x-dlg-resizable"); - this.resizer = new Ext.Resizable(el, { - minWidth: this.minWidth || 80, - minHeight:this.minHeight || 80, - handles: this.resizeHandles || "all", - pinned: true - }); - this.resizer.on("beforeresize", this.beforeResize, this); - this.resizer.on("resize", this.onResize, this); - } - if(this.draggable !== false){ - el.addClass("x-dlg-draggable"); - if (!this.proxyDrag) { - var dd = new Ext.dd.DD(el.dom.id, "WindowDrag"); - } - else { - var dd = new Ext.dd.DDProxy(el.dom.id, "WindowDrag", {dragElId: this.proxy.id}); - } - dd.setHandleElId(this.header.id); - dd.endDrag = this.endMove.createDelegate(this); - dd.startDrag = this.startMove.createDelegate(this); - dd.onDrag = this.onDrag.createDelegate(this); - dd.scroll = false; - this.dd = dd; - } - if(this.modal){ - this.mask = dh.append(document.body, {tag: "div", cls:"x-dlg-mask"}, true); - this.mask.enableDisplayMode("block"); - this.mask.hide(); - this.el.addClass("x-dlg-modal"); - } - if(this.shadow){ - this.shadow = new Ext.Shadow({ - mode : typeof this.shadow == "string" ? this.shadow : "sides", - offset : this.shadowOffset - }); - }else{ - this.shadowOffset = 0; - } - if(Ext.useShims && this.shim !== false){ - this.shim = this.el.createShim(); - this.shim.hide = this.hideAction; - this.shim.hide(); - }else{ - this.shim = false; - } - if(this.autoTabs){ - this.initTabs(); - } - this.addEvents({ - - "keydown" : true, - - "move" : true, - - "resize" : true, - - "beforehide" : true, - - "hide" : true, - - "beforeshow" : true, - - "show" : true - }); - el.on("keydown", this.onKeyDown, this); - el.on("mousedown", this.toFront, this); - Ext.EventManager.onWindowResize(this.adjustViewport, this, true); - this.el.hide(); - Ext.DialogManager.register(this); - Ext.BasicDialog.superclass.constructor.call(this); -}; - -Ext.extend(Ext.BasicDialog, Ext.util.Observable, { - shadowOffset: Ext.isIE ? 6 : 5, - minHeight: 80, - minWidth: 200, - minButtonWidth: 75, - defaultButton: null, - buttonAlign: "right", - tabTag: 'div', - firstShow: true, - - - setTitle : function(text){ - this.header.update(text); - return this; - }, - - // private - closeClick : function(){ - this.hide(); - }, - - // private - collapseClick : function(){ - this[this.collapsed ? "expand" : "collapse"](); - }, - - - collapse : function(){ - if(!this.collapsed){ - this.collapsed = true; - this.el.addClass("x-dlg-collapsed"); - this.restoreHeight = this.el.getHeight(); - this.resizeTo(this.el.getWidth(), this.header.getHeight()); - } - }, - - - expand : function(){ - if(this.collapsed){ - this.collapsed = false; - this.el.removeClass("x-dlg-collapsed"); - this.resizeTo(this.el.getWidth(), this.restoreHeight); - } - }, - - - initTabs : function(){ - var tabs = this.getTabs(); - while(tabs.getTab(0)){ - tabs.removeTab(0); - } - this.el.select(this.tabTag+'.x-dlg-tab').each(function(el){ - var dom = el.dom; - tabs.addTab(Ext.id(dom), dom.title); - dom.title = ""; - }); - tabs.activate(0); - return tabs; - }, - - // private - beforeResize : function(){ - this.resizer.minHeight = Math.max(this.minHeight, this.getHeaderFooterHeight(true)+40); - }, - - // private - onResize : function(){ - this.refreshSize(); - this.syncBodyHeight(); - this.adjustAssets(); - this.focus(); - this.fireEvent("resize", this, this.size.width, this.size.height); - }, - - // private - onKeyDown : function(e){ - if(this.isVisible()){ - this.fireEvent("keydown", this, e); - } - }, - - - resizeTo : function(width, height){ - this.el.setSize(width, height); - this.size = {width: width, height: height}; - this.syncBodyHeight(); - if(this.fixedcenter){ - this.center(); - } - if(this.isVisible()){ - this.constrainXY(); - this.adjustAssets(); - } - this.fireEvent("resize", this, width, height); - return this; - }, - - - - setContentSize : function(w, h){ - h += this.getHeaderFooterHeight() + this.body.getMargins("tb"); - w += this.body.getMargins("lr") + this.bwrap.getMargins("lr") + this.centerBg.getPadding("lr"); - //if(!this.el.isBorderBox()){ - h += this.body.getPadding("tb") + this.bwrap.getBorderWidth("tb") + this.body.getBorderWidth("tb") + this.el.getBorderWidth("tb"); - w += this.body.getPadding("lr") + this.bwrap.getBorderWidth("lr") + this.body.getBorderWidth("lr") + this.bwrap.getPadding("lr") + this.el.getBorderWidth("lr"); - //} - if(this.tabs){ - h += this.tabs.stripWrap.getHeight() + this.tabs.bodyEl.getMargins("tb") + this.tabs.bodyEl.getPadding("tb"); - w += this.tabs.bodyEl.getMargins("lr") + this.tabs.bodyEl.getPadding("lr"); - } - this.resizeTo(w, h); - return this; - }, - - - addKeyListener : function(key, fn, scope){ - var keyCode, shift, ctrl, alt; - if(typeof key == "object" && !(key instanceof Array)){ - keyCode = key["key"]; - shift = key["shift"]; - ctrl = key["ctrl"]; - alt = key["alt"]; - }else{ - keyCode = key; - } - var handler = function(dlg, e){ - if((!shift || e.shiftKey) && (!ctrl || e.ctrlKey) && (!alt || e.altKey)){ - var k = e.getKey(); - if(keyCode instanceof Array){ - for(var i = 0, len = keyCode.length; i < len; i++){ - if(keyCode[i] == k){ - fn.call(scope || window, dlg, k, e); - return; - } - } - }else{ - if(k == keyCode){ - fn.call(scope || window, dlg, k, e); - } - } - } - }; - this.on("keydown", handler); - return this; - }, - - - getTabs : function(){ - if(!this.tabs){ - this.el.addClass("x-dlg-auto-tabs"); - this.body.addClass(this.tabPosition == "bottom" ? "x-tabs-bottom" : "x-tabs-top"); - this.tabs = new Ext.TabPanel(this.body.dom, this.tabPosition == "bottom"); - } - return this.tabs; - }, - - - addButton : function(config, handler, scope){ - var dh = Ext.DomHelper; - if(!this.footer){ - this.footer = dh.append(this.bwrap, {tag: "div", cls:"x-dlg-ft"}, true); - } - if(!this.btnContainer){ - var tb = this.footer.createChild({ - tag:"div", - cls:"x-dlg-btns x-dlg-btns-"+this.buttonAlign, - html:'<table cellspacing="0"><tbody><tr></tr></tbody></table><div class="x-clear"></div>' - }, null, true); - this.btnContainer = tb.firstChild.firstChild.firstChild; - } - var bconfig = { - handler: handler, - scope: scope, - minWidth: this.minButtonWidth, - hideParent:true - }; - if(typeof config == "string"){ - bconfig.text = config; - }else{ - if(config.tag){ - bconfig.dhconfig = config; - }else{ - Ext.apply(bconfig, config); - } - } - var btn = new Ext.Button( - this.btnContainer.appendChild(document.createElement("td")), - bconfig - ); - this.syncBodyHeight(); - if(!this.buttons){ - - this.buttons = []; - } - this.buttons.push(btn); - return btn; - }, - - - setDefaultButton : function(btn){ - this.defaultButton = btn; - return this; - }, - - // private - getHeaderFooterHeight : function(safe){ - var height = 0; - if(this.header){ - height += this.header.getHeight(); - } - if(this.footer){ - var fm = this.footer.getMargins(); - height += (this.footer.getHeight()+fm.top+fm.bottom); - } - height += this.bwrap.getPadding("tb")+this.bwrap.getBorderWidth("tb"); - height += this.centerBg.getPadding("tb"); - return height; - }, - - // private - syncBodyHeight : function(){ - var bd = this.body, cb = this.centerBg, bw = this.bwrap; - var height = this.size.height - this.getHeaderFooterHeight(false); - bd.setHeight(height-bd.getMargins("tb")); - var hh = this.header.getHeight(); - var h = this.size.height-hh; - cb.setHeight(h); - bw.setLeftTop(cb.getPadding("l"), hh+cb.getPadding("t")); - bw.setHeight(h-cb.getPadding("tb")); - bw.setWidth(this.el.getWidth(true)-cb.getPadding("lr")); - bd.setWidth(bw.getWidth(true)); - if(this.tabs){ - this.tabs.syncHeight(); - if(Ext.isIE){ - this.tabs.el.repaint(); - } - } - }, - - - restoreState : function(){ - var box = Ext.state.Manager.get(this.stateId || (this.el.id + "-state")); - if(box && box.width){ - this.xy = [box.x, box.y]; - this.resizeTo(box.width, box.height); - } - return this; - }, - - // private - beforeShow : function(){ - this.expand(); - if(this.fixedcenter){ - this.xy = this.el.getCenterXY(true); - } - if(this.modal){ - Ext.get(document.body).addClass("x-body-masked"); - this.mask.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true)); - this.mask.show(); - } - this.constrainXY(); - }, - - // private - animShow : function(){ - var b = Ext.get(this.animateTarget, true).getBox(); - this.proxy.setSize(b.width, b.height); - this.proxy.setLocation(b.x, b.y); - this.proxy.show(); - this.proxy.setBounds(this.xy[0], this.xy[1], this.size.width, this.size.height, - true, .35, this.showEl.createDelegate(this)); - }, - - - show : function(animateTarget){ - if (this.fireEvent("beforeshow", this) === false){ - return; - } - if(this.syncHeightBeforeShow){ - this.syncBodyHeight(); - }else if(this.firstShow){ - this.firstShow = false; - this.syncBodyHeight(); // sync the height on the first show instead of in the constructor - } - this.animateTarget = animateTarget || this.animateTarget; - if(!this.el.isVisible()){ - this.beforeShow(); - if(this.animateTarget){ - this.animShow(); - }else{ - this.showEl(); - } - } - return this; - }, - - // private - showEl : function(){ - this.proxy.hide(); - this.el.setXY(this.xy); - this.el.show(); - this.adjustAssets(true); - this.toFront(); - this.focus(); - // IE peekaboo bug - fix found by Dave Fenwick - if(Ext.isIE){ - this.el.repaint(); - } - this.fireEvent("show", this); - }, - - - focus : function(){ - if(this.defaultButton){ - this.defaultButton.focus(); - }else{ - this.focusEl.focus(); - } - }, - - // private - constrainXY : function(){ - if(this.constraintoviewport !== false){ - if(!this.viewSize){ - if(this.container){ - var s = this.container.getSize(); - this.viewSize = [s.width, s.height]; - }else{ - this.viewSize = [Ext.lib.Dom.getViewWidth(),Ext.lib.Dom.getViewHeight()]; - } - } - var s = Ext.get(this.container||document).getScroll(); - - var x = this.xy[0], y = this.xy[1]; - var w = this.size.width, h = this.size.height; - var vw = this.viewSize[0], vh = this.viewSize[1]; - // only move it if it needs it - var moved = false; - // first validate right/bottom - if(x + w > vw+s.left){ - x = vw - w; - moved = true; - } - if(y + h > vh+s.top){ - y = vh - h; - moved = true; - } - // then make sure top/left isn't negative - if(x < s.left){ - x = s.left; - moved = true; - } - if(y < s.top){ - y = s.top; - moved = true; - } - if(moved){ - // cache xy - this.xy = [x, y]; - if(this.isVisible()){ - this.el.setLocation(x, y); - this.adjustAssets(); - } - } - } - }, - - // private - onDrag : function(){ - if(!this.proxyDrag){ - this.xy = this.el.getXY(); - this.adjustAssets(); - } - }, - - // private - adjustAssets : function(doShow){ - var x = this.xy[0], y = this.xy[1]; - var w = this.size.width, h = this.size.height; - if(doShow === true){ - if(this.shadow){ - this.shadow.show(this.el); - } - if(this.shim){ - this.shim.show(); - } - } - if(this.shadow && this.shadow.isVisible()){ - this.shadow.show(this.el); - } - if(this.shim && this.shim.isVisible()){ - this.shim.setBounds(x, y, w, h); - } - }, - - // private - adjustViewport : function(w, h){ - if(!w || !h){ - w = Ext.lib.Dom.getViewWidth(); - h = Ext.lib.Dom.getViewHeight(); - } - // cache the size - this.viewSize = [w, h]; - if(this.modal && this.mask.isVisible()){ - this.mask.setSize(w, h); // first make sure the mask isn't causing overflow - this.mask.setSize(Ext.lib.Dom.getViewWidth(true), Ext.lib.Dom.getViewHeight(true)); - } - if(this.isVisible()){ - this.constrainXY(); - } - }, - - - destroy : function(removeEl){ - if(this.isVisible()){ - this.animateTarget = null; - this.hide(); - } - Ext.EventManager.removeResizeListener(this.adjustViewport, this); - if(this.tabs){ - this.tabs.destroy(removeEl); - } - Ext.destroy( - this.shim, - this.proxy, - this.resizer, - this.close, - this.mask - ); - if(this.dd){ - this.dd.unreg(); - } - if(this.buttons){ - for(var i = 0, len = this.buttons.length; i < len; i++){ - this.buttons[i].destroy(); - } - } - this.el.removeAllListeners(); - if(removeEl === true){ - this.el.update(""); - this.el.remove(); - } - Ext.DialogManager.unregister(this); - }, - - // private - startMove : function(){ - if(this.proxyDrag){ - this.proxy.show(); - } - if(this.constraintoviewport !== false){ - this.dd.constrainTo(document.body, {right: this.shadowOffset, bottom: this.shadowOffset}); - } - }, - - // private - endMove : function(){ - if(!this.proxyDrag){ - Ext.dd.DD.prototype.endDrag.apply(this.dd, arguments); - }else{ - Ext.dd.DDProxy.prototype.endDrag.apply(this.dd, arguments); - this.proxy.hide(); - } - this.refreshSize(); - this.adjustAssets(); - this.focus(); - this.fireEvent("move", this, this.xy[0], this.xy[1]); - }, - - - toFront : function(){ - Ext.DialogManager.bringToFront(this); - return this; - }, - - - toBack : function(){ - Ext.DialogManager.sendToBack(this); - return this; - }, - - - center : function(){ - var xy = this.el.getCenterXY(true); - this.moveTo(xy[0], xy[1]); - return this; - }, - - - moveTo : function(x, y){ - this.xy = [x,y]; - if(this.isVisible()){ - this.el.setXY(this.xy); - this.adjustAssets(); - } - return this; - }, - - - alignTo : function(element, position, offsets){ - this.xy = this.el.getAlignToXY(element, position, offsets); - if(this.isVisible()){ - this.el.setXY(this.xy); - this.adjustAssets(); - } - return this; - }, - - - anchorTo : function(el, alignment, offsets, monitorScroll){ - var action = function(){ - this.alignTo(el, alignment, offsets); - }; - Ext.EventManager.onWindowResize(action, this); - var tm = typeof monitorScroll; - if(tm != 'undefined'){ - Ext.EventManager.on(window, 'scroll', action, this, - {buffer: tm == 'number' ? monitorScroll : 50}); - } - action.call(this); - return this; - }, - - - isVisible : function(){ - return this.el.isVisible(); - }, - - // private - animHide : function(callback){ - var b = Ext.get(this.animateTarget).getBox(); - this.proxy.show(); - this.proxy.setBounds(this.xy[0], this.xy[1], this.size.width, this.size.height); - this.el.hide(); - this.proxy.setBounds(b.x, b.y, b.width, b.height, true, .35, - this.hideEl.createDelegate(this, [callback])); - }, - - - hide : function(callback){ - if (this.fireEvent("beforehide", this) === false){ - return; - } - if(this.shadow){ - this.shadow.hide(); - } - if(this.shim) { - this.shim.hide(); - } - if(this.animateTarget){ - this.animHide(callback); - }else{ - this.el.hide(); - this.hideEl(callback); - } - return this; - }, - - // private - hideEl : function(callback){ - this.proxy.hide(); - if(this.modal){ - this.mask.hide(); - Ext.get(document.body).removeClass("x-body-masked"); - } - this.fireEvent("hide", this); - if(typeof callback == "function"){ - callback(); - } - }, - - // private - hideAction : function(){ - this.setLeft("-10000px"); - this.setTop("-10000px"); - this.setStyle("visibility", "hidden"); - }, - - // private - refreshSize : function(){ - this.size = this.el.getSize(); - this.xy = this.el.getXY(); - Ext.state.Manager.set(this.stateId || this.el.id + "-state", this.el.getBox()); - }, - - // private - // z-index is managed by the DialogManager and may be overwritten at any time - setZIndex : function(index){ - if(this.modal){ - this.mask.setStyle("z-index", index); - } - if(this.shim){ - this.shim.setStyle("z-index", ++index); - } - if(this.shadow){ - this.shadow.setZIndex(++index); - } - this.el.setStyle("z-index", ++index); - if(this.proxy){ - this.proxy.setStyle("z-index", ++index); - } - if(this.resizer){ - this.resizer.proxy.setStyle("z-index", ++index); - } - - this.lastZIndex = index; - }, - - - getEl : function(){ - return this.el; - } -}); - - -Ext.DialogManager = function(){ - var list = {}; - var accessList = []; - var front = null; - - // private - var sortDialogs = function(d1, d2){ - return (!d1._lastAccess || d1._lastAccess < d2._lastAccess) ? -1 : 1; - }; - - // private - var orderDialogs = function(){ - accessList.sort(sortDialogs); - var seed = Ext.DialogManager.zseed; - for(var i = 0, len = accessList.length; i < len; i++){ - var dlg = accessList[i]; - if(dlg){ - dlg.setZIndex(seed + (i*10)); - } - } - }; - - return { - - zseed : 9000, - - // private - register : function(dlg){ - list[dlg.id] = dlg; - accessList.push(dlg); - }, - - // private - unregister : function(dlg){ - delete list[dlg.id]; - if(!accessList.indexOf){ - for(var i = 0, len = accessList.length; i < len; i++){ - if(accessList[i] == dlg){ - accessList.splice(i, 1); - return; - } - } - }else{ - var i = accessList.indexOf(dlg); - if(i != -1){ - accessList.splice(i, 1); - } - } - }, - - - get : function(id){ - return typeof id == "object" ? id : list[id]; - }, - - - bringToFront : function(dlg){ - dlg = this.get(dlg); - if(dlg != front){ - front = dlg; - dlg._lastAccess = new Date().getTime(); - orderDialogs(); - } - return dlg; - }, - - - sendToBack : function(dlg){ - dlg = this.get(dlg); - dlg._lastAccess = -(new Date().getTime()); - orderDialogs(); - return dlg; - }, - - - hideAll : function(){ - for(var id in list){ - if(list[id] && typeof list[id] != "function" && list[id].isVisible()){ - list[id].hide(); - } - } - } - }; -}(); - - -Ext.LayoutDialog = function(el, config){ - config.autoTabs = false; - Ext.LayoutDialog.superclass.constructor.call(this, el, config); - this.body.setStyle({overflow:"hidden", position:"relative"}); - this.layout = new Ext.BorderLayout(this.body.dom, config); - this.layout.monitorWindowResize = false; - this.el.addClass("x-dlg-auto-layout"); - // fix case when center region overwrites center function - this.center = Ext.BasicDialog.prototype.center; - this.on("show", this.layout.layout, this.layout, true); -}; -Ext.extend(Ext.LayoutDialog, Ext.BasicDialog, { - - endUpdate : function(){ - this.layout.endUpdate(); - }, - - - beginUpdate : function(){ - this.layout.beginUpdate(); - }, - - - getLayout : function(){ - return this.layout; - }, - - showEl : function(){ - Ext.LayoutDialog.superclass.showEl.apply(this, arguments); - if(Ext.isIE7){ - this.layout.layout(); - } - }, - - // private - // Use the syncHeightBeforeShow config option to control this automatically - syncBodyHeight : function(){ - Ext.LayoutDialog.superclass.syncBodyHeight.call(this); - if(this.layout){this.layout.layout();} - } -}); - -Ext.MessageBox = function(){ - var dlg, opt, mask, waitTimer; - var bodyEl, msgEl, textboxEl, textareaEl, progressEl, pp; - var buttons, activeTextEl, bwidth; - - // private - var handleButton = function(button){ - dlg.hide(); - Ext.callback(opt.fn, opt.scope||window, [button, activeTextEl.dom.value], 1); - }; - - // private - var handleHide = function(){ - if(opt && opt.cls){ - dlg.el.removeClass(opt.cls); - } - if(waitTimer){ - Ext.TaskMgr.stop(waitTimer); - waitTimer = null; - } - }; - - // private - var updateButtons = function(b){ - var width = 0; - if(!b){ - buttons["ok"].hide(); - buttons["cancel"].hide(); - buttons["yes"].hide(); - buttons["no"].hide(); - dlg.footer.dom.style.display = 'none'; - return width; - } - dlg.footer.dom.style.display = ''; - for(var k in buttons){ - if(typeof buttons[k] != "function"){ - if(b[k]){ - buttons[k].show(); - buttons[k].setText(typeof b[k] == "string" ? b[k] : Ext.MessageBox.buttonText[k]); - width += buttons[k].el.getWidth()+15; - }else{ - buttons[k].hide(); - } - } - } - return width; - }; - - // private - var handleEsc = function(d, k, e){ - if(opt && opt.closable !== false){ - dlg.hide(); - } - if(e){ - e.stopEvent(); - } - }; - - return { - - getDialog : function(){ - if(!dlg){ - dlg = new Ext.BasicDialog("x-msg-box", { - autoCreate : true, - shadow: true, - draggable: true, - resizable:false, - constraintoviewport:false, - fixedcenter:true, - collapsible : false, - shim:true, - modal: true, - width:400, height:100, - buttonAlign:"center", - closeClick : function(){ - if(opt && opt.buttons && opt.buttons.no && !opt.buttons.cancel){ - handleButton("no"); - }else{ - handleButton("cancel"); - } - } - }); - dlg.on("hide", handleHide); - mask = dlg.mask; - dlg.addKeyListener(27, handleEsc); - buttons = {}; - var bt = this.buttonText; - buttons["ok"] = dlg.addButton(bt["ok"], handleButton.createCallback("ok")); - buttons["yes"] = dlg.addButton(bt["yes"], handleButton.createCallback("yes")); - buttons["no"] = dlg.addButton(bt["no"], handleButton.createCallback("no")); - buttons["cancel"] = dlg.addButton(bt["cancel"], handleButton.createCallback("cancel")); - bodyEl = dlg.body.createChild({ - tag:"div", - html:'<span class="ext-mb-text"></span><br /><input type="text" class="ext-mb-input" /><textarea class="ext-mb-textarea"></textarea><div class="ext-mb-progress-wrap"><div class="ext-mb-progress"><div class="ext-mb-progress-bar"> </div></div></div>' - }); - msgEl = bodyEl.dom.firstChild; - textboxEl = Ext.get(bodyEl.dom.childNodes[2]); - textboxEl.enableDisplayMode(); - textboxEl.addKeyListener([10,13], function(){ - if(dlg.isVisible() && opt && opt.buttons){ - if(opt.buttons.ok){ - handleButton("ok"); - }else if(opt.buttons.yes){ - handleButton("yes"); - } - } - }); - textareaEl = Ext.get(bodyEl.dom.childNodes[3]); - textareaEl.enableDisplayMode(); - progressEl = Ext.get(bodyEl.dom.childNodes[4]); - progressEl.enableDisplayMode(); - var pf = progressEl.dom.firstChild; - pp = Ext.get(pf.firstChild); - pp.setHeight(pf.offsetHeight); - } - return dlg; - }, - - - updateText : function(text){ - if(!dlg.isVisible() && !opt.width){ - dlg.resizeTo(this.maxWidth, 100); // resize first so content is never clipped from previous shows - } - msgEl.innerHTML = text || ' '; - var w = Math.max(Math.min(opt.width || msgEl.offsetWidth, this.maxWidth), - Math.max(opt.minWidth || this.minWidth, bwidth)); - if(opt.prompt){ - activeTextEl.setWidth(w); - } - if(dlg.isVisible()){ - dlg.fixedcenter = false; - } - dlg.setContentSize(w, bodyEl.getHeight()); - if(dlg.isVisible()){ - dlg.fixedcenter = true; - } - return this; - }, - - - updateProgress : function(value, text){ - if(text){ - this.updateText(text); - } - pp.setWidth(Math.floor(value*progressEl.dom.firstChild.offsetWidth)); - return this; - }, - - - isVisible : function(){ - return dlg && dlg.isVisible(); - }, - - - hide : function(){ - if(this.isVisible()){ - dlg.hide(); - } - }, - - - show : function(options){ - if(this.isVisible()){ - this.hide(); - } - var d = this.getDialog(); - opt = options; - d.setTitle(opt.title || " "); - d.close.setDisplayed(opt.closable !== false); - activeTextEl = textboxEl; - opt.prompt = opt.prompt || (opt.multiline ? true : false); - if(opt.prompt){ - if(opt.multiline){ - textboxEl.hide(); - textareaEl.show(); - textareaEl.setHeight(typeof opt.multiline == "number" ? - opt.multiline : this.defaultTextHeight); - activeTextEl = textareaEl; - }else{ - textboxEl.show(); - textareaEl.hide(); - } - }else{ - textboxEl.hide(); - textareaEl.hide(); - } - progressEl.setDisplayed(opt.progress === true); - this.updateProgress(0); - activeTextEl.dom.value = opt.value || ""; - if(opt.prompt){ - dlg.setDefaultButton(activeTextEl); - }else{ - var bs = opt.buttons; - var db = null; - if(bs && bs.ok){ - db = buttons["ok"]; - }else if(bs && bs.yes){ - db = buttons["yes"]; - } - dlg.setDefaultButton(db); - } - bwidth = updateButtons(opt.buttons); - this.updateText(opt.msg); - if(opt.cls){ - d.el.addClass(opt.cls); - } - d.proxyDrag = opt.proxyDrag === true; - d.modal = opt.modal !== false; - d.mask = opt.modal !== false ? mask : false; - if(!d.isVisible()){ - // force it to the end of the z-index stack so it gets a cursor in FF - document.body.appendChild(dlg.el.dom); - d.animateTarget = null; - d.show(options.animEl); - } - return this; - }, - - - progress : function(title, msg){ - this.show({ - title : title, - msg : msg, - buttons: false, - progress:true, - closable:false, - minWidth: this.minProgressWidth - }); - return this; - }, - - - alert : function(title, msg, fn, scope){ - this.show({ - title : title, - msg : msg, - buttons: this.OK, - fn: fn, - scope : scope - }); - return this; - }, - - - wait : function(msg, title){ - this.show({ - title : title, - msg : msg, - buttons: false, - closable:false, - progress:true, - modal:true, - width:300, - wait:true - }); - waitTimer = Ext.TaskMgr.start({ - run: function(i){ - Ext.MessageBox.updateProgress(((((i+20)%20)+1)*5)*.01); - }, - interval: 1000 - }); - return this; - }, - - - confirm : function(title, msg, fn, scope){ - this.show({ - title : title, - msg : msg, - buttons: this.YESNO, - fn: fn, - scope : scope - }); - return this; - }, - - - prompt : function(title, msg, fn, scope, multiline){ - this.show({ - title : title, - msg : msg, - buttons: this.OKCANCEL, - fn: fn, - minWidth:250, - scope : scope, - prompt:true, - multiline: multiline - }); - return this; - }, - - - OK : {ok:true}, - - YESNO : {yes:true, no:true}, - - OKCANCEL : {ok:true, cancel:true}, - - YESNOCANCEL : {yes:true, no:true, cancel:true}, - - - defaultTextHeight : 75, - - maxWidth : 600, - - minWidth : 100, - - minProgressWidth : 250, - - buttonText : { - ok : "OK", - cancel : "Cancel", - yes : "Yes", - no : "No" - } - }; -}(); - - -Ext.Msg = Ext.MessageBox; diff --git a/lib/web/extjs/package/dialog/dialogs.js b/lib/web/extjs/package/dialog/dialogs.js deleted file mode 100644 index d97f389096a7a8c15a8c7b1be2a23a6897420bc4..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/dialog/dialogs.js +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.BasicDialog=function(el,config){this.el=Ext.get(el);var dh=Ext.DomHelper;if(!this.el&&config&&config.autoCreate){if(typeof config.autoCreate=="object"){if(!config.autoCreate.id){config.autoCreate.id=el;} -this.el=dh.append(document.body,config.autoCreate,true);}else{this.el=dh.append(document.body,{tag:"div",id:el,style:'visibility:hidden;'},true);}} -el=this.el;el.setDisplayed(true);el.hide=this.hideAction;this.id=el.id;el.addClass("x-dlg");Ext.apply(this,config);this.proxy=el.createProxy("x-dlg-proxy");this.proxy.hide=this.hideAction;this.proxy.setOpacity(.5);this.proxy.hide();if(config.width){el.setWidth(config.width);} -if(config.height){el.setHeight(config.height);} -this.size=el.getSize();if(typeof config.x!="undefined"&&typeof config.y!="undefined"){this.xy=[config.x,config.y];}else{this.xy=el.getCenterXY(true);} -this.header=el.child("> .x-dlg-hd");this.body=el.child("> .x-dlg-bd");this.footer=el.child("> .x-dlg-ft");if(!this.header){this.header=el.createChild({tag:"div",cls:"x-dlg-hd",html:" "},this.body?this.body.dom:null);} -if(!this.body){this.body=el.createChild({tag:"div",cls:"x-dlg-bd"});} -this.header.unselectable();if(this.title){this.header.update(this.title);} -this.focusEl=el.createChild({tag:"a",href:"#",cls:"x-dlg-focus",tabIndex:"-1"});this.focusEl.swallowEvent("click",true);this.header.wrap({cls:"x-dlg-hd-right"}).wrap({cls:"x-dlg-hd-left"},true);this.bwrap=this.body.wrap({tag:"div",cls:"x-dlg-dlg-body"});if(this.footer){this.bwrap.dom.appendChild(this.footer.dom);} -this.bg=this.el.createChild({tag:"div",cls:"x-dlg-bg",html:'<div class="x-dlg-bg-left"><div class="x-dlg-bg-right"><div class="x-dlg-bg-center"> </div></div></div>'});this.centerBg=this.bg.child("div.x-dlg-bg-center");if(this.autoScroll!==false&&!this.autoTabs){this.body.setStyle("overflow","auto");} -this.toolbox=this.el.createChild({cls:"x-dlg-toolbox"});if(this.closable!==false){this.el.addClass("x-dlg-closable");this.close=this.toolbox.createChild({cls:"x-dlg-close"});this.close.on("click",this.closeClick,this);this.close.addClassOnOver("x-dlg-close-over");} -if(this.collapsible!==false){this.collapseBtn=this.toolbox.createChild({cls:"x-dlg-collapse"});this.collapseBtn.on("click",this.collapseClick,this);this.collapseBtn.addClassOnOver("x-dlg-collapse-over");this.header.on("dblclick",this.collapseClick,this);} -if(this.resizable!==false){this.el.addClass("x-dlg-resizable");this.resizer=new Ext.Resizable(el,{minWidth:this.minWidth||80,minHeight:this.minHeight||80,handles:this.resizeHandles||"all",pinned:true});this.resizer.on("beforeresize",this.beforeResize,this);this.resizer.on("resize",this.onResize,this);} -if(this.draggable!==false){el.addClass("x-dlg-draggable");if(!this.proxyDrag){var dd=new Ext.dd.DD(el.dom.id,"WindowDrag");} -else{var dd=new Ext.dd.DDProxy(el.dom.id,"WindowDrag",{dragElId:this.proxy.id});} -dd.setHandleElId(this.header.id);dd.endDrag=this.endMove.createDelegate(this);dd.startDrag=this.startMove.createDelegate(this);dd.onDrag=this.onDrag.createDelegate(this);dd.scroll=false;this.dd=dd;} -if(this.modal){this.mask=dh.append(document.body,{tag:"div",cls:"x-dlg-mask"},true);this.mask.enableDisplayMode("block");this.mask.hide();this.el.addClass("x-dlg-modal");} -if(this.shadow){this.shadow=new Ext.Shadow({mode:typeof this.shadow=="string"?this.shadow:"sides",offset:this.shadowOffset});}else{this.shadowOffset=0;} -if(Ext.useShims&&this.shim!==false){this.shim=this.el.createShim();this.shim.hide=this.hideAction;this.shim.hide();}else{this.shim=false;} -if(this.autoTabs){this.initTabs();} -this.addEvents({"keydown":true,"move":true,"resize":true,"beforehide":true,"hide":true,"beforeshow":true,"show":true});el.on("keydown",this.onKeyDown,this);el.on("mousedown",this.toFront,this);Ext.EventManager.onWindowResize(this.adjustViewport,this,true);this.el.hide();Ext.DialogManager.register(this);Ext.BasicDialog.superclass.constructor.call(this);};Ext.extend(Ext.BasicDialog,Ext.util.Observable,{shadowOffset:Ext.isIE?6:5,minHeight:80,minWidth:200,minButtonWidth:75,defaultButton:null,buttonAlign:"right",tabTag:'div',firstShow:true,setTitle:function(text){this.header.update(text);return this;},closeClick:function(){this.hide();},collapseClick:function(){this[this.collapsed?"expand":"collapse"]();},collapse:function(){if(!this.collapsed){this.collapsed=true;this.el.addClass("x-dlg-collapsed");this.restoreHeight=this.el.getHeight();this.resizeTo(this.el.getWidth(),this.header.getHeight());}},expand:function(){if(this.collapsed){this.collapsed=false;this.el.removeClass("x-dlg-collapsed");this.resizeTo(this.el.getWidth(),this.restoreHeight);}},initTabs:function(){var tabs=this.getTabs();while(tabs.getTab(0)){tabs.removeTab(0);} -this.el.select(this.tabTag+'.x-dlg-tab').each(function(el){var dom=el.dom;tabs.addTab(Ext.id(dom),dom.title);dom.title="";});tabs.activate(0);return tabs;},beforeResize:function(){this.resizer.minHeight=Math.max(this.minHeight,this.getHeaderFooterHeight(true)+40);},onResize:function(){this.refreshSize();this.syncBodyHeight();this.adjustAssets();this.focus();this.fireEvent("resize",this,this.size.width,this.size.height);},onKeyDown:function(e){if(this.isVisible()){this.fireEvent("keydown",this,e);}},resizeTo:function(width,height){this.el.setSize(width,height);this.size={width:width,height:height};this.syncBodyHeight();if(this.fixedcenter){this.center();} -if(this.isVisible()){this.constrainXY();this.adjustAssets();} -this.fireEvent("resize",this,width,height);return this;},setContentSize:function(w,h){h+=this.getHeaderFooterHeight()+this.body.getMargins("tb");w+=this.body.getMargins("lr")+this.bwrap.getMargins("lr")+this.centerBg.getPadding("lr");h+=this.body.getPadding("tb")+this.bwrap.getBorderWidth("tb")+this.body.getBorderWidth("tb")+this.el.getBorderWidth("tb");w+=this.body.getPadding("lr")+this.bwrap.getBorderWidth("lr")+this.body.getBorderWidth("lr")+this.bwrap.getPadding("lr")+this.el.getBorderWidth("lr");if(this.tabs){h+=this.tabs.stripWrap.getHeight()+this.tabs.bodyEl.getMargins("tb")+this.tabs.bodyEl.getPadding("tb");w+=this.tabs.bodyEl.getMargins("lr")+this.tabs.bodyEl.getPadding("lr");} -this.resizeTo(w,h);return this;},addKeyListener:function(key,fn,scope){var keyCode,shift,ctrl,alt;if(typeof key=="object"&&!(key instanceof Array)){keyCode=key["key"];shift=key["shift"];ctrl=key["ctrl"];alt=key["alt"];}else{keyCode=key;} -var handler=function(dlg,e){if((!shift||e.shiftKey)&&(!ctrl||e.ctrlKey)&&(!alt||e.altKey)){var k=e.getKey();if(keyCode instanceof Array){for(var i=0,len=keyCode.length;i<len;i++){if(keyCode[i]==k){fn.call(scope||window,dlg,k,e);return;}}}else{if(k==keyCode){fn.call(scope||window,dlg,k,e);}}}};this.on("keydown",handler);return this;},getTabs:function(){if(!this.tabs){this.el.addClass("x-dlg-auto-tabs");this.body.addClass(this.tabPosition=="bottom"?"x-tabs-bottom":"x-tabs-top");this.tabs=new Ext.TabPanel(this.body.dom,this.tabPosition=="bottom");} -return this.tabs;},addButton:function(config,handler,scope){var dh=Ext.DomHelper;if(!this.footer){this.footer=dh.append(this.bwrap,{tag:"div",cls:"x-dlg-ft"},true);} -if(!this.btnContainer){var tb=this.footer.createChild({tag:"div",cls:"x-dlg-btns x-dlg-btns-"+this.buttonAlign,html:'<table cellspacing="0"><tbody><tr></tr></tbody></table><div class="x-clear"></div>'},null,true);this.btnContainer=tb.firstChild.firstChild.firstChild;} -var bconfig={handler:handler,scope:scope,minWidth:this.minButtonWidth,hideParent:true};if(typeof config=="string"){bconfig.text=config;}else{if(config.tag){bconfig.dhconfig=config;}else{Ext.apply(bconfig,config);}} -var btn=new Ext.Button(this.btnContainer.appendChild(document.createElement("td")),bconfig);this.syncBodyHeight();if(!this.buttons){this.buttons=[];} -this.buttons.push(btn);return btn;},setDefaultButton:function(btn){this.defaultButton=btn;return this;},getHeaderFooterHeight:function(safe){var height=0;if(this.header){height+=this.header.getHeight();} -if(this.footer){var fm=this.footer.getMargins();height+=(this.footer.getHeight()+fm.top+fm.bottom);} -height+=this.bwrap.getPadding("tb")+this.bwrap.getBorderWidth("tb");height+=this.centerBg.getPadding("tb");return height;},syncBodyHeight:function(){var bd=this.body,cb=this.centerBg,bw=this.bwrap;var height=this.size.height-this.getHeaderFooterHeight(false);bd.setHeight(height-bd.getMargins("tb"));var hh=this.header.getHeight();var h=this.size.height-hh;cb.setHeight(h);bw.setLeftTop(cb.getPadding("l"),hh+cb.getPadding("t"));bw.setHeight(h-cb.getPadding("tb"));bw.setWidth(this.el.getWidth(true)-cb.getPadding("lr"));bd.setWidth(bw.getWidth(true));if(this.tabs){this.tabs.syncHeight();if(Ext.isIE){this.tabs.el.repaint();}}},restoreState:function(){var box=Ext.state.Manager.get(this.stateId||(this.el.id+"-state"));if(box&&box.width){this.xy=[box.x,box.y];this.resizeTo(box.width,box.height);} -return this;},beforeShow:function(){this.expand();if(this.fixedcenter){this.xy=this.el.getCenterXY(true);} -if(this.modal){Ext.get(document.body).addClass("x-body-masked");this.mask.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true));this.mask.show();} -this.constrainXY();},animShow:function(){var b=Ext.get(this.animateTarget,true).getBox();this.proxy.setSize(b.width,b.height);this.proxy.setLocation(b.x,b.y);this.proxy.show();this.proxy.setBounds(this.xy[0],this.xy[1],this.size.width,this.size.height,true,.35,this.showEl.createDelegate(this));},show:function(animateTarget){if(this.fireEvent("beforeshow",this)===false){return;} -if(this.syncHeightBeforeShow){this.syncBodyHeight();}else if(this.firstShow){this.firstShow=false;this.syncBodyHeight();} -this.animateTarget=animateTarget||this.animateTarget;if(!this.el.isVisible()){this.beforeShow();if(this.animateTarget){this.animShow();}else{this.showEl();}} -return this;},showEl:function(){this.proxy.hide();this.el.setXY(this.xy);this.el.show();this.adjustAssets(true);this.toFront();this.focus();if(Ext.isIE){this.el.repaint();} -this.fireEvent("show",this);},focus:function(){if(this.defaultButton){this.defaultButton.focus();}else{this.focusEl.focus();}},constrainXY:function(){if(this.constraintoviewport!==false){if(!this.viewSize){if(this.container){var s=this.container.getSize();this.viewSize=[s.width,s.height];}else{this.viewSize=[Ext.lib.Dom.getViewWidth(),Ext.lib.Dom.getViewHeight()];}} -var s=Ext.get(this.container||document).getScroll();var x=this.xy[0],y=this.xy[1];var w=this.size.width,h=this.size.height;var vw=this.viewSize[0],vh=this.viewSize[1];var moved=false;if(x+w>vw+s.left){x=vw-w;moved=true;} -if(y+h>vh+s.top){y=vh-h;moved=true;} -if(x<s.left){x=s.left;moved=true;} -if(y<s.top){y=s.top;moved=true;} -if(moved){this.xy=[x,y];if(this.isVisible()){this.el.setLocation(x,y);this.adjustAssets();}}}},onDrag:function(){if(!this.proxyDrag){this.xy=this.el.getXY();this.adjustAssets();}},adjustAssets:function(doShow){var x=this.xy[0],y=this.xy[1];var w=this.size.width,h=this.size.height;if(doShow===true){if(this.shadow){this.shadow.show(this.el);} -if(this.shim){this.shim.show();}} -if(this.shadow&&this.shadow.isVisible()){this.shadow.show(this.el);} -if(this.shim&&this.shim.isVisible()){this.shim.setBounds(x,y,w,h);}},adjustViewport:function(w,h){if(!w||!h){w=Ext.lib.Dom.getViewWidth();h=Ext.lib.Dom.getViewHeight();} -this.viewSize=[w,h];if(this.modal&&this.mask.isVisible()){this.mask.setSize(w,h);this.mask.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true));} -if(this.isVisible()){this.constrainXY();}},destroy:function(removeEl){if(this.isVisible()){this.animateTarget=null;this.hide();} -Ext.EventManager.removeResizeListener(this.adjustViewport,this);if(this.tabs){this.tabs.destroy(removeEl);} -Ext.destroy(this.shim,this.proxy,this.resizer,this.close,this.mask);if(this.dd){this.dd.unreg();} -if(this.buttons){for(var i=0,len=this.buttons.length;i<len;i++){this.buttons[i].destroy();}} -this.el.removeAllListeners();if(removeEl===true){this.el.update("");this.el.remove();} -Ext.DialogManager.unregister(this);},startMove:function(){if(this.proxyDrag){this.proxy.show();} -if(this.constraintoviewport!==false){this.dd.constrainTo(document.body,{right:this.shadowOffset,bottom:this.shadowOffset});}},endMove:function(){if(!this.proxyDrag){Ext.dd.DD.prototype.endDrag.apply(this.dd,arguments);}else{Ext.dd.DDProxy.prototype.endDrag.apply(this.dd,arguments);this.proxy.hide();} -this.refreshSize();this.adjustAssets();this.focus();this.fireEvent("move",this,this.xy[0],this.xy[1]);},toFront:function(){Ext.DialogManager.bringToFront(this);return this;},toBack:function(){Ext.DialogManager.sendToBack(this);return this;},center:function(){var xy=this.el.getCenterXY(true);this.moveTo(xy[0],xy[1]);return this;},moveTo:function(x,y){this.xy=[x,y];if(this.isVisible()){this.el.setXY(this.xy);this.adjustAssets();} -return this;},alignTo:function(element,position,offsets){this.xy=this.el.getAlignToXY(element,position,offsets);if(this.isVisible()){this.el.setXY(this.xy);this.adjustAssets();} -return this;},anchorTo:function(el,alignment,offsets,monitorScroll){var action=function(){this.alignTo(el,alignment,offsets);};Ext.EventManager.onWindowResize(action,this);var tm=typeof monitorScroll;if(tm!='undefined'){Ext.EventManager.on(window,'scroll',action,this,{buffer:tm=='number'?monitorScroll:50});} -action.call(this);return this;},isVisible:function(){return this.el.isVisible();},animHide:function(callback){var b=Ext.get(this.animateTarget).getBox();this.proxy.show();this.proxy.setBounds(this.xy[0],this.xy[1],this.size.width,this.size.height);this.el.hide();this.proxy.setBounds(b.x,b.y,b.width,b.height,true,.35,this.hideEl.createDelegate(this,[callback]));},hide:function(callback){if(this.fireEvent("beforehide",this)===false){return;} -if(this.shadow){this.shadow.hide();} -if(this.shim){this.shim.hide();} -if(this.animateTarget){this.animHide(callback);}else{this.el.hide();this.hideEl(callback);} -return this;},hideEl:function(callback){this.proxy.hide();if(this.modal){this.mask.hide();Ext.get(document.body).removeClass("x-body-masked");} -this.fireEvent("hide",this);if(typeof callback=="function"){callback();}},hideAction:function(){this.setLeft("-10000px");this.setTop("-10000px");this.setStyle("visibility","hidden");},refreshSize:function(){this.size=this.el.getSize();this.xy=this.el.getXY();Ext.state.Manager.set(this.stateId||this.el.id+"-state",this.el.getBox());},setZIndex:function(index){if(this.modal){this.mask.setStyle("z-index",index);} -if(this.shim){this.shim.setStyle("z-index",++index);} -if(this.shadow){this.shadow.setZIndex(++index);} -this.el.setStyle("z-index",++index);if(this.proxy){this.proxy.setStyle("z-index",++index);} -if(this.resizer){this.resizer.proxy.setStyle("z-index",++index);} -this.lastZIndex=index;},getEl:function(){return this.el;}});Ext.DialogManager=function(){var list={};var accessList=[];var front=null;var sortDialogs=function(d1,d2){return(!d1._lastAccess||d1._lastAccess<d2._lastAccess)?-1:1;};var orderDialogs=function(){accessList.sort(sortDialogs);var seed=Ext.DialogManager.zseed;for(var i=0,len=accessList.length;i<len;i++){var dlg=accessList[i];if(dlg){dlg.setZIndex(seed+(i*10));}}};return{zseed:9000,register:function(dlg){list[dlg.id]=dlg;accessList.push(dlg);},unregister:function(dlg){delete list[dlg.id];if(!accessList.indexOf){for(var i=0,len=accessList.length;i<len;i++){if(accessList[i]==dlg){accessList.splice(i,1);return;}}}else{var i=accessList.indexOf(dlg);if(i!=-1){accessList.splice(i,1);}}},get:function(id){return typeof id=="object"?id:list[id];},bringToFront:function(dlg){dlg=this.get(dlg);if(dlg!=front){front=dlg;dlg._lastAccess=new Date().getTime();orderDialogs();} -return dlg;},sendToBack:function(dlg){dlg=this.get(dlg);dlg._lastAccess=-(new Date().getTime());orderDialogs();return dlg;},hideAll:function(){for(var id in list){if(list[id]&&typeof list[id]!="function"&&list[id].isVisible()){list[id].hide();}}}};}();Ext.LayoutDialog=function(el,config){config.autoTabs=false;Ext.LayoutDialog.superclass.constructor.call(this,el,config);this.body.setStyle({overflow:"hidden",position:"relative"});this.layout=new Ext.BorderLayout(this.body.dom,config);this.layout.monitorWindowResize=false;this.el.addClass("x-dlg-auto-layout");this.center=Ext.BasicDialog.prototype.center;this.on("show",this.layout.layout,this.layout,true);};Ext.extend(Ext.LayoutDialog,Ext.BasicDialog,{endUpdate:function(){this.layout.endUpdate();},beginUpdate:function(){this.layout.beginUpdate();},getLayout:function(){return this.layout;},showEl:function(){Ext.LayoutDialog.superclass.showEl.apply(this,arguments);if(Ext.isIE7){this.layout.layout();}},syncBodyHeight:function(){Ext.LayoutDialog.superclass.syncBodyHeight.call(this);if(this.layout){this.layout.layout();}}}); - -Ext.MessageBox=function(){var dlg,opt,mask,waitTimer;var bodyEl,msgEl,textboxEl,textareaEl,progressEl,pp;var buttons,activeTextEl,bwidth;var handleButton=function(button){dlg.hide();Ext.callback(opt.fn,opt.scope||window,[button,activeTextEl.dom.value],1);};var handleHide=function(){if(opt&&opt.cls){dlg.el.removeClass(opt.cls);} -if(waitTimer){Ext.TaskMgr.stop(waitTimer);waitTimer=null;}};var updateButtons=function(b){var width=0;if(!b){buttons["ok"].hide();buttons["cancel"].hide();buttons["yes"].hide();buttons["no"].hide();dlg.footer.dom.style.display='none';return width;} -dlg.footer.dom.style.display='';for(var k in buttons){if(typeof buttons[k]!="function"){if(b[k]){buttons[k].show();buttons[k].setText(typeof b[k]=="string"?b[k]:Ext.MessageBox.buttonText[k]);width+=buttons[k].el.getWidth()+15;}else{buttons[k].hide();}}} -return width;};var handleEsc=function(d,k,e){if(opt&&opt.closable!==false){dlg.hide();} -if(e){e.stopEvent();}};return{getDialog:function(){if(!dlg){dlg=new Ext.BasicDialog("x-msg-box",{autoCreate:true,shadow:true,draggable:true,resizable:false,constraintoviewport:false,fixedcenter:true,collapsible:false,shim:true,modal:true,width:400,height:100,buttonAlign:"center",closeClick:function(){if(opt&&opt.buttons&&opt.buttons.no&&!opt.buttons.cancel){handleButton("no");}else{handleButton("cancel");}}});dlg.on("hide",handleHide);mask=dlg.mask;dlg.addKeyListener(27,handleEsc);buttons={};var bt=this.buttonText;buttons["ok"]=dlg.addButton(bt["ok"],handleButton.createCallback("ok"));buttons["yes"]=dlg.addButton(bt["yes"],handleButton.createCallback("yes"));buttons["no"]=dlg.addButton(bt["no"],handleButton.createCallback("no"));buttons["cancel"]=dlg.addButton(bt["cancel"],handleButton.createCallback("cancel"));bodyEl=dlg.body.createChild({tag:"div",html:'<span class="ext-mb-text"></span><br /><input type="text" class="ext-mb-input" /><textarea class="ext-mb-textarea"></textarea><div class="ext-mb-progress-wrap"><div class="ext-mb-progress"><div class="ext-mb-progress-bar"> </div></div></div>'});msgEl=bodyEl.dom.firstChild;textboxEl=Ext.get(bodyEl.dom.childNodes[2]);textboxEl.enableDisplayMode();textboxEl.addKeyListener([10,13],function(){if(dlg.isVisible()&&opt&&opt.buttons){if(opt.buttons.ok){handleButton("ok");}else if(opt.buttons.yes){handleButton("yes");}}});textareaEl=Ext.get(bodyEl.dom.childNodes[3]);textareaEl.enableDisplayMode();progressEl=Ext.get(bodyEl.dom.childNodes[4]);progressEl.enableDisplayMode();var pf=progressEl.dom.firstChild;pp=Ext.get(pf.firstChild);pp.setHeight(pf.offsetHeight);} -return dlg;},updateText:function(text){if(!dlg.isVisible()&&!opt.width){dlg.resizeTo(this.maxWidth,100);} -msgEl.innerHTML=text||' ';var w=Math.max(Math.min(opt.width||msgEl.offsetWidth,this.maxWidth),Math.max(opt.minWidth||this.minWidth,bwidth));if(opt.prompt){activeTextEl.setWidth(w);} -if(dlg.isVisible()){dlg.fixedcenter=false;} -dlg.setContentSize(w,bodyEl.getHeight());if(dlg.isVisible()){dlg.fixedcenter=true;} -return this;},updateProgress:function(value,text){if(text){this.updateText(text);} -pp.setWidth(Math.floor(value*progressEl.dom.firstChild.offsetWidth));return this;},isVisible:function(){return dlg&&dlg.isVisible();},hide:function(){if(this.isVisible()){dlg.hide();}},show:function(options){if(this.isVisible()){this.hide();} -var d=this.getDialog();opt=options;d.setTitle(opt.title||" ");d.close.setDisplayed(opt.closable!==false);activeTextEl=textboxEl;opt.prompt=opt.prompt||(opt.multiline?true:false);if(opt.prompt){if(opt.multiline){textboxEl.hide();textareaEl.show();textareaEl.setHeight(typeof opt.multiline=="number"?opt.multiline:this.defaultTextHeight);activeTextEl=textareaEl;}else{textboxEl.show();textareaEl.hide();}}else{textboxEl.hide();textareaEl.hide();} -progressEl.setDisplayed(opt.progress===true);this.updateProgress(0);activeTextEl.dom.value=opt.value||"";if(opt.prompt){dlg.setDefaultButton(activeTextEl);}else{var bs=opt.buttons;var db=null;if(bs&&bs.ok){db=buttons["ok"];}else if(bs&&bs.yes){db=buttons["yes"];} -dlg.setDefaultButton(db);} -bwidth=updateButtons(opt.buttons);this.updateText(opt.msg);if(opt.cls){d.el.addClass(opt.cls);} -d.proxyDrag=opt.proxyDrag===true;d.modal=opt.modal!==false;d.mask=opt.modal!==false?mask:false;if(!d.isVisible()){document.body.appendChild(dlg.el.dom);d.animateTarget=null;d.show(options.animEl);} -return this;},progress:function(title,msg){this.show({title:title,msg:msg,buttons:false,progress:true,closable:false,minWidth:this.minProgressWidth});return this;},alert:function(title,msg,fn,scope){this.show({title:title,msg:msg,buttons:this.OK,fn:fn,scope:scope});return this;},wait:function(msg,title){this.show({title:title,msg:msg,buttons:false,closable:false,progress:true,modal:true,width:300,wait:true});waitTimer=Ext.TaskMgr.start({run:function(i){Ext.MessageBox.updateProgress(((((i+20)%20)+1)*5)*.01);},interval:1000});return this;},confirm:function(title,msg,fn,scope){this.show({title:title,msg:msg,buttons:this.YESNO,fn:fn,scope:scope});return this;},prompt:function(title,msg,fn,scope,multiline){this.show({title:title,msg:msg,buttons:this.OKCANCEL,fn:fn,minWidth:250,scope:scope,prompt:true,multiline:multiline});return this;},OK:{ok:true},YESNO:{yes:true,no:true},OKCANCEL:{ok:true,cancel:true},YESNOCANCEL:{yes:true,no:true,cancel:true},defaultTextHeight:75,maxWidth:600,minWidth:100,minProgressWidth:250,buttonText:{ok:"OK",cancel:"Cancel",yes:"Yes",no:"No"}};}();Ext.Msg=Ext.MessageBox; diff --git a/lib/web/extjs/package/dragdrop/dragdrop.js b/lib/web/extjs/package/dragdrop/dragdrop.js deleted file mode 100644 index 760e067f447f457dede0e85a0b9f07ba3288baa1..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/dragdrop/dragdrop.js +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -(function(){var Event=Ext.EventManager;var Dom=Ext.lib.Dom;Ext.dd.DragDrop=function(id,sGroup,config){if(id){this.init(id,sGroup,config);}};Ext.dd.DragDrop.prototype={id:null,config:null,dragElId:null,handleElId:null,invalidHandleTypes:null,invalidHandleIds:null,invalidHandleClasses:null,startPageX:0,startPageY:0,groups:null,locked:false,lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isTarget:true,padding:null,_domRef:null,__ygDragDrop:true,constrainX:false,constrainY:false,minX:0,maxX:0,minY:0,maxY:0,maintainOffset:false,xTicks:null,yTicks:null,primaryButtonOnly:true,available:false,hasOuterHandles:false,b4StartDrag:function(x,y){},startDrag:function(x,y){},b4Drag:function(e){},onDrag:function(e){},onDragEnter:function(e,id){},b4DragOver:function(e){},onDragOver:function(e,id){},b4DragOut:function(e){},onDragOut:function(e,id){},b4DragDrop:function(e){},onDragDrop:function(e,id){},onInvalidDrop:function(e){},b4EndDrag:function(e){},endDrag:function(e){},b4MouseDown:function(e){},onMouseDown:function(e){},onMouseUp:function(e){},onAvailable:function(){},defaultPadding:{left:0,right:0,top:0,bottom:0},constrainTo:function(constrainTo,pad,inContent){if(typeof pad=="number"){pad={left:pad,right:pad,top:pad,bottom:pad};} -pad=pad||this.defaultPadding;var b=Ext.get(this.getEl()).getBox();var ce=Ext.get(constrainTo);var s=ce.getScroll();var c,cd=ce.dom;if(cd==document.body){c={x:s.left,y:s.top,width:Ext.lib.Dom.getViewWidth(),height:Ext.lib.Dom.getViewHeight()};}else{xy=ce.getXY();c={x:xy[0]+s.left,y:xy[1]+s.top,width:cd.clientWidth,height:cd.clientHeight};} -var topSpace=b.y-c.y;var leftSpace=b.x-c.x;this.resetConstraints();this.setXConstraint(leftSpace-(pad.left||0),c.width-leftSpace-b.width-(pad.right||0));this.setYConstraint(topSpace-(pad.top||0),c.height-topSpace-b.height-(pad.bottom||0));},getEl:function(){if(!this._domRef){this._domRef=Ext.getDom(this.id);} -return this._domRef;},getDragEl:function(){return Ext.getDom(this.dragElId);},init:function(id,sGroup,config){this.initTarget(id,sGroup,config);Event.on(this.id,"mousedown",this.handleMouseDown,this);},initTarget:function(id,sGroup,config){this.config=config||{};this.DDM=Ext.dd.DDM;this.groups={};if(typeof id!=="string"){id=Ext.id(id);} -this.id=id;this.addToGroup((sGroup)?sGroup:"default");this.handleElId=id;this.setDragElId(id);this.invalidHandleTypes={A:"A"};this.invalidHandleIds={};this.invalidHandleClasses=[];this.applyConfig();this.handleOnAvailable();},applyConfig:function(){this.padding=this.config.padding||[0,0,0,0];this.isTarget=(this.config.isTarget!==false);this.maintainOffset=(this.config.maintainOffset);this.primaryButtonOnly=(this.config.primaryButtonOnly!==false);},handleOnAvailable:function(){this.available=true;this.resetConstraints();this.onAvailable();},setPadding:function(iTop,iRight,iBot,iLeft){if(!iRight&&0!==iRight){this.padding=[iTop,iTop,iTop,iTop];}else if(!iBot&&0!==iBot){this.padding=[iTop,iRight,iTop,iRight];}else{this.padding=[iTop,iRight,iBot,iLeft];}},setInitPosition:function(diffX,diffY){var el=this.getEl();if(!this.DDM.verifyEl(el)){return;} -var dx=diffX||0;var dy=diffY||0;var p=Dom.getXY(el);this.initPageX=p[0]-dx;this.initPageY=p[1]-dy;this.lastPageX=p[0];this.lastPageY=p[1];this.setStartPosition(p);},setStartPosition:function(pos){var p=pos||Dom.getXY(this.getEl());this.deltaSetXY=null;this.startPageX=p[0];this.startPageY=p[1];},addToGroup:function(sGroup){this.groups[sGroup]=true;this.DDM.regDragDrop(this,sGroup);},removeFromGroup:function(sGroup){if(this.groups[sGroup]){delete this.groups[sGroup];} -this.DDM.removeDDFromGroup(this,sGroup);},setDragElId:function(id){this.dragElId=id;},setHandleElId:function(id){if(typeof id!=="string"){id=Ext.id(id);} -this.handleElId=id;this.DDM.regHandle(this.id,id);},setOuterHandleElId:function(id){if(typeof id!=="string"){id=Ext.id(id);} -Event.on(id,"mousedown",this.handleMouseDown,this);this.setHandleElId(id);this.hasOuterHandles=true;},unreg:function(){Event.un(this.id,"mousedown",this.handleMouseDown);this._domRef=null;this.DDM._remove(this);},destroy:function(){this.unreg();},isLocked:function(){return(this.DDM.isLocked()||this.locked);},handleMouseDown:function(e,oDD){if(this.primaryButtonOnly&&e.button!=0){return;} -if(this.isLocked()){return;} -this.DDM.refreshCache(this.groups);var pt=new Ext.lib.Point(Ext.lib.Event.getPageX(e),Ext.lib.Event.getPageY(e));if(!this.hasOuterHandles&&!this.DDM.isOverTarget(pt,this)){}else{if(this.clickValidator(e)){this.setStartPosition();this.b4MouseDown(e);this.onMouseDown(e);this.DDM.handleMouseDown(e,this);this.DDM.stopEvent(e);}else{}}},clickValidator:function(e){var target=Ext.lib.Event.getTarget(e);return(this.isValidHandleChild(target)&&(this.id==this.handleElId||this.DDM.handleWasClicked(target,this.id)));},addInvalidHandleType:function(tagName){var type=tagName.toUpperCase();this.invalidHandleTypes[type]=type;},addInvalidHandleId:function(id){if(typeof id!=="string"){id=Ext.id(id);} -this.invalidHandleIds[id]=id;},addInvalidHandleClass:function(cssClass){this.invalidHandleClasses.push(cssClass);},removeInvalidHandleType:function(tagName){var type=tagName.toUpperCase();delete this.invalidHandleTypes[type];},removeInvalidHandleId:function(id){if(typeof id!=="string"){id=Ext.id(id);} -delete this.invalidHandleIds[id];},removeInvalidHandleClass:function(cssClass){for(var i=0,len=this.invalidHandleClasses.length;i<len;++i){if(this.invalidHandleClasses[i]==cssClass){delete this.invalidHandleClasses[i];}}},isValidHandleChild:function(node){var valid=true;var nodeName;try{nodeName=node.nodeName.toUpperCase();}catch(e){nodeName=node.nodeName;} -valid=valid&&!this.invalidHandleTypes[nodeName];valid=valid&&!this.invalidHandleIds[node.id];for(var i=0,len=this.invalidHandleClasses.length;valid&&i<len;++i){valid=!Dom.hasClass(node,this.invalidHandleClasses[i]);} -return valid;},setXTicks:function(iStartX,iTickSize){this.xTicks=[];this.xTickSize=iTickSize;var tickMap={};for(var i=this.initPageX;i>=this.minX;i=i-iTickSize){if(!tickMap[i]){this.xTicks[this.xTicks.length]=i;tickMap[i]=true;}} -for(i=this.initPageX;i<=this.maxX;i=i+iTickSize){if(!tickMap[i]){this.xTicks[this.xTicks.length]=i;tickMap[i]=true;}} -this.xTicks.sort(this.DDM.numericSort);},setYTicks:function(iStartY,iTickSize){this.yTicks=[];this.yTickSize=iTickSize;var tickMap={};for(var i=this.initPageY;i>=this.minY;i=i-iTickSize){if(!tickMap[i]){this.yTicks[this.yTicks.length]=i;tickMap[i]=true;}} -for(i=this.initPageY;i<=this.maxY;i=i+iTickSize){if(!tickMap[i]){this.yTicks[this.yTicks.length]=i;tickMap[i]=true;}} -this.yTicks.sort(this.DDM.numericSort);},setXConstraint:function(iLeft,iRight,iTickSize){this.leftConstraint=iLeft;this.rightConstraint=iRight;this.minX=this.initPageX-iLeft;this.maxX=this.initPageX+iRight;if(iTickSize){this.setXTicks(this.initPageX,iTickSize);} -this.constrainX=true;},clearConstraints:function(){this.constrainX=false;this.constrainY=false;this.clearTicks();},clearTicks:function(){this.xTicks=null;this.yTicks=null;this.xTickSize=0;this.yTickSize=0;},setYConstraint:function(iUp,iDown,iTickSize){this.topConstraint=iUp;this.bottomConstraint=iDown;this.minY=this.initPageY-iUp;this.maxY=this.initPageY+iDown;if(iTickSize){this.setYTicks(this.initPageY,iTickSize);} -this.constrainY=true;},resetConstraints:function(){if(this.initPageX||this.initPageX===0){var dx=(this.maintainOffset)?this.lastPageX-this.initPageX:0;var dy=(this.maintainOffset)?this.lastPageY-this.initPageY:0;this.setInitPosition(dx,dy);}else{this.setInitPosition();} -if(this.constrainX){this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize);} -if(this.constrainY){this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize);}},getTick:function(val,tickArray){if(!tickArray){return val;}else if(tickArray[0]>=val){return tickArray[0];}else{for(var i=0,len=tickArray.length;i<len;++i){var next=i+1;if(tickArray[next]&&tickArray[next]>=val){var diff1=val-tickArray[i];var diff2=tickArray[next]-val;return(diff2>diff1)?tickArray[i]:tickArray[next];}} -return tickArray[tickArray.length-1];}},toString:function(){return("DragDrop "+this.id);}};})();if(!Ext.dd.DragDropMgr){Ext.dd.DragDropMgr=function(){var Event=Ext.EventManager;return{ids:{},handleIds:{},dragCurrent:null,dragOvers:{},deltaX:0,deltaY:0,preventDefault:true,stopPropagation:true,initalized:false,locked:false,init:function(){this.initialized=true;},POINT:0,INTERSECT:1,mode:0,_execOnAll:function(sMethod,args){for(var i in this.ids){for(var j in this.ids[i]){var oDD=this.ids[i][j];if(!this.isTypeOfDD(oDD)){continue;} -oDD[sMethod].apply(oDD,args);}}},_onLoad:function(){this.init();Event.on(document,"mouseup",this.handleMouseUp,this,true);Event.on(document,"mousemove",this.handleMouseMove,this,true);Event.on(window,"unload",this._onUnload,this,true);Event.on(window,"resize",this._onResize,this,true);},_onResize:function(e){this._execOnAll("resetConstraints",[]);},lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isLocked:function(){return this.locked;},locationCache:{},useCache:true,clickPixelThresh:3,clickTimeThresh:350,dragThreshMet:false,clickTimeout:null,startX:0,startY:0,regDragDrop:function(oDD,sGroup){if(!this.initialized){this.init();} -if(!this.ids[sGroup]){this.ids[sGroup]={};} -this.ids[sGroup][oDD.id]=oDD;},removeDDFromGroup:function(oDD,sGroup){if(!this.ids[sGroup]){this.ids[sGroup]={};} -var obj=this.ids[sGroup];if(obj&&obj[oDD.id]){delete obj[oDD.id];}},_remove:function(oDD){for(var g in oDD.groups){if(g&&this.ids[g][oDD.id]){delete this.ids[g][oDD.id];}} -delete this.handleIds[oDD.id];},regHandle:function(sDDId,sHandleId){if(!this.handleIds[sDDId]){this.handleIds[sDDId]={};} -this.handleIds[sDDId][sHandleId]=sHandleId;},isDragDrop:function(id){return(this.getDDById(id))?true:false;},getRelated:function(p_oDD,bTargetsOnly){var oDDs=[];for(var i in p_oDD.groups){for(j in this.ids[i]){var dd=this.ids[i][j];if(!this.isTypeOfDD(dd)){continue;} -if(!bTargetsOnly||dd.isTarget){oDDs[oDDs.length]=dd;}}} -return oDDs;},isLegalTarget:function(oDD,oTargetDD){var targets=this.getRelated(oDD,true);for(var i=0,len=targets.length;i<len;++i){if(targets[i].id==oTargetDD.id){return true;}} -return false;},isTypeOfDD:function(oDD){return(oDD&&oDD.__ygDragDrop);},isHandle:function(sDDId,sHandleId){return(this.handleIds[sDDId]&&this.handleIds[sDDId][sHandleId]);},getDDById:function(id){for(var i in this.ids){if(this.ids[i][id]){return this.ids[i][id];}} -return null;},handleMouseDown:function(e,oDD){if(Ext.QuickTips){Ext.QuickTips.disable();} -this.currentTarget=Ext.lib.Event.getTarget(e);this.dragCurrent=oDD;var el=oDD.getEl();this.startX=Ext.lib.Event.getPageX(e);this.startY=Ext.lib.Event.getPageY(e);this.deltaX=this.startX-el.offsetLeft;this.deltaY=this.startY-el.offsetTop;this.dragThreshMet=false;this.clickTimeout=setTimeout(function(){var DDM=Ext.dd.DDM;DDM.startDrag(DDM.startX,DDM.startY);},this.clickTimeThresh);},startDrag:function(x,y){clearTimeout(this.clickTimeout);if(this.dragCurrent){this.dragCurrent.b4StartDrag(x,y);this.dragCurrent.startDrag(x,y);} -this.dragThreshMet=true;},handleMouseUp:function(e){if(Ext.QuickTips){Ext.QuickTips.enable();} -if(!this.dragCurrent){return;} -clearTimeout(this.clickTimeout);if(this.dragThreshMet){this.fireEvents(e,true);}else{} -this.stopDrag(e);this.stopEvent(e);},stopEvent:function(e){if(this.stopPropagation){e.stopPropagation();} -if(this.preventDefault){e.preventDefault();}},stopDrag:function(e){if(this.dragCurrent){if(this.dragThreshMet){this.dragCurrent.b4EndDrag(e);this.dragCurrent.endDrag(e);} -this.dragCurrent.onMouseUp(e);} -this.dragCurrent=null;this.dragOvers={};},handleMouseMove:function(e){if(!this.dragCurrent){return true;} -if(Ext.isIE&&(e.button!==0&&e.button!==1&&e.button!==2)){this.stopEvent(e);return this.handleMouseUp(e);} -if(!this.dragThreshMet){var diffX=Math.abs(this.startX-Ext.lib.Event.getPageX(e));var diffY=Math.abs(this.startY-Ext.lib.Event.getPageY(e));if(diffX>this.clickPixelThresh||diffY>this.clickPixelThresh){this.startDrag(this.startX,this.startY);}} -if(this.dragThreshMet){this.dragCurrent.b4Drag(e);this.dragCurrent.onDrag(e);if(!this.dragCurrent.moveOnly){this.fireEvents(e,false);}} -this.stopEvent(e);return true;},fireEvents:function(e,isDrop){var dc=this.dragCurrent;if(!dc||dc.isLocked()){return;} -var x=Ext.lib.Event.getPageX(e);var y=Ext.lib.Event.getPageY(e);var pt=new Ext.lib.Point(x,y);var oldOvers=[];var outEvts=[];var overEvts=[];var dropEvts=[];var enterEvts=[];for(var i in this.dragOvers){var ddo=this.dragOvers[i];if(!this.isTypeOfDD(ddo)){continue;} -if(!this.isOverTarget(pt,ddo,this.mode)){outEvts.push(ddo);} -oldOvers[i]=true;delete this.dragOvers[i];} -for(var sGroup in dc.groups){if("string"!=typeof sGroup){continue;} -for(i in this.ids[sGroup]){var oDD=this.ids[sGroup][i];if(!this.isTypeOfDD(oDD)){continue;} -if(oDD.isTarget&&!oDD.isLocked()&&oDD!=dc){if(this.isOverTarget(pt,oDD,this.mode)){if(isDrop){dropEvts.push(oDD);}else{if(!oldOvers[oDD.id]){enterEvts.push(oDD);}else{overEvts.push(oDD);} -this.dragOvers[oDD.id]=oDD;}}}}} -if(this.mode){if(outEvts.length){dc.b4DragOut(e,outEvts);dc.onDragOut(e,outEvts);} -if(enterEvts.length){dc.onDragEnter(e,enterEvts);} -if(overEvts.length){dc.b4DragOver(e,overEvts);dc.onDragOver(e,overEvts);} -if(dropEvts.length){dc.b4DragDrop(e,dropEvts);dc.onDragDrop(e,dropEvts);}}else{var len=0;for(i=0,len=outEvts.length;i<len;++i){dc.b4DragOut(e,outEvts[i].id);dc.onDragOut(e,outEvts[i].id);} -for(i=0,len=enterEvts.length;i<len;++i){dc.onDragEnter(e,enterEvts[i].id);} -for(i=0,len=overEvts.length;i<len;++i){dc.b4DragOver(e,overEvts[i].id);dc.onDragOver(e,overEvts[i].id);} -for(i=0,len=dropEvts.length;i<len;++i){dc.b4DragDrop(e,dropEvts[i].id);dc.onDragDrop(e,dropEvts[i].id);}} -if(isDrop&&!dropEvts.length){dc.onInvalidDrop(e);}},getBestMatch:function(dds){var winner=null;var len=dds.length;if(len==1){winner=dds[0];}else{for(var i=0;i<len;++i){var dd=dds[i];if(dd.cursorIsOver){winner=dd;break;}else{if(!winner||winner.overlap.getArea()<dd.overlap.getArea()){winner=dd;}}}} -return winner;},refreshCache:function(groups){for(var sGroup in groups){if("string"!=typeof sGroup){continue;} -for(var i in this.ids[sGroup]){var oDD=this.ids[sGroup][i];if(this.isTypeOfDD(oDD)){var loc=this.getLocation(oDD);if(loc){this.locationCache[oDD.id]=loc;}else{delete this.locationCache[oDD.id];}}}}},verifyEl:function(el){try{if(el){var parent=el.offsetParent;if(parent){return true;}}}catch(e){} -return false;},getLocation:function(oDD){if(!this.isTypeOfDD(oDD)){return null;} -var el=oDD.getEl(),pos,x1,x2,y1,y2,t,r,b,l;try{pos=Ext.lib.Dom.getXY(el);}catch(e){} -if(!pos){return null;} -x1=pos[0];x2=x1+el.offsetWidth;y1=pos[1];y2=y1+el.offsetHeight;t=y1-oDD.padding[0];r=x2+oDD.padding[1];b=y2+oDD.padding[2];l=x1-oDD.padding[3];return new Ext.lib.Region(t,r,b,l);},isOverTarget:function(pt,oTarget,intersect){var loc=this.locationCache[oTarget.id];if(!loc||!this.useCache){loc=this.getLocation(oTarget);this.locationCache[oTarget.id]=loc;} -if(!loc){return false;} -oTarget.cursorIsOver=loc.contains(pt);var dc=this.dragCurrent;if(!dc||!dc.getTargetCoord||(!intersect&&!dc.constrainX&&!dc.constrainY)){return oTarget.cursorIsOver;} -oTarget.overlap=null;var pos=dc.getTargetCoord(pt.x,pt.y);var el=dc.getDragEl();var curRegion=new Ext.lib.Region(pos.y,pos.x+el.offsetWidth,pos.y+el.offsetHeight,pos.x);var overlap=curRegion.intersect(loc);if(overlap){oTarget.overlap=overlap;return(intersect)?true:oTarget.cursorIsOver;}else{return false;}},_onUnload:function(e,me){Ext.dd.DragDropMgr.unregAll();},unregAll:function(){if(this.dragCurrent){this.stopDrag();this.dragCurrent=null;} -this._execOnAll("unreg",[]);for(i in this.elementCache){delete this.elementCache[i];} -this.elementCache={};this.ids={};},elementCache:{},getElWrapper:function(id){var oWrapper=this.elementCache[id];if(!oWrapper||!oWrapper.el){oWrapper=this.elementCache[id]=new this.ElementWrapper(Ext.getDom(id));} -return oWrapper;},getElement:function(id){return Ext.getDom(id);},getCss:function(id){var el=Ext.getDom(id);return(el)?el.style:null;},ElementWrapper:function(el){this.el=el||null;this.id=this.el&&el.id;this.css=this.el&&el.style;},getPosX:function(el){return Ext.lib.Dom.getX(el);},getPosY:function(el){return Ext.lib.Dom.getY(el);},swapNode:function(n1,n2){if(n1.swapNode){n1.swapNode(n2);}else{var p=n2.parentNode;var s=n2.nextSibling;if(s==n1){p.insertBefore(n1,n2);}else if(n2==n1.nextSibling){p.insertBefore(n2,n1);}else{n1.parentNode.replaceChild(n2,n1);p.insertBefore(n1,s);}}},getScroll:function(){var t,l,dde=document.documentElement,db=document.body;if(dde&&(dde.scrollTop||dde.scrollLeft)){t=dde.scrollTop;l=dde.scrollLeft;}else if(db){t=db.scrollTop;l=db.scrollLeft;}else{} -return{top:t,left:l};},getStyle:function(el,styleProp){return Ext.fly(el).getStyle(styleProp);},getScrollTop:function(){return this.getScroll().top;},getScrollLeft:function(){return this.getScroll().left;},moveToEl:function(moveEl,targetEl){var aCoord=Ext.lib.Dom.getXY(targetEl);Ext.lib.Dom.setXY(moveEl,aCoord);},numericSort:function(a,b){return(a-b);},_timeoutCount:0,_addListeners:function(){var DDM=Ext.dd.DDM;if(Ext.lib.Event&&document){DDM._onLoad();}else{if(DDM._timeoutCount>2000){}else{setTimeout(DDM._addListeners,10);if(document&&document.body){DDM._timeoutCount+=1;}}}},handleWasClicked:function(node,id){if(this.isHandle(id,node.id)){return true;}else{var p=node.parentNode;while(p){if(this.isHandle(id,p.id)){return true;}else{p=p.parentNode;}}} -return false;}};}();Ext.dd.DDM=Ext.dd.DragDropMgr;Ext.dd.DDM._addListeners();} -Ext.dd.DD=function(id,sGroup,config){if(id){this.init(id,sGroup,config);}};Ext.extend(Ext.dd.DD,Ext.dd.DragDrop,{scroll:true,autoOffset:function(iPageX,iPageY){var x=iPageX-this.startPageX;var y=iPageY-this.startPageY;this.setDelta(x,y);},setDelta:function(iDeltaX,iDeltaY){this.deltaX=iDeltaX;this.deltaY=iDeltaY;},setDragElPos:function(iPageX,iPageY){var el=this.getDragEl();this.alignElWithMouse(el,iPageX,iPageY);},alignElWithMouse:function(el,iPageX,iPageY){var oCoord=this.getTargetCoord(iPageX,iPageY);var fly=el.dom?el:Ext.fly(el);if(!this.deltaSetXY){var aCoord=[oCoord.x,oCoord.y];fly.setXY(aCoord);var newLeft=fly.getLeft(true);var newTop=fly.getTop(true);this.deltaSetXY=[newLeft-oCoord.x,newTop-oCoord.y];}else{fly.setLeftTop(oCoord.x+this.deltaSetXY[0],oCoord.y+this.deltaSetXY[1]);} -this.cachePosition(oCoord.x,oCoord.y);this.autoScroll(oCoord.x,oCoord.y,el.offsetHeight,el.offsetWidth);return oCoord;},cachePosition:function(iPageX,iPageY){if(iPageX){this.lastPageX=iPageX;this.lastPageY=iPageY;}else{var aCoord=Ext.lib.Dom.getXY(this.getEl());this.lastPageX=aCoord[0];this.lastPageY=aCoord[1];}},autoScroll:function(x,y,h,w){if(this.scroll){var clientH=Ext.lib.Dom.getViewWidth();var clientW=Ext.lib.Dom.getViewHeight();var st=this.DDM.getScrollTop();var sl=this.DDM.getScrollLeft();var bot=h+y;var right=w+x;var toBot=(clientH+st-y-this.deltaY);var toRight=(clientW+sl-x-this.deltaX);var thresh=40;var scrAmt=(document.all)?80:30;if(bot>clientH&&toBot<thresh){window.scrollTo(sl,st+scrAmt);} -if(y<st&&st>0&&y-st<thresh){window.scrollTo(sl,st-scrAmt);} -if(right>clientW&&toRight<thresh){window.scrollTo(sl+scrAmt,st);} -if(x<sl&&sl>0&&x-sl<thresh){window.scrollTo(sl-scrAmt,st);}}},getTargetCoord:function(iPageX,iPageY){var x=iPageX-this.deltaX;var y=iPageY-this.deltaY;if(this.constrainX){if(x<this.minX){x=this.minX;} -if(x>this.maxX){x=this.maxX;}} -if(this.constrainY){if(y<this.minY){y=this.minY;} -if(y>this.maxY){y=this.maxY;}} -x=this.getTick(x,this.xTicks);y=this.getTick(y,this.yTicks);return{x:x,y:y};},applyConfig:function(){Ext.dd.DD.superclass.applyConfig.call(this);this.scroll=(this.config.scroll!==false);},b4MouseDown:function(e){this.autoOffset(Ext.lib.Event.getPageX(e),Ext.lib.Event.getPageY(e));},b4Drag:function(e){this.setDragElPos(Ext.lib.Event.getPageX(e),Ext.lib.Event.getPageY(e));},toString:function(){return("DD "+this.id);}});Ext.dd.DDProxy=function(id,sGroup,config){if(id){this.init(id,sGroup,config);this.initFrame();}};Ext.dd.DDProxy.dragElId="ygddfdiv";Ext.extend(Ext.dd.DDProxy,Ext.dd.DD,{resizeFrame:true,centerFrame:false,createFrame:function(){var self=this;var body=document.body;if(!body||!body.firstChild){setTimeout(function(){self.createFrame();},50);return;} -var div=this.getDragEl();if(!div){div=document.createElement("div");div.id=this.dragElId;var s=div.style;s.position="absolute";s.visibility="hidden";s.cursor="move";s.border="2px solid #aaa";s.zIndex=999;body.insertBefore(div,body.firstChild);}},initFrame:function(){this.createFrame();},applyConfig:function(){Ext.dd.DDProxy.superclass.applyConfig.call(this);this.resizeFrame=(this.config.resizeFrame!==false);this.centerFrame=(this.config.centerFrame);this.setDragElId(this.config.dragElId||Ext.dd.DDProxy.dragElId);},showFrame:function(iPageX,iPageY){var el=this.getEl();var dragEl=this.getDragEl();var s=dragEl.style;this._resizeProxy();if(this.centerFrame){this.setDelta(Math.round(parseInt(s.width,10)/2),Math.round(parseInt(s.height,10)/2));} -this.setDragElPos(iPageX,iPageY);Ext.fly(dragEl).show();},_resizeProxy:function(){if(this.resizeFrame){var el=this.getEl();Ext.fly(this.getDragEl()).setSize(el.offsetWidth,el.offsetHeight);}},b4MouseDown:function(e){var x=Ext.lib.Event.getPageX(e);var y=Ext.lib.Event.getPageY(e);this.autoOffset(x,y);this.setDragElPos(x,y);},b4StartDrag:function(x,y){this.showFrame(x,y);},b4EndDrag:function(e){Ext.fly(this.getDragEl()).hide();},endDrag:function(e){var lel=this.getEl();var del=this.getDragEl();del.style.visibility="";this.beforeMove();lel.style.visibility="hidden";Ext.dd.DDM.moveToEl(lel,del);del.style.visibility="hidden";lel.style.visibility="";this.afterDrag();},beforeMove:function(){},afterDrag:function(){},toString:function(){return("DDProxy "+this.id);}});Ext.dd.DDTarget=function(id,sGroup,config){if(id){this.initTarget(id,sGroup,config);}};Ext.extend(Ext.dd.DDTarget,Ext.dd.DragDrop,{toString:function(){return("DDTarget "+this.id);}}); - -Ext.dd.ScrollManager=function(){var ddm=Ext.dd.DragDropMgr;var els={};var dragEl=null;var proc={};var onStop=function(e){dragEl=null;clearProc();};var triggerRefresh=function(){if(ddm.dragCurrent){ddm.refreshCache(ddm.dragCurrent.groups);}};var doScroll=function(){if(ddm.dragCurrent){var dds=Ext.dd.ScrollManager;if(!dds.animate){if(proc.el.scroll(proc.dir,dds.increment)){triggerRefresh();}}else{proc.el.scroll(proc.dir,dds.increment,true,dds.animDuration,triggerRefresh);}}};var clearProc=function(){if(proc.id){clearInterval(proc.id);} -proc.id=0;proc.el=null;proc.dir="";};var startProc=function(el,dir){clearProc();proc.el=el;proc.dir=dir;proc.id=setInterval(doScroll,Ext.dd.ScrollManager.frequency);};var onFire=function(e,isDrop){if(isDrop||!ddm.dragCurrent){return;} -var dds=Ext.dd.ScrollManager;if(!dragEl||dragEl!=ddm.dragCurrent){dragEl=ddm.dragCurrent;dds.refreshCache();} -var xy=Ext.lib.Event.getXY(e);var pt=new Ext.lib.Point(xy[0],xy[1]);for(var id in els){var el=els[id],r=el._region;if(r&&r.contains(pt)&&el.isScrollable()){if(r.bottom-pt.y<=dds.thresh){if(proc.el!=el){startProc(el,"down");} -return;}else if(r.right-pt.x<=dds.thresh){if(proc.el!=el){startProc(el,"left");} -return;}else if(pt.y-r.top<=dds.thresh){if(proc.el!=el){startProc(el,"up");} -return;}else if(pt.x-r.left<=dds.thresh){if(proc.el!=el){startProc(el,"right");} -return;}}} -clearProc();};ddm.fireEvents=ddm.fireEvents.createSequence(onFire,ddm);ddm.stopDrag=ddm.stopDrag.createSequence(onStop,ddm);return{register:function(el){if(el instanceof Array){for(var i=0,len=el.length;i<len;i++){this.register(el[i]);}}else{el=Ext.get(el);els[el.id]=el;}},unregister:function(el){if(el instanceof Array){for(var i=0,len=el.length;i<len;i++){this.unregister(el[i]);}}else{el=Ext.get(el);delete els[el.id];}},thresh:25,increment:100,frequency:500,animate:true,animDuration:.4,refreshCache:function(){for(var id in els){if(typeof els[id]=='object'){els[id]._region=els[id].getRegion();}}}};}(); - -Ext.dd.Registry=function(){var elements={};var handles={};var autoIdSeed=0;var getId=function(el,autogen){if(typeof el=="string"){return el;} -var id=el.id;if(!id&&autogen!==false){id="extdd-"+(++autoIdSeed);el.id=id;} -return id;};return{register:function(el,data){data=data||{};if(typeof el=="string"){el=document.getElementById(el);} -data.ddel=el;elements[getId(el)]=data;if(data.isHandle!==false){handles[data.ddel.id]=data;} -if(data.handles){var hs=data.handles;for(var i=0,len=hs.length;i<len;i++){handles[getId(hs[i])]=data;}}},unregister:function(el){var id=getId(el,false);var data=elements[id];if(data){delete elements[id];if(data.handles){var hs=data.handles;for(var i=0,len=hs.length;i<len;i++){delete handles[getId(hs[i],false)];}}}},getHandle:function(id){if(typeof id!="string"){id=id.id;} -return handles[id];},getHandleFromEvent:function(e){var t=Ext.lib.Event.getTarget(e);return t?handles[t.id]:null;},getTarget:function(id){if(typeof id!="string"){id=id.id;} -return elements[id];},getTargetFromEvent:function(e){var t=Ext.lib.Event.getTarget(e);return t?elements[t.id]||handles[t.id]:null;}};}(); - -Ext.dd.StatusProxy=function(config){Ext.apply(this,config);this.id=this.id||Ext.id();this.el=new Ext.Layer({dh:{id:this.id,tag:"div",cls:"x-dd-drag-proxy "+this.dropNotAllowed,children:[{tag:"div",cls:"x-dd-drop-icon"},{tag:"div",cls:"x-dd-drag-ghost"}]},shadow:!config||config.shadow!==false});this.ghost=Ext.get(this.el.dom.childNodes[1]);this.dropStatus=this.dropNotAllowed;};Ext.dd.StatusProxy.prototype={dropAllowed:"x-dd-drop-ok",dropNotAllowed:"x-dd-drop-nodrop",setStatus:function(cssClass){cssClass=cssClass||this.dropNotAllowed;if(this.dropStatus!=cssClass){this.el.replaceClass(this.dropStatus,cssClass);this.dropStatus=cssClass;}},reset:function(clearGhost){this.el.dom.className="x-dd-drag-proxy "+this.dropNotAllowed;this.dropStatus=this.dropNotAllowed;if(clearGhost){this.ghost.update("");}},update:function(html){if(typeof html=="string"){this.ghost.update(html);}else{this.ghost.update("");html.style.margin="0";this.ghost.dom.appendChild(html);}},getEl:function(){return this.el;},getGhost:function(){return this.ghost;},hide:function(clear){this.el.hide();if(clear){this.reset(true);}},stop:function(){if(this.anim&&this.anim.isAnimated&&this.anim.isAnimated()){this.anim.stop();}},show:function(){this.el.show();},sync:function(){this.el.sync();},repair:function(xy,callback,scope){this.callback=callback;this.scope=scope;if(xy&&this.animRepair!==false){this.el.addClass("x-dd-drag-repair");this.el.hideUnders(true);this.anim=this.el.shift({duration:this.repairDuration||.5,easing:'easeOut',xy:xy,stopFx:true,callback:this.afterRepair,scope:this});}else{this.afterRepair();}},afterRepair:function(){this.hide(true);if(typeof this.callback=="function"){this.callback.call(this.scope||this);} -this.callback=null;this.scope=null;}}; - -Ext.dd.DragSource=function(el,config){this.el=Ext.get(el);this.dragData={};Ext.apply(this,config);if(!this.proxy){this.proxy=new Ext.dd.StatusProxy();} -Ext.dd.DragSource.superclass.constructor.call(this,this.el.dom,this.ddGroup||this.group,{dragElId:this.proxy.id,resizeFrame:false,isTarget:false,scroll:this.scroll===true});this.dragging=false;};Ext.extend(Ext.dd.DragSource,Ext.dd.DDProxy,{dropAllowed:"x-dd-drop-ok",dropNotAllowed:"x-dd-drop-nodrop",getDragData:function(e){return this.dragData;},onDragEnter:function(e,id){var target=Ext.dd.DragDropMgr.getDDById(id);this.cachedTarget=target;if(this.beforeDragEnter(target,e,id)!==false){if(target.isNotifyTarget){var status=target.notifyEnter(this,e,this.dragData);this.proxy.setStatus(status);}else{this.proxy.setStatus(this.dropAllowed);} -if(this.afterDragEnter){this.afterDragEnter(target,e,id);}}},beforeDragEnter:function(target,e,id){return true;},alignElWithMouse:function(){Ext.dd.DragSource.superclass.alignElWithMouse.apply(this,arguments);this.proxy.sync();},onDragOver:function(e,id){var target=this.cachedTarget||Ext.dd.DragDropMgr.getDDById(id);if(this.beforeDragOver(target,e,id)!==false){if(target.isNotifyTarget){var status=target.notifyOver(this,e,this.dragData);this.proxy.setStatus(status);} -if(this.afterDragOver){this.afterDragOver(target,e,id);}}},beforeDragOver:function(target,e,id){return true;},onDragOut:function(e,id){var target=this.cachedTarget||Ext.dd.DragDropMgr.getDDById(id);if(this.beforeDragOut(target,e,id)!==false){if(target.isNotifyTarget){target.notifyOut(this,e,this.dragData);} -this.proxy.reset();if(this.afterDragOut){this.afterDragOut(target,e,id);}} -this.cachedTarget=null;},beforeDragOut:function(target,e,id){return true;},onDragDrop:function(e,id){var target=this.cachedTarget||Ext.dd.DragDropMgr.getDDById(id);if(this.beforeDragDrop(target,e,id)!==false){if(target.isNotifyTarget){if(target.notifyDrop(this,e,this.dragData)){this.onValidDrop(target,e,id);}else{this.onInvalidDrop(target,e,id);}}else{this.onValidDrop(target,e,id);} -if(this.afterDragDrop){this.afterDragDrop(target,e,id);}}},beforeDragDrop:function(target,e,id){return true;},onValidDrop:function(target,e,id){this.hideProxy();if(this.afterValidDrop){this.afterValidDrop(target,e,id);}},getRepairXY:function(e,data){return this.el.getXY();},onInvalidDrop:function(target,e,id){this.beforeInvalidDrop(target,e,id);if(this.cachedTarget){if(this.cachedTarget.isNotifyTarget){this.cachedTarget.notifyOut(this,e,this.dragData);} -this.cacheTarget=null;} -this.proxy.repair(this.getRepairXY(e,this.dragData),this.afterRepair,this);if(this.afterInvalidDrop){this.afterInvalidDrop(e,id);}},afterRepair:function(){if(Ext.enableFx){this.el.highlight(this.hlColor||"c3daf9");} -this.dragging=false;},beforeInvalidDrop:function(target,e,id){return true;},handleMouseDown:function(e){if(this.dragging){return;} -var data=this.getDragData(e);if(data&&this.onBeforeDrag(data,e)!==false){this.dragData=data;this.proxy.stop();Ext.dd.DragSource.superclass.handleMouseDown.apply(this,arguments);}},onBeforeDrag:function(data,e){return true;},onStartDrag:Ext.emptyFn,startDrag:function(x,y){this.proxy.reset();this.dragging=true;this.proxy.update("");this.onInitDrag(x,y);this.proxy.show();},onInitDrag:function(x,y){var clone=this.el.dom.cloneNode(true);clone.id=Ext.id();this.proxy.update(clone);this.onStartDrag(x,y);return true;},getProxy:function(){return this.proxy;},hideProxy:function(){this.proxy.hide();this.proxy.reset(true);this.dragging=false;},triggerCacheRefresh:function(){Ext.dd.DDM.refreshCache(this.groups);},b4EndDrag:function(e){},endDrag:function(e){this.onEndDrag(this.dragData,e);},onEndDrag:function(data,e){},autoOffset:function(x,y){this.setDelta(-12,-20);}}); - -Ext.dd.DropTarget=function(el,config){this.el=Ext.get(el);Ext.apply(this,config);if(this.containerScroll){Ext.dd.ScrollManager.register(this.el);} -Ext.dd.DropTarget.superclass.constructor.call(this,this.el.dom,this.ddGroup||this.group,{isTarget:true});};Ext.extend(Ext.dd.DropTarget,Ext.dd.DDTarget,{dropAllowed:"x-dd-drop-ok",dropNotAllowed:"x-dd-drop-nodrop",isTarget:true,isNotifyTarget:true,notifyEnter:function(dd,e,data){if(this.overClass){this.el.addClass(this.overClass);} -return this.dropAllowed;},notifyOver:function(dd,e,data){return this.dropAllowed;},notifyOut:function(dd,e,data){if(this.overClass){this.el.removeClass(this.overClass);}},notifyDrop:function(dd,e,data){return false;}}); - -Ext.dd.DragZone=function(el,config){Ext.dd.DragZone.superclass.constructor.call(this,el,config);if(this.containerScroll){Ext.dd.ScrollManager.register(this.el);}};Ext.extend(Ext.dd.DragZone,Ext.dd.DragSource,{getDragData:function(e){return Ext.dd.Registry.getHandleFromEvent(e);},onInitDrag:function(x,y){this.proxy.update(this.dragData.ddel.cloneNode(true));this.onStartDrag(x,y);return true;},afterRepair:function(){if(Ext.enableFx){Ext.Element.fly(this.dragData.ddel).highlight(this.hlColor||"c3daf9");} -this.dragging=false;},getRepairXY:function(e){return Ext.Element.fly(this.dragData.ddel).getXY();}}); - -Ext.dd.DropZone=function(el,config){Ext.dd.DropZone.superclass.constructor.call(this,el,config);};Ext.extend(Ext.dd.DropZone,Ext.dd.DropTarget,{getTargetFromEvent:function(e){return Ext.dd.Registry.getTargetFromEvent(e);},onNodeEnter:function(n,dd,e,data){},onNodeOver:function(n,dd,e,data){return this.dropAllowed;},onNodeOut:function(n,dd,e,data){},onNodeDrop:function(n,dd,e,data){return false;},onContainerOver:function(dd,e,data){return this.dropNotAllowed;},onContainerDrop:function(dd,e,data){return false;},notifyEnter:function(dd,e,data){return this.dropNotAllowed;},notifyOver:function(dd,e,data){var n=this.getTargetFromEvent(e);if(!n){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,dd,e,data);this.lastOverNode=null;} -return this.onContainerOver(dd,e,data);} -if(this.lastOverNode!=n){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,dd,e,data);} -this.onNodeEnter(n,dd,e,data);this.lastOverNode=n;} -return this.onNodeOver(n,dd,e,data);},notifyOut:function(dd,e,data){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,dd,e,data);this.lastOverNode=null;}},notifyDrop:function(dd,e,data){if(this.lastOverNode){this.onNodeOut(this.lastOverNode,dd,e,data);this.lastOverNode=null;} -var n=this.getTargetFromEvent(e);return n?this.onNodeDrop(n,dd,e,data):this.onContainerDrop(dd,e,data);},triggerCacheRefresh:function(){Ext.dd.DDM.refreshCache(this.groups);}}); diff --git a/lib/web/extjs/package/form/form-debug.js b/lib/web/extjs/package/form/form-debug.js deleted file mode 100644 index dbe3f22435419e80bfff8507872d2301a46f14d8..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/form/form-debug.js +++ /dev/null @@ -1,2996 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.form.Field = function(config){ - Ext.form.Field.superclass.constructor.call(this, config); -}; - -Ext.extend(Ext.form.Field, Ext.BoxComponent, { - - invalidClass : "x-form-invalid", - - invalidText : "The value in this field is invalid", - - focusClass : "x-form-focus", - - validationEvent : "keyup", - - validateOnBlur : true, - - validationDelay : 250, - - defaultAutoCreate : {tag: "input", type: "text", size: "20", autocomplete: "off"}, - - fieldClass: "x-form-field", - - msgTarget: 'qtip', - - msgFx : 'normal', - - - - - inputType : undefined, - - // private - isFormField : true, - - // private - hasFocus : false, - - - value : undefined, - - - initComponent : function(){ - Ext.form.Field.superclass.initComponent.call(this); - this.addEvents({ - - focus : true, - - blur : true, - - specialkey : true, - - change : true, - - invalid : true, - - valid : true - }); - }, - - - getName: function(){ - return this.rendered && this.el.dom.name ? this.el.dom.name : (this.hiddenName || ''); - }, - - - applyTo : function(target){ - this.allowDomMove = false; - this.el = Ext.get(target); - this.render(this.el.dom.parentNode); - return this; - }, - - // private - onRender : function(ct, position){ - Ext.form.Field.superclass.onRender.call(this, ct, position); - if(!this.el){ - var cfg = this.getAutoCreate(); - if(!cfg.name){ - cfg.name = this.name || this.id; - } - if(this.inputType){ - cfg.type = this.inputType; - } - if(this.tabIndex !== undefined){ - cfg.tabIndex = this.tabIndex; - } - this.el = ct.createChild(cfg, position); - } - var type = this.el.dom.type; - if(type){ - if(type == 'password'){ - type = 'text'; - } - this.el.addClass('x-form-'+type); - } - if(this.readOnly){ - this.el.dom.readOnly = true; - } - - this.el.addClass([this.fieldClass, this.cls]); - this.initValue(); - }, - - // private - initValue : function(){ - if(this.value !== undefined){ - this.setValue(this.value); - }else if(this.el.dom.value.length > 0){ - this.setValue(this.el.dom.value); - } - }, - - - isDirty : function() { - if(this.disabled) { - return false; - } - return String(this.getValue()) !== String(this.originalValue); - }, - - // private - afterRender : function(){ - Ext.form.Field.superclass.afterRender.call(this); - this.initEvents(); - }, - - // private - fireKey : function(e){ - if(e.isNavKeyPress()){ - this.fireEvent("specialkey", this, e); - } - }, - - - reset : function(){ - this.setValue(this.originalValue); - this.clearInvalid(); - }, - - // private - initEvents : function(){ - this.el.on(Ext.isIE ? "keydown" : "keypress", this.fireKey, this); - this.el.on("focus", this.onFocus, this); - this.el.on("blur", this.onBlur, this); - - // reference to original value for reset - this.originalValue = this.getValue(); - }, - - // private - onFocus : function(){ - if(!Ext.isOpera){ // don't touch in Opera - this.el.addClass(this.focusClass); - } - this.hasFocus = true; - this.startValue = this.getValue(); - this.fireEvent("focus", this); - }, - - // private - onBlur : function(){ - this.el.removeClass(this.focusClass); - this.hasFocus = false; - if(this.validationEvent !== false && this.validateOnBlur && this.validationEvent != "blur"){ - this.validate(); - } - var v = this.getValue(); - if(v != this.startValue){ - this.fireEvent('change', this, v, this.startValue); - } - this.fireEvent("blur", this); - }, - - - isValid : function(preventMark){ - if(this.disabled){ - return true; - } - var restore = this.preventMark; - this.preventMark = preventMark === true; - var v = this.validateValue(this.getRawValue()); - this.preventMark = restore; - return v; - }, - - - validate : function(){ - if(this.disabled || this.validateValue(this.getRawValue())){ - this.clearInvalid(); - return true; - } - return false; - }, - - // private - // Subclasses should provide the validation implementation by overriding this - validateValue : function(value){ - return true; - }, - - - markInvalid : function(msg){ - if(!this.rendered || this.preventMark){ // not rendered - return; - } - this.el.addClass(this.invalidClass); - msg = msg || this.invalidText; - switch(this.msgTarget){ - case 'qtip': - this.el.dom.qtip = msg; - this.el.dom.qclass = 'x-form-invalid-tip'; - break; - case 'title': - this.el.dom.title = msg; - break; - case 'under': - if(!this.errorEl){ - var elp = this.el.findParent('.x-form-element', 5, true); - this.errorEl = elp.createChild({cls:'x-form-invalid-msg'}); - this.errorEl.setWidth(elp.getWidth(true)-20); - } - this.errorEl.update(msg); - Ext.form.Field.msgFx[this.msgFx].show(this.errorEl, this); - break; - case 'side': - if(!this.errorIcon){ - var elp = this.el.findParent('.x-form-element', 5, true); - this.errorIcon = elp.createChild({cls:'x-form-invalid-icon'}); - } - this.alignErrorIcon(); - this.errorIcon.dom.qtip = msg; - this.errorIcon.dom.qclass = 'x-form-invalid-tip'; - this.errorIcon.show(); - break; - default: - var t = Ext.getDom(this.msgTarget); - t.innerHTML = msg; - t.style.display = this.msgDisplay; - break; - } - this.fireEvent('invalid', this, msg); - }, - - // private - alignErrorIcon : function(){ - this.errorIcon.alignTo(this.el, 'tl-tr', [2, 0]); - }, - - - clearInvalid : function(){ - if(!this.rendered || this.preventMark){ // not rendered - return; - } - this.el.removeClass(this.invalidClass); - switch(this.msgTarget){ - case 'qtip': - this.el.dom.qtip = ''; - break; - case 'title': - this.el.dom.title = ''; - break; - case 'under': - if(this.errorEl){ - Ext.form.Field.msgFx[this.msgFx].hide(this.errorEl, this); - } - break; - case 'side': - if(this.errorIcon){ - this.errorIcon.dom.qtip = ''; - this.errorIcon.hide(); - } - break; - default: - var t = Ext.getDom(this.msgTarget); - t.innerHTML = ''; - t.style.display = 'none'; - break; - } - this.fireEvent('valid', this); - }, - - - getRawValue : function(){ - return this.el.getValue(); - }, - - - getValue : function(){ - var v = this.el.getValue(); - if(v == this.emptyText || v === undefined){ - v = ''; - } - return v; - }, - - - setRawValue : function(v){ - return this.el.dom.value = (v === null || v === undefined ? '' : v); - }, - - - setValue : function(v){ - this.value = v; - if(this.rendered){ - this.el.dom.value = (v === null || v === undefined ? '' : v); - this.validate(); - } - }, - - adjustSize : function(w, h){ - var s = Ext.form.Field.superclass.adjustSize.call(this, w, h); - s.width = this.adjustWidth(this.el.dom.tagName, s.width); - return s; - }, - - adjustWidth : function(tag, w){ - tag = tag.toLowerCase(); - if(typeof w == 'number' && Ext.isStrict && !Ext.isSafari){ - if(Ext.isIE && (tag == 'input' || tag == 'textarea')){ - if(tag == 'input'){ - return w + 2; - } - if(tag = 'textarea'){ - return w-2; - } - }else if(Ext.isGecko && tag == 'textarea'){ - return w-6; - }else if(Ext.isOpera){ - if(tag == 'input'){ - return w + 2; - } - if(tag = 'textarea'){ - return w-2; - } - } - } - return w; - } -}); - - -// anything other than normal should be considered experimental -Ext.form.Field.msgFx = { - normal : { - show: function(msgEl, f){ - msgEl.setDisplayed('block'); - }, - - hide : function(msgEl, f){ - msgEl.setDisplayed(false).update(''); - } - }, - - slide : { - show: function(msgEl, f){ - msgEl.slideIn('t', {stopFx:true}); - }, - - hide : function(msgEl, f){ - msgEl.slideOut('t', {stopFx:true,useDisplay:true}); - } - }, - - slideRight : { - show: function(msgEl, f){ - msgEl.fixDisplay(); - msgEl.alignTo(f.el, 'tl-tr'); - msgEl.slideIn('l', {stopFx:true}); - }, - - hide : function(msgEl, f){ - msgEl.slideOut('l', {stopFx:true,useDisplay:true}); - } - } -}; - - -Ext.form.TextField = function(config){ - Ext.form.TextField.superclass.constructor.call(this, config); - this.addEvents({ - - autosize : true - }); -}; - -Ext.extend(Ext.form.TextField, Ext.form.Field, { - - grow : false, - - growMin : 30, - - growMax : 800, - - vtype : null, - - maskRe : null, - - disableKeyFilter : false, - - allowBlank : true, - - minLength : 0, - - maxLength : Number.MAX_VALUE, - - minLengthText : "The minimum length for this field is {0}", - - maxLengthText : "The maximum length for this field is {0}", - - selectOnFocus : false, - - blankText : "This field is required", - - validator : null, - - regex : null, - - regexText : "", - - emptyText : null, - - emptyClass : 'x-form-empty-field', - - // private - initEvents : function(){ - Ext.form.TextField.superclass.initEvents.call(this); - if(this.validationEvent == 'keyup'){ - this.validationTask = new Ext.util.DelayedTask(this.validate, this); - this.el.on('keyup', this.filterValidation, this); - } - else if(this.validationEvent !== false){ - this.el.on(this.validationEvent, this.validate, this, {buffer: this.validationDelay}); - } - if(this.selectOnFocus || this.emptyText){ - this.on("focus", this.preFocus, this); - if(this.emptyText){ - this.on('blur', this.postBlur, this); - this.applyEmptyText(); - } - } - if(this.maskRe || (this.vtype && this.disableKeyFilter !== true && (this.maskRe = Ext.form.VTypes[this.vtype+'Mask']))){ - this.el.on("keypress", this.filterKeys, this); - } - if(this.grow){ - this.el.on("keyup", this.onKeyUp, this, {buffer:50}); - this.el.on("click", this.autoSize, this); - } - }, - - filterValidation : function(e){ - if(!e.isNavKeyPress()){ - this.validationTask.delay(this.validationDelay); - } - }, - - // private - onKeyUp : function(e){ - if(!e.isNavKeyPress()){ - this.autoSize(); - } - }, - - - reset : function(){ - Ext.form.TextField.superclass.reset.call(this); - this.applyEmptyText(); - }, - - applyEmptyText : function(){ - if(this.rendered && this.emptyText && this.getRawValue().length < 1){ - this.setRawValue(this.emptyText); - this.el.addClass(this.emptyClass); - } - }, - - // private - preFocus : function(){ - if(this.emptyText){ - if(this.getRawValue() == this.emptyText){ - this.setRawValue(''); - } - this.el.removeClass(this.emptyClass); - } - if(this.selectOnFocus){ - this.el.dom.select(); - } - }, - - // private - postBlur : function(){ - this.applyEmptyText(); - }, - - // private - filterKeys : function(e){ - var k = e.getKey(); - if(!Ext.isIE && (e.isNavKeyPress() || k == e.BACKSPACE || (k == e.DELETE && e.button == -1))){ - return; - } - if(Ext.isIE && (k == e.BACKSPACE || k == e.DELETE || e.isNavKeyPress() || k == e.HOME || k == e.END)){ - return; - } - var c = e.getCharCode(); - if(!this.maskRe.test(String.fromCharCode(c) || '')){ - e.stopEvent(); - } - }, - - setValue : function(v){ - if(this.emptyText && v !== undefined && v !== null && v !== ''){ - this.el.removeClass(this.emptyClass); - } - Ext.form.TextField.superclass.setValue.apply(this, arguments); - }, - - - validateValue : function(value){ - if(value.length < 1 || value === this.emptyText){ // if it's blank - if(this.allowBlank){ - this.clearInvalid(); - return true; - }else{ - this.markInvalid(this.blankText); - return false; - } - } - if(value.length < this.minLength){ - this.markInvalid(String.format(this.minLengthText, this.minLength)); - return false; - } - if(value.length > this.maxLength){ - this.markInvalid(String.format(this.maxLengthText, this.maxLength)); - return false; - } - if(this.vtype){ - var vt = Ext.form.VTypes; - if(!vt[this.vtype](value, this)){ - this.markInvalid(this.vtypeText || vt[this.vtype +'Text']); - return false; - } - } - if(typeof this.validator == "function"){ - var msg = this.validator(value); - if(msg !== true){ - this.markInvalid(msg); - return false; - } - } - if(this.regex && !this.regex.test(value)){ - this.markInvalid(this.regexText); - return false; - } - return true; - }, - - - selectText : function(start, end){ - var v = this.getRawValue(); - if(v.length > 0){ - start = start === undefined ? 0 : start; - end = end === undefined ? v.length : end; - var d = this.el.dom; - if(d.setSelectionRange){ - d.setSelectionRange(start, end); - }else if(d.createTextRange){ - var range = d.createTextRange(); - range.moveStart("character", start); - range.moveEnd("character", v.length-end); - range.select(); - } - } - }, - - - autoSize : function(){ - if(!this.grow || !this.rendered){ - return; - } - if(!this.metrics){ - this.metrics = Ext.util.TextMetrics.createInstance(this.el); - } - var el = this.el; - var v = el.dom.value + " "; - var w = Math.min(this.growMax, Math.max(this.metrics.getWidth(v) + 10, this.growMin)); - this.el.setWidth(w); - this.fireEvent("autosize", this, w); - } -}); - -Ext.form.TriggerField = function(config){ - Ext.form.TriggerField.superclass.constructor.call(this, config); - this.mimicing = false; - this.on('disable', this.disableWrapper, this); - this.on('enable', this.enableWrapper, this); -}; - -Ext.extend(Ext.form.TriggerField, Ext.form.TextField, { - - // private - defaultAutoCreate : {tag: "input", type: "text", size: "16", autocomplete: "off"}, - - hideTrigger:false, - - - - - - - autoSize: Ext.emptyFn, - - monitorTab : true, - - deferHeight : true, - - // private - onResize : function(w, h){ - Ext.form.TriggerField.superclass.onResize.apply(this, arguments); - if(typeof w == 'number'){ - this.el.setWidth(this.adjustWidth('input', w - this.trigger.getWidth())); - } - }, - - adjustSize : Ext.BoxComponent.prototype.adjustSize, - - getResizeEl : function(){ - return this.wrap; - }, - - getPositionEl : function(){ - return this.wrap; - }, - - // private - alignErrorIcon : function(){ - this.errorIcon.alignTo(this.wrap, 'tl-tr', [2, 0]); - }, - - // private - onRender : function(ct, position){ - Ext.form.TriggerField.superclass.onRender.call(this, ct, position); - this.wrap = this.el.wrap({cls: "x-form-field-wrap"}); - this.trigger = this.wrap.createChild(this.triggerConfig || - {tag: "img", src: Ext.BLANK_IMAGE_URL, cls: "x-form-trigger " + this.triggerClass}); - if(this.hideTrigger){ - this.trigger.setDisplayed(false); - } - this.initTrigger(); - if(!this.width){ - this.wrap.setWidth(this.el.getWidth()+this.trigger.getWidth()); - } - }, - - initTrigger : function(){ - this.trigger.on("click", this.onTriggerClick, this, {preventDefault:true}); - this.trigger.addClassOnOver('x-form-trigger-over'); - this.trigger.addClassOnClick('x-form-trigger-click'); - }, - - onDestroy : function(){ - if(this.trigger){ - this.trigger.removeAllListeners(); - this.trigger.remove(); - } - if(this.wrap){ - this.wrap.remove(); - } - Ext.form.TriggerField.superclass.onDestroy.call(this); - }, - - // private - onFocus : function(){ - Ext.form.TriggerField.superclass.onFocus.call(this); - if(!this.mimicing){ - this.wrap.addClass('x-trigger-wrap-focus'); - this.mimicing = true; - Ext.get(Ext.isIE ? document.body : document).on("mousedown", this.mimicBlur, this); - if(this.monitorTab){ - this.el.on("keydown", this.checkTab, this); - } - } - }, - - // private - checkTab : function(e){ - if(e.getKey() == e.TAB){ - this.triggerBlur(); - } - }, - - // private - onBlur : function(){ - // do nothing - }, - - // private - mimicBlur : function(e, t){ - if(!this.wrap.contains(t) && this.validateBlur()){ - this.triggerBlur(); - } - }, - - // private - triggerBlur : function(){ - this.mimicing = false; - Ext.get(Ext.isIE ? document.body : document).un("mousedown", this.mimicBlur); - if(this.monitorTab){ - this.el.un("keydown", this.checkTab, this); - } - this.beforeBlur(); - this.wrap.removeClass('x-trigger-wrap-focus'); - Ext.form.TriggerField.superclass.onBlur.call(this); - }, - - beforeBlur : Ext.emptyFn, - - // private - // This should be overridden by any subclass that needs to check whether or not the field can be blurred. - validateBlur : function(e, t){ - return true; - }, - - // private - disableWrapper : function(){ - if(this.wrap){ - this.wrap.addClass('x-item-disabled'); - } - }, - - // private - enableWrapper : function(){ - if(this.wrap){ - this.wrap.removeClass('x-item-disabled'); - } - }, - - // private - onShow : function(){ - if(this.wrap){ - this.wrap.dom.style.display = ''; - this.wrap.dom.style.visibility = 'visible'; - } - }, - - // private - onHide : function(){ - this.wrap.dom.style.display = 'none'; - }, - - - onTriggerClick : Ext.emptyFn -}); - -Ext.form.TwinTriggerField = Ext.extend(Ext.form.TriggerField, { - initComponent : function(){ - Ext.form.TwinTriggerField.superclass.initComponent.call(this); - - this.triggerConfig = { - tag:'span', cls:'x-form-twin-triggers', cn:[ - {tag: "img", src: Ext.BLANK_IMAGE_URL, cls: "x-form-trigger " + this.trigger1Class}, - {tag: "img", src: Ext.BLANK_IMAGE_URL, cls: "x-form-trigger " + this.trigger2Class} - ]}; - }, - - getTrigger : function(index){ - return this.triggers[index]; - }, - - initTrigger : function(){ - var ts = this.trigger.select('.x-form-trigger', true); - this.wrap.setStyle('overflow', 'hidden'); - var triggerField = this; - ts.each(function(t, all, index){ - t.hide = function(){ - var w = triggerField.wrap.getWidth(); - this.dom.style.display = 'none'; - triggerField.el.setWidth(w-triggerField.trigger.getWidth()); - }; - t.show = function(){ - var w = triggerField.wrap.getWidth(); - this.dom.style.display = ''; - triggerField.el.setWidth(w-triggerField.trigger.getWidth()); - }; - var triggerIndex = 'Trigger'+(index+1); - - if(this['hide'+triggerIndex]){ - t.dom.style.display = 'none'; - } - t.on("click", this['on'+triggerIndex+'Click'], this, {preventDefault:true}); - t.addClassOnOver('x-form-trigger-over'); - t.addClassOnClick('x-form-trigger-click'); - }, this); - this.triggers = ts.elements; - }, - - onTrigger1Click : Ext.emptyFn, - onTrigger2Click : Ext.emptyFn -}); - -Ext.form.TextArea = function(config){ - Ext.form.TextArea.superclass.constructor.call(this, config); - // these are provided exchanges for backwards compat - // minHeight/maxHeight were replaced by growMin/growMax to be - // compatible with TextField growing config values - if(this.minHeight !== undefined){ - this.growMin = this.minHeight; - } - if(this.maxHeight !== undefined){ - this.growMax = this.maxHeight; - } -}; - -Ext.extend(Ext.form.TextArea, Ext.form.TextField, { - - growMin : 60, - - growMax: 1000, - - preventScrollbars: false, - - // private - onRender : function(ct, position){ - if(!this.el){ - this.defaultAutoCreate = { - tag: "textarea", - style:"width:300px;height:60px;", - autocomplete: "off" - }; - } - Ext.form.TextArea.superclass.onRender.call(this, ct, position); - if(this.grow){ - this.textSizeEl = Ext.DomHelper.append(document.body, { - tag: "pre", cls: "x-form-grow-sizer" - }); - if(this.preventScrollbars){ - this.el.setStyle("overflow", "hidden"); - } - this.el.setHeight(this.growMin); - } - }, - - onDestroy : function(){ - if(this.textSizeEl){ - this.textSizeEl.remove(); - } - Ext.form.TextArea.superclass.onDestroy.call(this); - }, - - // private - onKeyUp : function(e){ - if(!e.isNavKeyPress() || e.getKey() == e.ENTER){ - this.autoSize(); - } - }, - - - autoSize : function(){ - if(!this.grow || !this.textSizeEl){ - return; - } - var el = this.el; - var v = el.dom.value; - var ts = this.textSizeEl; - Ext.fly(ts).setWidth(this.el.getWidth()); - if(v.length < 1){ - v = "  "; - }else{ - if(Ext.isIE){ - v = v.replace(/\n/g, '<p> </p>'); - } - v += " \n "; - } - ts.innerHTML = v; - var h = Math.min(this.growMax, Math.max(ts.offsetHeight, this.growMin)); - if(h != this.lastHeight){ - this.lastHeight = h; - this.el.setHeight(h); - this.fireEvent("autosize", this, h); - } - }, - - // private - setValue : function(v){ - Ext.form.TextArea.superclass.setValue.call(this, v); - this.autoSize(); - } -}); - -Ext.form.NumberField = function(config){ - Ext.form.NumberField.superclass.constructor.call(this, config); -}; - -Ext.extend(Ext.form.NumberField, Ext.form.TextField, { - - fieldClass: "x-form-field x-form-num-field", - - allowDecimals : true, - - decimalSeparator : ".", - - decimalPrecision : 2, - - allowNegative : true, - - minValue : Number.NEGATIVE_INFINITY, - - maxValue : Number.MAX_VALUE, - - minText : "The minimum value for this field is {0}", - - maxText : "The maximum value for this field is {0}", - - nanText : "{0} is not a valid number", - - // private - initEvents : function(){ - Ext.form.NumberField.superclass.initEvents.call(this); - var allowed = "0123456789"; - if(this.allowDecimals){ - allowed += this.decimalSeparator; - } - if(this.allowNegative){ - allowed += "-"; - } - var keyPress = function(e){ - var k = e.getKey(); - if(!Ext.isIE && (e.isNavKeyPress() || k == e.BACKSPACE || (k == e.DELETE && e.button == -1))){ - return; - } - var c = e.getCharCode(); - if(allowed.indexOf(String.fromCharCode(c)) === -1){ - e.stopEvent(); - } - }; - this.el.on("keypress", keyPress, this); - }, - - // private - validateValue : function(value){ - if(!Ext.form.NumberField.superclass.validateValue.call(this, value)){ - return false; - } - if(value.length < 1){ // if it's blank and textfield didn't flag it then it's valid - return true; - } - value = String(value).replace(this.decimalSeparator, "."); - if(isNaN(value)){ - this.markInvalid(String.format(this.nanText, value)); - return false; - } - var num = this.parseValue(value); - if(num < this.minValue){ - this.markInvalid(String.format(this.minText, this.minValue)); - return false; - } - if(num > this.maxValue){ - this.markInvalid(String.format(this.maxText, this.maxValue)); - return false; - } - return true; - }, - - // private - parseValue : function(value){ - return parseFloat(String(value).replace(this.decimalSeparator, ".")); - }, - - // private - fixPrecision : function(value){ - if(!this.allowDecimals || this.decimalPrecision == -1 || isNaN(value) || value == 0 || !value){ - return value; - } - // this should work but doesn't due to precision error in JS - // var scale = Math.pow(10, this.decimalPrecision); - // var fixed = this.decimalPrecisionFcn(value * scale); - // return fixed / scale; - // - // so here's our workaround: - var scale = Math.pow(10, this.decimalPrecision+1); - var fixed = this.decimalPrecisionFcn(value * scale); - fixed = this.decimalPrecisionFcn(fixed/10); - return fixed / (scale/10); - }, - - // private - decimalPrecisionFcn : function(v){ - return Math.floor(v); - } -}); - -Ext.form.DateField = function(config){ - Ext.form.DateField.superclass.constructor.call(this, config); - if(typeof this.minValue == "string") this.minValue = this.parseDate(this.minValue); - if(typeof this.maxValue == "string") this.maxValue = this.parseDate(this.maxValue); - this.ddMatch = null; - if(this.disabledDates){ - var dd = this.disabledDates; - var re = "(?:"; - for(var i = 0; i < dd.length; i++){ - re += dd[i]; - if(i != dd.length-1) re += "|"; - } - this.ddMatch = new RegExp(re + ")"); - } -}; - -Ext.extend(Ext.form.DateField, Ext.form.TriggerField, { - - format : "m/d/y", - - altFormats : "m/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d", - - disabledDays : null, - - disabledDaysText : "Disabled", - - disabledDates : null, - - disabledDatesText : "Disabled", - - minValue : null, - - maxValue : null, - - minText : "The date in this field must be after {0}", - - maxText : "The date in this field must be before {0}", - - invalidText : "{0} is not a valid date - it must be in the format {1}", - - triggerClass : 'x-form-date-trigger', - - - // private - defaultAutoCreate : {tag: "input", type: "text", size: "10", autocomplete: "off"}, - - // private - validateValue : function(value){ - value = this.formatDate(value); - if(!Ext.form.DateField.superclass.validateValue.call(this, value)){ - return false; - } - if(value.length < 1){ // if it's blank and textfield didn't flag it then it's valid - return true; - } - var svalue = value; - value = this.parseDate(value); - if(!value){ - this.markInvalid(String.format(this.invalidText, svalue, this.format)); - return false; - } - var time = value.getTime(); - if(this.minValue && time < this.minValue.getTime()){ - this.markInvalid(String.format(this.minText, this.formatDate(this.minValue))); - return false; - } - if(this.maxValue && time > this.maxValue.getTime()){ - this.markInvalid(String.format(this.maxText, this.formatDate(this.maxValue))); - return false; - } - if(this.disabledDays){ - var day = value.getDay(); - for(var i = 0; i < this.disabledDays.length; i++) { - if(day === this.disabledDays[i]){ - this.markInvalid(this.disabledDaysText); - return false; - } - } - } - var fvalue = this.formatDate(value); - if(this.ddMatch && this.ddMatch.test(fvalue)){ - this.markInvalid(String.format(this.disabledDatesText, fvalue)); - return false; - } - return true; - }, - - // private - // Provides logic to override the default TriggerField.validateBlur which just returns true - validateBlur : function(){ - return !this.menu || !this.menu.isVisible(); - }, - - - getValue : function(){ - return this.parseDate(Ext.form.DateField.superclass.getValue.call(this)) || ""; - }, - - - setValue : function(date){ - Ext.form.DateField.superclass.setValue.call(this, this.formatDate(this.parseDate(date))); - }, - - // private - parseDate : function(value){ - if(!value || value instanceof Date){ - return value; - } - var v = Date.parseDate(value, this.format); - if(!v && this.altFormats){ - if(!this.altFormatsArray){ - this.altFormatsArray = this.altFormats.split("|"); - } - for(var i = 0, len = this.altFormatsArray.length; i < len && !v; i++){ - v = Date.parseDate(value, this.altFormatsArray[i]); - } - } - return v; - }, - - // private - formatDate : function(date){ - return (!date || !(date instanceof Date)) ? - date : date.dateFormat(this.format); - }, - - // private - menuListeners : { - select: function(m, d){ - this.setValue(d); - }, - show : function(){ // retain focus styling - this.onFocus(); - }, - hide : function(){ - this.focus.defer(10, this); - var ml = this.menuListeners; - this.menu.un("select", ml.select, this); - this.menu.un("show", ml.show, this); - this.menu.un("hide", ml.hide, this); - } - }, - - // private - // Implements the default empty TriggerField.onTriggerClick function to display the DatePicker - onTriggerClick : function(){ - if(this.disabled){ - return; - } - if(this.menu == null){ - this.menu = new Ext.menu.DateMenu(); - } - Ext.apply(this.menu.picker, { - minDate : this.minValue, - maxDate : this.maxValue, - disabledDatesRE : this.ddMatch, - disabledDatesText : this.disabledDatesText, - disabledDays : this.disabledDays, - disabledDaysText : this.disabledDaysText, - format : this.format, - minText : String.format(this.minText, this.formatDate(this.minValue)), - maxText : String.format(this.maxText, this.formatDate(this.maxValue)) - }); - this.menu.on(Ext.apply({}, this.menuListeners, { - scope:this - })); - this.menu.picker.setValue(this.getValue() || new Date()); - this.menu.show(this.el, "tl-bl?"); - }, - - beforeBlur : function(){ - var v = this.parseDate(this.getRawValue()); - if(v){ - this.setValue(v); - } - } -}); - -Ext.form.Checkbox = function(config){ - Ext.form.Checkbox.superclass.constructor.call(this, config); - this.addEvents({ - - check : true - }); -}; - -Ext.extend(Ext.form.Checkbox, Ext.form.Field, { - - focusClass : "x-form-check-focus", - - fieldClass: "x-form-field", - - checked: false, - - // private - defaultAutoCreate : { tag: "input", type: 'checkbox', autocomplete: "off"}, - - boxLabel : undefined, - - // - onResize : function(){ - Ext.form.Checkbox.superclass.onResize.apply(this, arguments); - if(!this.boxLabel){ - this.el.alignTo(this.wrap, 'c-c'); - } - }, - - initEvents : function(){ - Ext.form.Checkbox.superclass.initEvents.call(this); - this.el.on("click", this.onClick, this); - this.el.on("change", this.onClick, this); - }, - - - getResizeEl : function(){ - return this.wrap; - }, - - getPositionEl : function(){ - return this.wrap; - }, - - // private - onRender : function(ct, position){ - Ext.form.Checkbox.superclass.onRender.call(this, ct, position); - if(this.inputValue !== undefined){ - this.el.dom.value = this.inputValue; - } - this.wrap = this.el.wrap({cls: "x-form-check-wrap"}); - if(this.boxLabel){ - this.wrap.createChild({tag: 'label', htmlFor: this.el.id, cls: 'x-form-cb-label', html: this.boxLabel}); - } - if(this.checked){ - this.setValue(true); - } - }, - - // private - initValue : Ext.emptyFn, - - - getValue : function(){ - if(this.rendered){ - return this.el.dom.checked; - } - return false; - }, - - onClick : function(){ - if(this.el.dom.checked != this.checked){ - this.setValue(this.el.dom.checked); - } - }, - - - setValue : function(v){ - this.checked = (v === true || v === 'true' || v == '1'); - if(this.el && this.el.dom){ - this.el.dom.checked = this.checked; - } - this.fireEvent("check", this, this.checked); - } -}); - -Ext.form.Radio = function(){ - Ext.form.Radio.superclass.constructor.apply(this, arguments); -}; -Ext.extend(Ext.form.Radio, Ext.form.Checkbox, { - inputType: 'radio', - - - getGroupValue : function(){ - return this.el.up('form').child('input[name='+this.el.dom.name+']:checked', true).value; - } -}); - -Ext.form.ComboBox = function(config){ - Ext.form.ComboBox.superclass.constructor.call(this, config); - this.addEvents({ - - 'expand' : true, - - 'collapse' : true, - - 'beforeselect' : true, - - 'select' : true, - - 'beforequery': true - }); - if(this.transform){ - var s = Ext.getDom(this.transform); - if(!this.hiddenName){ - this.hiddenName = s.name; - } - if(!this.store){ - this.mode = 'local'; - var d = [], opts = s.options; - for(var i = 0, len = opts.length;i < len; i++){ - var o = opts[i]; - var value = (Ext.isIE ? o.getAttributeNode('value').specified : o.hasAttribute('value')) ? o.value : o.text; - if(o.selected) { - this.value = value; - } - d.push([value, o.text]); - } - this.store = new Ext.data.SimpleStore({ - 'id': 0, - fields: ['value', 'text'], - data : d - }); - this.valueField = 'value'; - this.displayField = 'text'; - } - s.name = Ext.id(); // wipe out the name in case somewhere else they have a reference - if(!this.lazyRender){ - this.target = true; - this.el = Ext.DomHelper.insertBefore(s, this.autoCreate || this.defaultAutoCreate); - s.parentNode.removeChild(s); // remove it - this.render(this.el.parentNode); - }else{ - s.parentNode.removeChild(s); // remove it - } - - } - this.selectedIndex = -1; - if(this.mode == 'local'){ - if(config.queryDelay === undefined){ - this.queryDelay = 10; - } - if(config.minChars === undefined){ - this.minChars = 0; - } - } -}; - -Ext.extend(Ext.form.ComboBox, Ext.form.TriggerField, { - - - - - // private - defaultAutoCreate : {tag: "input", type: "text", size: "24", autocomplete: "off"}, - - listWidth: undefined, - - displayField: undefined, - - valueField: undefined, - - hiddenName: undefined, - - listClass: '', - - selectedClass: 'x-combo-selected', - - triggerClass : 'x-form-arrow-trigger', - - shadow:'sides', - - listAlign: 'tl-bl?', - - maxHeight: 300, - - triggerAction: 'query', - - minChars : 4, - - typeAhead: false, - - queryDelay: 500, - - pageSize: 0, - - selectOnFocus:false, - - queryParam: 'query', - - loadingText: 'Loading...', - - resizable: false, - - handleHeight : 8, - - editable: true, - - allQuery: '', - - mode: 'remote', - - minListWidth : 70, - - forceSelection:false, - - typeAheadDelay : 250, - - valueNotFoundText : undefined, - - // private - onRender : function(ct, position){ - Ext.form.ComboBox.superclass.onRender.call(this, ct, position); - if(this.hiddenName){ - this.hiddenField = this.el.insertSibling({tag:'input', type:'hidden', name: this.hiddenName, id: this.hiddenName}, - 'before', true); - this.hiddenField.value = - this.hiddenValue !== undefined ? this.hiddenValue : - this.value !== undefined ? this.value : ''; - - // prevent input submission - this.el.dom.removeAttribute('name'); - } - if(Ext.isGecko){ - this.el.dom.setAttribute('autocomplete', 'off'); - } - - var cls = 'x-combo-list'; - - this.list = new Ext.Layer({ - shadow: this.shadow, cls: [cls, this.listClass].join(' '), constrain:false - }); - - var lw = this.listWidth || Math.max(this.wrap.getWidth(), this.minListWidth); - this.list.setWidth(lw); - this.list.swallowEvent('mousewheel'); - this.assetHeight = 0; - - if(this.title){ - this.header = this.list.createChild({cls:cls+'-hd', html: this.title}); - this.assetHeight += this.header.getHeight(); - } - - this.innerList = this.list.createChild({cls:cls+'-inner'}); - this.innerList.on('mouseover', this.onViewOver, this); - this.innerList.on('mousemove', this.onViewMove, this); - this.innerList.setWidth(lw - this.list.getFrameWidth('lr')) - - if(this.pageSize){ - this.footer = this.list.createChild({cls:cls+'-ft'}); - this.pageTb = new Ext.PagingToolbar(this.footer, this.store, - {pageSize: this.pageSize}); - this.assetHeight += this.footer.getHeight(); - } - - if(!this.tpl){ - this.tpl = '<div class="'+cls+'-item">{' + this.displayField + '}</div>'; - } - - this.view = new Ext.View(this.innerList, this.tpl, { - singleSelect:true, store: this.store, selectedClass: this.selectedClass - }); - - this.view.on('click', this.onViewClick, this); - - this.store.on('beforeload', this.onBeforeLoad, this); - this.store.on('load', this.onLoad, this); - this.store.on('loadexception', this.collapse, this); - - if(this.resizable){ - this.resizer = new Ext.Resizable(this.list, { - pinned:true, handles:'se' - }); - this.resizer.on('resize', function(r, w, h){ - this.maxHeight = h-this.handleHeight-this.list.getFrameWidth('tb')-this.assetHeight; - this.listWidth = w; - this.restrictHeight(); - }, this); - this[this.pageSize?'footer':'innerList'].setStyle('margin-bottom', this.handleHeight+'px'); - } - if(!this.editable){ - this.editable = true; - this.setEditable(false); - } - }, - - // private - initEvents : function(){ - Ext.form.ComboBox.superclass.initEvents.call(this); - - this.keyNav = new Ext.KeyNav(this.el, { - "up" : function(e){ - this.inKeyMode = true; - this.selectPrev(); - }, - - "down" : function(e){ - if(!this.isExpanded()){ - this.onTriggerClick(); - }else{ - this.inKeyMode = true; - this.selectNext(); - } - }, - - "enter" : function(e){ - this.onViewClick(); - //return true; - }, - - "esc" : function(e){ - this.collapse(); - }, - - "tab" : function(e){ - this.onViewClick(false); - return true; - }, - - scope : this, - - doRelay : function(foo, bar, hname){ - if(hname == 'down' || this.scope.isExpanded()){ - return Ext.KeyNav.prototype.doRelay.apply(this, arguments); - } - return true; - } - }); - this.queryDelay = Math.max(this.queryDelay || 10, - this.mode == 'local' ? 10 : 250); - this.dqTask = new Ext.util.DelayedTask(this.initQuery, this); - if(this.typeAhead){ - this.taTask = new Ext.util.DelayedTask(this.onTypeAhead, this); - } - if(this.editable !== false){ - this.el.on("keyup", this.onKeyUp, this); - } - if(this.forceSelection){ - this.on('blur', this.doForce, this); - } - }, - - onDestroy : function(){ - if(this.view){ - this.view.setStore(null); - this.view.el.removeAllListeners(); - this.view.el.remove(); - this.view.purgeListeners(); - } - if(this.list){ - this.list.destroy(); - } - if(this.store){ - this.store.un('beforeload', this.onBeforeLoad, this); - this.store.un('load', this.onLoad, this); - this.store.un('loadexception', this.collapse, this); - } - Ext.form.ComboBox.superclass.onDestroy.call(this); - }, - - // private - fireKey : function(e){ - if(e.isNavKeyPress() && !this.list.isVisible()){ - this.fireEvent("specialkey", this, e); - } - }, - - // private - onResize: function(w, h){ - Ext.form.ComboBox.superclass.onResize.apply(this, arguments); - if(this.list && this.listWidth === undefined){ - var lw = Math.max(w, this.minListWidth); - this.list.setWidth(lw); - this.innerList.setWidth(lw - this.list.getFrameWidth('lr')) - } - }, - - - setEditable : function(value){ - if(value == this.editable){ - return; - } - this.editable = value; - if(!value){ - this.el.dom.setAttribute('readOnly', true); - this.el.on('mousedown', this.onTriggerClick, this); - this.el.addClass('x-combo-noedit'); - }else{ - this.el.dom.setAttribute('readOnly', false); - this.el.un('mousedown', this.onTriggerClick, this); - this.el.removeClass('x-combo-noedit'); - } - }, - - // private - onBeforeLoad : function(){ - if(!this.hasFocus){ - return; - } - this.innerList.update(this.loadingText ? - '<div class="loading-indicator">'+this.loadingText+'</div>' : ''); - this.restrictHeight(); - this.selectedIndex = -1; - }, - - // private - onLoad : function(){ - if(!this.hasFocus){ - return; - } - if(this.store.getCount() > 0){ - this.expand(); - this.restrictHeight(); - if(this.lastQuery == this.allQuery){ - if(this.editable){ - this.el.dom.select(); - } - if(!this.selectByValue(this.value, true)){ - this.select(0, true); - } - }else{ - this.selectNext(); - if(this.typeAhead && this.lastKey != Ext.EventObject.BACKSPACE && this.lastKey != Ext.EventObject.DELETE){ - this.taTask.delay(this.typeAheadDelay); - } - } - }else{ - this.onEmptyResults(); - } - //this.el.focus(); - }, - - // private - onTypeAhead : function(){ - if(this.store.getCount() > 0){ - var r = this.store.getAt(0); - var newValue = r.data[this.displayField]; - var len = newValue.length; - var selStart = this.getRawValue().length; - if(selStart != len){ - this.setRawValue(newValue); - this.selectText(selStart, newValue.length); - } - } - }, - - // private - onSelect : function(record, index){ - if(this.fireEvent('beforeselect', this, record, index) !== false){ - this.setValue(record.data[this.valueField || this.displayField]); - this.collapse(); - this.fireEvent('select', this, record, index); - } - }, - - - getValue : function(){ - if(this.valueField){ - return typeof this.value != 'undefined' ? this.value : ''; - }else{ - return Ext.form.ComboBox.superclass.getValue.call(this); - } - }, - - - clearValue : function(){ - if(this.hiddenField){ - this.hiddenField.value = ''; - } - this.setRawValue(''); - this.lastSelectionText = ''; - }, - - - setValue : function(v){ - var text = v; - if(this.valueField){ - var r = this.findRecord(this.valueField, v); - if(r){ - text = r.data[this.displayField]; - }else if(this.valueNotFoundText !== undefined){ - text = this.valueNotFoundText; - } - } - this.lastSelectionText = text; - if(this.hiddenField){ - this.hiddenField.value = v; - } - Ext.form.ComboBox.superclass.setValue.call(this, text); - this.value = v; - }, - - // private - findRecord : function(prop, value){ - var record; - if(this.store.getCount() > 0){ - this.store.each(function(r){ - if(r.data[prop] == value){ - record = r; - return false; - } - }); - } - return record; - }, - - // private - onViewMove : function(e, t){ - this.inKeyMode = false; - }, - - // private - onViewOver : function(e, t){ - if(this.inKeyMode){ // prevent key nav and mouse over conflicts - return; - } - var item = this.view.findItemFromChild(t); - if(item){ - var index = this.view.indexOf(item); - this.select(index, false); - } - }, - - // private - onViewClick : function(doFocus){ - var index = this.view.getSelectedIndexes()[0]; - var r = this.store.getAt(index); - if(r){ - this.onSelect(r, index); - } - if(doFocus !== false){ - this.el.focus(); - } - }, - - // private - restrictHeight : function(){ - this.innerList.dom.style.height = ''; - var inner = this.innerList.dom; - var h = Math.max(inner.clientHeight, inner.offsetHeight, inner.scrollHeight); - this.innerList.setHeight(h < this.maxHeight ? 'auto' : this.maxHeight); - this.list.beginUpdate(); - this.list.setHeight(this.innerList.getHeight()+this.list.getFrameWidth('tb')+(this.resizable?this.handleHeight:0)+this.assetHeight); - this.list.alignTo(this.el, this.listAlign); - this.list.endUpdate(); - }, - - // private - onEmptyResults : function(){ - this.collapse(); - }, - - - isExpanded : function(){ - return this.list.isVisible(); - }, - - - selectByValue : function(v, scrollIntoView){ - if(v !== undefined && v !== null){ - var r = this.findRecord(this.valueField || this.displayField, v); - if(r){ - this.select(this.store.indexOf(r), scrollIntoView); - return true; - } - } - return false; - }, - - - select : function(index, scrollIntoView){ - this.selectedIndex = index; - this.view.select(index); - if(scrollIntoView !== false){ - var el = this.view.getNode(index); - if(el){ - this.innerList.scrollChildIntoView(el, false); - } - } - }, - - // private - selectNext : function(){ - var ct = this.store.getCount(); - if(ct > 0){ - if(this.selectedIndex == -1){ - this.select(0); - }else if(this.selectedIndex < ct-1){ - this.select(this.selectedIndex+1); - } - } - }, - - // private - selectPrev : function(){ - var ct = this.store.getCount(); - if(ct > 0){ - if(this.selectedIndex == -1){ - this.select(0); - }else if(this.selectedIndex != 0){ - this.select(this.selectedIndex-1); - } - } - }, - - // private - onKeyUp : function(e){ - if(this.editable !== false && !e.isSpecialKey()){ - this.lastKey = e.getKey(); - this.dqTask.delay(this.queryDelay); - } - }, - - // private - validateBlur : function(){ - return !this.list || !this.list.isVisible(); - }, - - // private - initQuery : function(){ - this.doQuery(this.getRawValue()); - }, - - // private - doForce : function(){ - if(this.el.dom.value.length > 0){ - this.el.dom.value = - this.lastSelectionText === undefined ? '' : this.lastSelectionText; - this.applyEmptyText(); - } - }, - - - doQuery : function(q, forceAll){ - if(q === undefined || q === null){ - q = ''; - } - var qe = { - query: q, - forceAll: forceAll, - combo: this, - cancel:false - }; - if(this.fireEvent('beforequery', qe)===false || qe.cancel){ - return false; - } - q = qe.query; - forceAll = qe.forceAll; - if(forceAll === true || (q.length >= this.minChars)){ - if(this.lastQuery != q){ - this.lastQuery = q; - if(this.mode == 'local'){ - this.selectedIndex = -1; - if(forceAll){ - this.store.clearFilter(); - }else{ - this.store.filter(this.displayField, q); - } - this.onLoad(); - }else{ - this.store.baseParams[this.queryParam] = q; - this.store.load({ - params: this.getParams(q) - }); - this.expand(); - } - }else{ - this.selectedIndex = -1; - this.onLoad(); - } - } - }, - - // private - getParams : function(q){ - var p = {}; - //p[this.queryParam] = q; - if(this.pageSize){ - p.start = 0; - p.limit = this.pageSize; - } - return p; - }, - - - collapse : function(){ - if(!this.isExpanded()){ - return; - } - this.list.hide(); - Ext.get(document).un('mousedown', this.collapseIf, this); - this.fireEvent('collapse', this); - }, - - // private - collapseIf : function(e){ - if(!e.within(this.wrap) && !e.within(this.list)){ - this.collapse(); - } - }, - - - expand : function(){ - if(this.isExpanded() || !this.hasFocus){ - return; - } - this.list.alignTo(this.el, this.listAlign); - this.list.show(); - Ext.get(document).on('mousedown', this.collapseIf, this); - this.fireEvent('expand', this); - }, - - // private - // Implements the default empty TriggerField.onTriggerClick function - onTriggerClick : function(){ - if(this.disabled){ - return; - } - if(this.isExpanded()){ - this.collapse(); - this.el.focus(); - }else { - this.hasFocus = true; - if(this.triggerAction == 'all') { - this.doQuery(this.allQuery, true); - } else { - this.doQuery(this.getRawValue()); - } - this.el.focus(); - } - } -}); - -Ext.Editor = function(field, config){ - Ext.Editor.superclass.constructor.call(this, config); - this.field = field; - this.addEvents({ - - "beforestartedit" : true, - - "startedit" : true, - - "beforecomplete" : true, - - "complete" : true, - - "specialkey" : true - }); -}; - -Ext.extend(Ext.Editor, Ext.Component, { - - - - - - value : "", - - alignment: "c-c?", - - shadow : "frame", - - constrain : false, - - // private - updateEl : false, - - // private - onRender : function(ct, position){ - this.el = new Ext.Layer({ - shadow: this.shadow, - cls: "x-editor", - parentEl : ct, - shim : this.shim, - shadowOffset:4, - id: this.id - }); - this.el.setStyle("overflow", Ext.isGecko ? "auto" : "hidden"); - if(this.field.msgTarget != 'title'){ - this.field.msgTarget = 'qtip'; - } - this.field.render(this.el); - if(Ext.isGecko){ - this.field.el.dom.setAttribute('autocomplete', 'off'); - } - this.field.show(); - this.field.on("blur", this.onBlur, this); - this.relayEvents(this.field, ["specialkey"]); - if(this.field.grow){ - this.field.on("autosize", this.el.sync, this.el, {delay:1}); - } - }, - - // private - startEdit : function(el, value){ - if(this.editing){ - this.completeEdit(); - } - this.boundEl = Ext.get(el); - var v = value !== undefined ? value : this.boundEl.dom.innerHTML; - if(!this.rendered){ - this.render(this.parentEl || document.body); - } - if(this.fireEvent("beforestartedit", this, this.boundEl, v) === false){ - return; - } - this.startValue = v; - this.field.setValue(v); - if(this.autoSize){ - var sz = this.boundEl.getSize(); - switch(this.autoSize){ - case "width": - this.setSize(sz.width, ""); - break; - case "height": - this.setSize("", sz.height); - break; - default: - this.setSize(sz.width, sz.height); - } - } - this.el.alignTo(this.boundEl, this.alignment); - this.editing = true; - if(Ext.QuickTips){ - Ext.QuickTips.disable(); - } - this.show(); - }, - - - setSize : function(w, h){ - this.field.setSize(w, h); - if(this.el){ - this.el.sync(); - } - }, - - - realign : function(){ - this.el.alignTo(this.boundEl, this.alignment); - }, - - - completeEdit : function(remainVisible){ - if(!this.editing){ - return; - } - var v = this.getValue(); - if(this.revertInvalid !== false && !this.field.isValid()){ - v = this.startValue; - this.cancelEdit(true); - } - if(String(v) == String(this.startValue) && this.ignoreNoChange){ - this.editing = false; - this.hide(); - return; - } - if(this.fireEvent("beforecomplete", this, v, this.startValue) !== false){ - this.editing = false; - if(this.updateEl && this.boundEl){ - this.boundEl.update(v); - } - if(remainVisible !== true){ - this.hide(); - } - this.fireEvent("complete", this, v, this.startValue); - } - }, - - // private - onShow : function(){ - this.el.show(); - if(this.hideEl !== false){ - this.boundEl.hide(); - } - this.field.show(); - if(Ext.isIE && !this.fixIEFocus){ // IE has problems with focusing the first time - this.fixIEFocus = true; - this.deferredFocus.defer(50, this); - }else{ - this.field.focus(); - } - this.fireEvent("startedit", this.boundEl, this.startValue); - }, - - deferredFocus : function(){ - if(this.editing){ - this.field.focus(); - } - }, - - - cancelEdit : function(remainVisible){ - if(this.editing){ - this.setValue(this.startValue); - if(remainVisible !== true){ - this.hide(); - } - } - }, - - // private - onBlur : function(){ - if(this.allowBlur !== true && this.editing){ - this.completeEdit(); - } - }, - - // private - onHide : function(){ - if(this.editing){ - this.completeEdit(); - return; - } - this.field.blur(); - if(this.field.collapse){ - this.field.collapse(); - } - this.el.hide(); - if(this.hideEl !== false){ - this.boundEl.show(); - } - if(Ext.QuickTips){ - Ext.QuickTips.enable(); - } - }, - - - setValue : function(v){ - this.field.setValue(v); - }, - - - getValue : function(){ - return this.field.getValue(); - } -}); - -Ext.form.BasicForm = function(el, config){ - Ext.apply(this, config); - - this.items = new Ext.util.MixedCollection(false, function(o){ - return o.id || (o.id = Ext.id()); - }); - this.addEvents({ - - beforeaction: true, - - actionfailed : true, - - actioncomplete : true - }); - if(el){ - this.initEl(el); - } - Ext.form.BasicForm.superclass.constructor.call(this); -}; - -Ext.extend(Ext.form.BasicForm, Ext.util.Observable, { - - - - - - - - timeout: 30, - - // private - activeAction : null, - - - trackResetOnLoad : false, - - - waitMsgTarget : undefined, - - // private - initEl : function(el){ - this.el = Ext.get(el); - this.id = this.el.id || Ext.id(); - this.el.on('submit', this.onSubmit, this); - this.el.addClass('x-form'); - }, - - // private - onSubmit : function(e){ - e.stopEvent(); - }, - - - isValid : function(){ - var valid = true; - this.items.each(function(f){ - if(!f.validate()){ - valid = false; - } - }); - return valid; - }, - - - isDirty : function(){ - var dirty = false; - this.items.each(function(f){ - if(f.isDirty()){ - dirty = true; - return false; - } - }); - return dirty; - }, - - - doAction : function(action, options){ - if(typeof action == 'string'){ - action = new Ext.form.Action.ACTION_TYPES[action](this, options); - } - if(this.fireEvent('beforeaction', this, action) !== false){ - this.beforeAction(action); - action.run.defer(100, action); - } - return this; - }, - - - submit : function(options){ - this.doAction('submit', options); - return this; - }, - - - load : function(options){ - this.doAction('load', options); - return this; - }, - - - updateRecord : function(record){ - record.beginEdit(); - var fs = record.fields; - fs.each(function(f){ - var field = this.findField(f.name); - if(field){ - record.set(f.name, field.getValue()); - } - }, this); - record.endEdit(); - return this; - }, - - - loadRecord : function(record){ - this.setValues(record.data); - return this; - }, - - // private - beforeAction : function(action){ - var o = action.options; - if(o.waitMsg){ - if(this.waitMsgTarget === true){ - this.el.mask(o.waitMsg, 'x-mask-loading'); - }else if(this.waitMsgTarget){ - this.waitMsgTarget = Ext.get(this.waitMsgTarget); - this.waitMsgTarget.mask(o.waitMsg, 'x-mask-loading'); - }else{ - Ext.MessageBox.wait(o.waitMsg, o.waitTitle || this.waitTitle || 'Please Wait...'); - } - } - }, - - // private - afterAction : function(action, success){ - this.activeAction = null; - var o = action.options; - if(o.waitMsg){ - if(this.waitMsgTarget === true){ - this.el.unmask(); - }else if(this.waitMsgTarget){ - this.waitMsgTarget.unmask(); - }else{ - Ext.MessageBox.updateProgress(1); - Ext.MessageBox.hide(); - } - } - if(success){ - if(o.reset){ - this.reset(); - } - Ext.callback(o.success, o.scope, [this, action]); - this.fireEvent('actioncomplete', this, action); - }else{ - Ext.callback(o.failure, o.scope, [this, action]); - this.fireEvent('actionfailed', this, action); - } - }, - - - findField : function(id){ - var field = this.items.get(id); - if(!field){ - this.items.each(function(f){ - if(f.isFormField && (f.dataIndex == id || f.id == id || f.getName() == id)){ - field = f; - return false; - } - }); - } - return field || null; - }, - - - - markInvalid : function(errors){ - if(errors instanceof Array){ - for(var i = 0, len = errors.length; i < len; i++){ - var fieldError = errors[i]; - var f = this.findField(fieldError.id); - if(f){ - f.markInvalid(fieldError.msg); - } - } - }else{ - var field, id; - for(id in errors){ - if(typeof errors[id] != 'function' && (field = this.findField(id))){ - field.markInvalid(errors[id]); - } - } - } - return this; - }, - - - setValues : function(values){ - if(values instanceof Array){ // array of objects - for(var i = 0, len = values.length; i < len; i++){ - var v = values[i]; - var f = this.findField(v.id); - if(f){ - f.setValue(v.value); - if(this.trackResetOnLoad){ - f.originalValue = f.getValue(); - } - } - } - }else{ // object hash - var field, id; - for(id in values){ - if(typeof values[id] != 'function' && (field = this.findField(id))){ - field.setValue(values[id]); - if(this.trackResetOnLoad){ - field.originalValue = field.getValue(); - } - } - } - } - return this; - }, - - - getValues : function(asString){ - var fs = Ext.lib.Ajax.serializeForm(this.el.dom); - if(asString === true){ - return fs; - } - return Ext.urlDecode(fs); - }, - - - clearInvalid : function(){ - this.items.each(function(f){ - f.clearInvalid(); - }); - return this; - }, - - - reset : function(){ - this.items.each(function(f){ - f.reset(); - }); - return this; - }, - - - add : function(){ - this.items.addAll(Array.prototype.slice.call(arguments, 0)); - return this; - }, - - - - remove : function(field){ - this.items.remove(field); - return this; - }, - - - render : function(){ - this.items.each(function(f){ - if(f.isFormField && !f.rendered && document.getElementById(f.id)){ // if the element exists - f.applyTo(f.id); - } - }); - return this; - }, - - - applyToFields : function(o){ - this.items.each(function(f){ - Ext.apply(f, o); - }); - return this; - }, - - - applyIfToFields : function(o){ - this.items.each(function(f){ - Ext.applyIf(f, o); - }); - return this; - } -}); - -// back compat -Ext.BasicForm = Ext.form.BasicForm; - -Ext.form.Form = function(config){ - Ext.form.Form.superclass.constructor.call(this, null, config); - this.url = this.url || this.action; - if(!this.root){ - this.root = new Ext.form.Layout(Ext.applyIf({ - id: Ext.id() - }, config)); - } - this.active = this.root; - - this.buttons = []; - this.addEvents({ - - clientvalidation: true - }); -}; - -Ext.extend(Ext.form.Form, Ext.form.BasicForm, { - - - - buttonAlign:'center', - - - minButtonWidth:75, - - - labelAlign:'left', - - - monitorValid : false, - - - monitorPoll : 200, - - - column : function(c){ - var col = new Ext.form.Column(c); - this.start(col); - if(arguments.length > 1){ // duplicate code required because of Opera - this.add.apply(this, Array.prototype.slice.call(arguments, 1)); - this.end(); - } - return col; - }, - - - fieldset : function(c){ - var fs = new Ext.form.FieldSet(c); - this.start(fs); - if(arguments.length > 1){ // duplicate code required because of Opera - this.add.apply(this, Array.prototype.slice.call(arguments, 1)); - this.end(); - } - return fs; - }, - - - container : function(c){ - var l = new Ext.form.Layout(c); - this.start(l); - if(arguments.length > 1){ // duplicate code required because of Opera - this.add.apply(this, Array.prototype.slice.call(arguments, 1)); - this.end(); - } - return l; - }, - - - start : function(c){ - // cascade label info - Ext.applyIf(c, {'labelAlign': this.active.labelAlign, 'labelWidth': this.active.labelWidth, 'itemCls': this.active.itemCls}); - this.active.stack.push(c); - c.ownerCt = this.active; - this.active = c; - return this; - }, - - - end : function(){ - if(this.active == this.root){ - return this; - } - this.active = this.active.ownerCt; - return this; - }, - - - add : function(){ - this.active.stack.push.apply(this.active.stack, arguments); - var r = []; - for(var i = 0, a = arguments, len = a.length; i < len; i++) { - if(a[i].isFormField){ - r.push(a[i]); - } - } - if(r.length > 0){ - Ext.form.Form.superclass.add.apply(this, r); - } - return this; - }, - - - render : function(ct){ - ct = Ext.get(ct); - var o = this.autoCreate || { - tag: 'form', - method : this.method || 'POST', - id : this.id || Ext.id() - }; - this.initEl(ct.createChild(o)); - - this.root.render(this.el); - - this.items.each(function(f){ - f.render('x-form-el-'+f.id); - }); - - if(this.buttons.length > 0){ - // tables are required to maintain order and for correct IE layout - var tb = this.el.createChild({cls:'x-form-btns-ct', cn: { - cls:"x-form-btns x-form-btns-"+this.buttonAlign, - html:'<table cellspacing="0"><tbody><tr></tr></tbody></table><div class="x-clear"></div>' - }}, null, true); - var tr = tb.getElementsByTagName('tr')[0]; - for(var i = 0, len = this.buttons.length; i < len; i++) { - var b = this.buttons[i]; - var td = document.createElement('td'); - td.className = 'x-form-btn-td'; - b.render(tr.appendChild(td)); - } - } - if(this.monitorValid){ // initialize after render - this.startMonitoring(); - } - return this; - }, - - - addButton : function(config, handler, scope){ - var bc = { - handler: handler, - scope: scope, - minWidth: this.minButtonWidth, - hideParent:true - }; - if(typeof config == "string"){ - bc.text = config; - }else{ - Ext.apply(bc, config); - } - var btn = new Ext.Button(null, bc); - this.buttons.push(btn); - return btn; - }, - - - startMonitoring : function(){ - if(!this.bound){ - this.bound = true; - Ext.TaskMgr.start({ - run : this.bindHandler, - interval : this.monitorPoll || 200, - scope: this - }); - } - }, - - - stopMonitoring : function(){ - this.bound = false; - }, - - // private - bindHandler : function(){ - if(!this.bound){ - return false; // stops binding - } - var valid = true; - this.items.each(function(f){ - if(!f.isValid(true)){ - valid = false; - return false; - } - }); - for(var i = 0, len = this.buttons.length; i < len; i++){ - var btn = this.buttons[i]; - if(btn.formBind === true && btn.disabled === valid){ - btn.setDisabled(!valid); - } - } - this.fireEvent('clientvalidation', this, valid); - } -}); - - -// back compat -Ext.Form = Ext.form.Form; - - -// define the action interface -Ext.form.Action = function(form, options){ - this.form = form; - this.options = options || {}; -}; - -Ext.form.Action.CLIENT_INVALID = 'client'; -Ext.form.Action.SERVER_INVALID = 'server'; -Ext.form.Action.CONNECT_FAILURE = 'connect'; -Ext.form.Action.LOAD_FAILURE = 'load'; - -Ext.form.Action.prototype = { - type : 'default', - failureType : undefined, - response : undefined, - result : undefined, - - // interface method - run : function(options){ - - }, - - // interface method - success : function(response){ - - }, - - // interface method - handleResponse : function(response){ - - }, - - // default connection failure - failure : function(response){ - this.response = response; - this.failureType = Ext.form.Action.CONNECT_FAILURE; - this.form.afterAction(this, false); - }, - - processResponse : function(response){ - this.response = response; - if(!response.responseText){ - return true; - } - this.result = this.handleResponse(response); - return this.result; - }, - - // utility functions used internally - getUrl : function(appendParams){ - var url = this.options.url || this.form.url || this.form.el.dom.action; - if(appendParams){ - var p = this.getParams(); - if(p){ - url += (url.indexOf('?') != -1 ? '&' : '?') + p; - } - } - return url; - }, - - getMethod : function(){ - return (this.options.method || this.form.method || this.form.el.dom.method || 'POST').toUpperCase(); - }, - - getParams : function(){ - var bp = this.form.baseParams; - var p = this.options.params; - if(p){ - if(typeof p == "object"){ - p = Ext.urlEncode(Ext.applyIf(p, bp)); - }else if(typeof p == 'string' && bp){ - p += '&' + Ext.urlEncode(bp); - } - }else if(bp){ - p = Ext.urlEncode(bp); - } - return p; - }, - - createCallback : function(){ - return { - success: this.success, - failure: this.failure, - scope: this, - timeout: (this.form.timeout*1000), - upload: this.form.fileUpload ? this.success : undefined - }; - } -}; - -Ext.form.Action.Submit = function(form, options){ - Ext.form.Action.Submit.superclass.constructor.call(this, form, options); -}; - -Ext.extend(Ext.form.Action.Submit, Ext.form.Action, { - type : 'submit', - - run : function(){ - var o = this.options; - var isPost = this.getMethod() == 'POST'; - if(o.clientValidation === false || this.form.isValid()){ - Ext.lib.Ajax.formRequest( - this.form.el.dom, - this.getUrl(!isPost), - this.createCallback(), - isPost ? this.getParams() : null, this.form.fileUpload, Ext.SSL_SECURE_URL); - - }else if (o.clientValidation !== false){ // client validation failed - this.failureType = Ext.form.Action.CLIENT_INVALID; - this.form.afterAction(this, false); - } - }, - - success : function(response){ - var result = this.processResponse(response); - if(result === true || result.success){ - this.form.afterAction(this, true); - return; - } - if(result.errors){ - this.form.markInvalid(result.errors); - this.failureType = Ext.form.Action.SERVER_INVALID; - } - this.form.afterAction(this, false); - }, - - handleResponse : function(response){ - if(this.form.errorReader){ - var rs = this.form.errorReader.read(response); - var errors = []; - if(rs.records){ - for(var i = 0, len = rs.records.length; i < len; i++) { - var r = rs.records[i]; - errors[i] = r.data; - } - } - if(errors.length < 1){ - errors = null; - } - return { - success : rs.success, - errors : errors - }; - } - return Ext.decode(response.responseText); - } -}); - - -Ext.form.Action.Load = function(form, options){ - Ext.form.Action.Load.superclass.constructor.call(this, form, options); - this.reader = this.form.reader; -}; - -Ext.extend(Ext.form.Action.Load, Ext.form.Action, { - type : 'load', - - run : function(){ - Ext.lib.Ajax.request( - this.getMethod(), - this.getUrl(false), - this.createCallback(), - this.getParams()); - }, - - success : function(response){ - var result = this.processResponse(response); - if(result === true || !result.success || !result.data){ - this.failureType = Ext.form.Action.LOAD_FAILURE; - this.form.afterAction(this, false); - return; - } - this.form.clearInvalid(); - this.form.setValues(result.data); - this.form.afterAction(this, true); - }, - - handleResponse : function(response){ - if(this.form.reader){ - var rs = this.form.reader.read(response); - var data = rs.records && rs.records[0] ? rs.records[0].data : null; - return { - success : rs.success, - data : data - }; - } - return Ext.decode(response.responseText); - } -}); - -Ext.form.Action.ACTION_TYPES = { - 'load' : Ext.form.Action.Load, - 'submit' : Ext.form.Action.Submit -}; - - -Ext.form.Layout = function(config){ - Ext.form.Layout.superclass.constructor.call(this, config); - this.stack = []; -}; - -Ext.extend(Ext.form.Layout, Ext.Component, { - - - - - - clear : true, - - labelSeparator : ':', - - hideLabels : false, - - // private - defaultAutoCreate : {tag: 'div', cls: 'x-form-ct'}, - - // private - onRender : function(ct, position){ - if(this.el){ // from markup - this.el = Ext.get(this.el); - }else { // generate - var cfg = this.getAutoCreate(); - this.el = ct.createChild(cfg, position); - } - if(this.style){ - this.el.applyStyles(this.style); - } - if(this.labelAlign){ - this.el.addClass('x-form-label-'+this.labelAlign); - } - if(this.hideLabels){ - this.labelStyle = "display:none"; - this.elementStyle = "padding-left:0;"; - }else{ - if(typeof this.labelWidth == 'number'){ - this.labelStyle = "width:"+this.labelWidth+"px;"; - this.elementStyle = "padding-left:"+((this.labelWidth+(typeof this.labelPad == 'number' ? this.labelPad : 5))+'px')+";"; - } - if(this.labelAlign == 'top'){ - this.labelStyle = "width:auto;"; - this.elementStyle = "padding-left:0;"; - } - } - var stack = this.stack; - var slen = stack.length; - if(slen > 0){ - if(!this.fieldTpl){ - var t = new Ext.Template( - '<div class="x-form-item {5}">', - '<label for="{0}" style="{2}">{1}{4}</label>', - '<div class="x-form-element" id="x-form-el-{0}" style="{3}">', - '</div>', - '</div><div class="x-form-clear-left"></div>' - ); - t.disableFormats = true; - t.compile(); - Ext.form.Layout.prototype.fieldTpl = t; - } - for(var i = 0; i < slen; i++) { - if(stack[i].isFormField){ - this.renderField(stack[i]); - }else{ - this.renderComponent(stack[i]); - } - } - } - if(this.clear){ - this.el.createChild({cls:'x-form-clear'}); - } - }, - - // private - renderField : function(f){ - this.fieldTpl.append(this.el, [ - f.id, f.fieldLabel, - f.labelStyle||this.labelStyle||'', - this.elementStyle||'', - typeof f.labelSeparator == 'undefined' ? this.labelSeparator : f.labelSeparator, - f.itemCls||this.itemCls||'' - ]); - }, - - // private - renderComponent : function(c){ - c.render(this.el); - } -}); - - -Ext.form.Column = function(config){ - Ext.form.Column.superclass.constructor.call(this, config); -}; - -Ext.extend(Ext.form.Column, Ext.form.Layout, { - - - - // private - defaultAutoCreate : {tag: 'div', cls: 'x-form-ct x-form-column'}, - - // private - onRender : function(ct, position){ - Ext.form.Column.superclass.onRender.call(this, ct, position); - if(this.width){ - this.el.setWidth(this.width); - } - } -}); - - -Ext.form.FieldSet = function(config){ - Ext.form.FieldSet.superclass.constructor.call(this, config); -}; - -Ext.extend(Ext.form.FieldSet, Ext.form.Layout, { - - - - // private - defaultAutoCreate : {tag: 'fieldset', cn: {tag:'legend'}}, - - // private - onRender : function(ct, position){ - Ext.form.FieldSet.superclass.onRender.call(this, ct, position); - if(this.legend){ - this.setLegend(this.legend); - } - }, - - // private - setLegend : function(text){ - if(this.rendered){ - this.el.child('legend').update(text); - } - } -}); - -Ext.form.VTypes = function(){ - // closure these in so they are only created once. - var alpha = /^[a-zA-Z_]+$/; - var alphanum = /^[a-zA-Z0-9_]+$/; - var email = /^([\w]+)(.[\w]+)*@([\w-]+\.){1,5}([A-Za-z]){2,4}$/; - var url = /(((https?)|(ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i; - - // All these messages and functions are configurable - return { - - 'email' : function(v){ - return email.test(v); - }, - - 'emailText' : 'This field should be an e-mail address in the format "user@domain.com"', - - 'emailMask' : /[a-z0-9_\.\-@]/i, - - - 'url' : function(v){ - return url.test(v); - }, - - 'urlText' : 'This field should be a URL in the format "http:/'+'/www.domain.com"', - - - 'alpha' : function(v){ - return alpha.test(v); - }, - - 'alphaText' : 'This field should only contain letters and _', - - 'alphaMask' : /[a-z_]/i, - - - 'alphanum' : function(v){ - return alphanum.test(v); - }, - - 'alphanumText' : 'This field should only contain letters, numbers and _', - - 'alphanumMask' : /[a-z0-9_]/i - }; -}(); diff --git a/lib/web/extjs/package/form/form.js b/lib/web/extjs/package/form/form.js deleted file mode 100644 index a28f8c57681f17a6545a65af78f04e783b72aa1b..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/form/form.js +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.form.Field=function(config){Ext.form.Field.superclass.constructor.call(this,config);};Ext.extend(Ext.form.Field,Ext.BoxComponent,{invalidClass:"x-form-invalid",invalidText:"The value in this field is invalid",focusClass:"x-form-focus",validationEvent:"keyup",validateOnBlur:true,validationDelay:250,defaultAutoCreate:{tag:"input",type:"text",size:"20",autocomplete:"off"},fieldClass:"x-form-field",msgTarget:'qtip',msgFx:'normal',inputType:undefined,isFormField:true,hasFocus:false,value:undefined,initComponent:function(){Ext.form.Field.superclass.initComponent.call(this);this.addEvents({focus:true,blur:true,specialkey:true,change:true,invalid:true,valid:true});},getName:function(){return this.rendered&&this.el.dom.name?this.el.dom.name:(this.hiddenName||'');},applyTo:function(target){this.allowDomMove=false;this.el=Ext.get(target);this.render(this.el.dom.parentNode);return this;},onRender:function(ct,position){Ext.form.Field.superclass.onRender.call(this,ct,position);if(!this.el){var cfg=this.getAutoCreate();if(!cfg.name){cfg.name=this.name||this.id;} -if(this.inputType){cfg.type=this.inputType;} -if(this.tabIndex!==undefined){cfg.tabIndex=this.tabIndex;} -this.el=ct.createChild(cfg,position);} -var type=this.el.dom.type;if(type){if(type=='password'){type='text';} -this.el.addClass('x-form-'+type);} -if(this.readOnly){this.el.dom.readOnly=true;} -this.el.addClass([this.fieldClass,this.cls]);this.initValue();},initValue:function(){if(this.value!==undefined){this.setValue(this.value);}else if(this.el.dom.value.length>0){this.setValue(this.el.dom.value);}},isDirty:function(){if(this.disabled){return false;} -return String(this.getValue())!==String(this.originalValue);},afterRender:function(){Ext.form.Field.superclass.afterRender.call(this);this.initEvents();},fireKey:function(e){if(e.isNavKeyPress()){this.fireEvent("specialkey",this,e);}},reset:function(){this.setValue(this.originalValue);this.clearInvalid();},initEvents:function(){this.el.on(Ext.isIE?"keydown":"keypress",this.fireKey,this);this.el.on("focus",this.onFocus,this);this.el.on("blur",this.onBlur,this);this.originalValue=this.getValue();},onFocus:function(){if(!Ext.isOpera){this.el.addClass(this.focusClass);} -this.hasFocus=true;this.startValue=this.getValue();this.fireEvent("focus",this);},onBlur:function(){this.el.removeClass(this.focusClass);this.hasFocus=false;if(this.validationEvent!==false&&this.validateOnBlur&&this.validationEvent!="blur"){this.validate();} -var v=this.getValue();if(v!=this.startValue){this.fireEvent('change',this,v,this.startValue);} -this.fireEvent("blur",this);},isValid:function(preventMark){if(this.disabled){return true;} -var restore=this.preventMark;this.preventMark=preventMark===true;var v=this.validateValue(this.getRawValue());this.preventMark=restore;return v;},validate:function(){if(this.disabled||this.validateValue(this.getRawValue())){this.clearInvalid();return true;} -return false;},validateValue:function(value){return true;},markInvalid:function(msg){if(!this.rendered||this.preventMark){return;} -this.el.addClass(this.invalidClass);msg=msg||this.invalidText;switch(this.msgTarget){case'qtip':this.el.dom.qtip=msg;this.el.dom.qclass='x-form-invalid-tip';break;case'title':this.el.dom.title=msg;break;case'under':if(!this.errorEl){var elp=this.el.findParent('.x-form-element',5,true);this.errorEl=elp.createChild({cls:'x-form-invalid-msg'});this.errorEl.setWidth(elp.getWidth(true)-20);} -this.errorEl.update(msg);Ext.form.Field.msgFx[this.msgFx].show(this.errorEl,this);break;case'side':if(!this.errorIcon){var elp=this.el.findParent('.x-form-element',5,true);this.errorIcon=elp.createChild({cls:'x-form-invalid-icon'});} -this.alignErrorIcon();this.errorIcon.dom.qtip=msg;this.errorIcon.dom.qclass='x-form-invalid-tip';this.errorIcon.show();break;default:var t=Ext.getDom(this.msgTarget);t.innerHTML=msg;t.style.display=this.msgDisplay;break;} -this.fireEvent('invalid',this,msg);},alignErrorIcon:function(){this.errorIcon.alignTo(this.el,'tl-tr',[2,0]);},clearInvalid:function(){if(!this.rendered||this.preventMark){return;} -this.el.removeClass(this.invalidClass);switch(this.msgTarget){case'qtip':this.el.dom.qtip='';break;case'title':this.el.dom.title='';break;case'under':if(this.errorEl){Ext.form.Field.msgFx[this.msgFx].hide(this.errorEl,this);} -break;case'side':if(this.errorIcon){this.errorIcon.dom.qtip='';this.errorIcon.hide();} -break;default:var t=Ext.getDom(this.msgTarget);t.innerHTML='';t.style.display='none';break;} -this.fireEvent('valid',this);},getRawValue:function(){return this.el.getValue();},getValue:function(){var v=this.el.getValue();if(v==this.emptyText||v===undefined){v='';} -return v;},setRawValue:function(v){return this.el.dom.value=(v===null||v===undefined?'':v);},setValue:function(v){this.value=v;if(this.rendered){this.el.dom.value=(v===null||v===undefined?'':v);this.validate();}},adjustSize:function(w,h){var s=Ext.form.Field.superclass.adjustSize.call(this,w,h);s.width=this.adjustWidth(this.el.dom.tagName,s.width);return s;},adjustWidth:function(tag,w){tag=tag.toLowerCase();if(typeof w=='number'&&Ext.isStrict&&!Ext.isSafari){if(Ext.isIE&&(tag=='input'||tag=='textarea')){if(tag=='input'){return w+2;} -if(tag='textarea'){return w-2;}}else if(Ext.isGecko&&tag=='textarea'){return w-6;}else if(Ext.isOpera){if(tag=='input'){return w+2;} -if(tag='textarea'){return w-2;}}} -return w;}});Ext.form.Field.msgFx={normal:{show:function(msgEl,f){msgEl.setDisplayed('block');},hide:function(msgEl,f){msgEl.setDisplayed(false).update('');}},slide:{show:function(msgEl,f){msgEl.slideIn('t',{stopFx:true});},hide:function(msgEl,f){msgEl.slideOut('t',{stopFx:true,useDisplay:true});}},slideRight:{show:function(msgEl,f){msgEl.fixDisplay();msgEl.alignTo(f.el,'tl-tr');msgEl.slideIn('l',{stopFx:true});},hide:function(msgEl,f){msgEl.slideOut('l',{stopFx:true,useDisplay:true});}}}; - -Ext.form.TextField=function(config){Ext.form.TextField.superclass.constructor.call(this,config);this.addEvents({autosize:true});};Ext.extend(Ext.form.TextField,Ext.form.Field,{grow:false,growMin:30,growMax:800,vtype:null,maskRe:null,disableKeyFilter:false,allowBlank:true,minLength:0,maxLength:Number.MAX_VALUE,minLengthText:"The minimum length for this field is {0}",maxLengthText:"The maximum length for this field is {0}",selectOnFocus:false,blankText:"This field is required",validator:null,regex:null,regexText:"",emptyText:null,emptyClass:'x-form-empty-field',initEvents:function(){Ext.form.TextField.superclass.initEvents.call(this);if(this.validationEvent=='keyup'){this.validationTask=new Ext.util.DelayedTask(this.validate,this);this.el.on('keyup',this.filterValidation,this);} -else if(this.validationEvent!==false){this.el.on(this.validationEvent,this.validate,this,{buffer:this.validationDelay});} -if(this.selectOnFocus||this.emptyText){this.on("focus",this.preFocus,this);if(this.emptyText){this.on('blur',this.postBlur,this);this.applyEmptyText();}} -if(this.maskRe||(this.vtype&&this.disableKeyFilter!==true&&(this.maskRe=Ext.form.VTypes[this.vtype+'Mask']))){this.el.on("keypress",this.filterKeys,this);} -if(this.grow){this.el.on("keyup",this.onKeyUp,this,{buffer:50});this.el.on("click",this.autoSize,this);}},filterValidation:function(e){if(!e.isNavKeyPress()){this.validationTask.delay(this.validationDelay);}},onKeyUp:function(e){if(!e.isNavKeyPress()){this.autoSize();}},reset:function(){Ext.form.TextField.superclass.reset.call(this);this.applyEmptyText();},applyEmptyText:function(){if(this.rendered&&this.emptyText&&this.getRawValue().length<1){this.setRawValue(this.emptyText);this.el.addClass(this.emptyClass);}},preFocus:function(){if(this.emptyText){if(this.getRawValue()==this.emptyText){this.setRawValue('');} -this.el.removeClass(this.emptyClass);} -if(this.selectOnFocus){this.el.dom.select();}},postBlur:function(){this.applyEmptyText();},filterKeys:function(e){var k=e.getKey();if(!Ext.isIE&&(e.isNavKeyPress()||k==e.BACKSPACE||(k==e.DELETE&&e.button==-1))){return;} -if(Ext.isIE&&(k==e.BACKSPACE||k==e.DELETE||e.isNavKeyPress()||k==e.HOME||k==e.END)){return;} -var c=e.getCharCode();if(!this.maskRe.test(String.fromCharCode(c)||'')){e.stopEvent();}},setValue:function(v){if(this.emptyText&&v!==undefined&&v!==null&&v!==''){this.el.removeClass(this.emptyClass);} -Ext.form.TextField.superclass.setValue.apply(this,arguments);},validateValue:function(value){if(value.length<1||value===this.emptyText){if(this.allowBlank){this.clearInvalid();return true;}else{this.markInvalid(this.blankText);return false;}} -if(value.length<this.minLength){this.markInvalid(String.format(this.minLengthText,this.minLength));return false;} -if(value.length>this.maxLength){this.markInvalid(String.format(this.maxLengthText,this.maxLength));return false;} -if(this.vtype){var vt=Ext.form.VTypes;if(!vt[this.vtype](value,this)){this.markInvalid(this.vtypeText||vt[this.vtype+'Text']);return false;}} -if(typeof this.validator=="function"){var msg=this.validator(value);if(msg!==true){this.markInvalid(msg);return false;}} -if(this.regex&&!this.regex.test(value)){this.markInvalid(this.regexText);return false;} -return true;},selectText:function(start,end){var v=this.getRawValue();if(v.length>0){start=start===undefined?0:start;end=end===undefined?v.length:end;var d=this.el.dom;if(d.setSelectionRange){d.setSelectionRange(start,end);}else if(d.createTextRange){var range=d.createTextRange();range.moveStart("character",start);range.moveEnd("character",v.length-end);range.select();}}},autoSize:function(){if(!this.grow||!this.rendered){return;} -if(!this.metrics){this.metrics=Ext.util.TextMetrics.createInstance(this.el);} -var el=this.el;var v=el.dom.value+" ";var w=Math.min(this.growMax,Math.max(this.metrics.getWidth(v)+10,this.growMin));this.el.setWidth(w);this.fireEvent("autosize",this,w);}}); - -Ext.form.TriggerField=function(config){Ext.form.TriggerField.superclass.constructor.call(this,config);this.mimicing=false;this.on('disable',this.disableWrapper,this);this.on('enable',this.enableWrapper,this);};Ext.extend(Ext.form.TriggerField,Ext.form.TextField,{defaultAutoCreate:{tag:"input",type:"text",size:"16",autocomplete:"off"},hideTrigger:false,autoSize:Ext.emptyFn,monitorTab:true,deferHeight:true,onResize:function(w,h){Ext.form.TriggerField.superclass.onResize.apply(this,arguments);if(typeof w=='number'){this.el.setWidth(this.adjustWidth('input',w-this.trigger.getWidth()));}},adjustSize:Ext.BoxComponent.prototype.adjustSize,getResizeEl:function(){return this.wrap;},getPositionEl:function(){return this.wrap;},alignErrorIcon:function(){this.errorIcon.alignTo(this.wrap,'tl-tr',[2,0]);},onRender:function(ct,position){Ext.form.TriggerField.superclass.onRender.call(this,ct,position);this.wrap=this.el.wrap({cls:"x-form-field-wrap"});this.trigger=this.wrap.createChild(this.triggerConfig||{tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"x-form-trigger "+this.triggerClass});if(this.hideTrigger){this.trigger.setDisplayed(false);} -this.initTrigger();if(!this.width){this.wrap.setWidth(this.el.getWidth()+this.trigger.getWidth());}},initTrigger:function(){this.trigger.on("click",this.onTriggerClick,this,{preventDefault:true});this.trigger.addClassOnOver('x-form-trigger-over');this.trigger.addClassOnClick('x-form-trigger-click');},onDestroy:function(){if(this.trigger){this.trigger.removeAllListeners();this.trigger.remove();} -if(this.wrap){this.wrap.remove();} -Ext.form.TriggerField.superclass.onDestroy.call(this);},onFocus:function(){Ext.form.TriggerField.superclass.onFocus.call(this);if(!this.mimicing){this.wrap.addClass('x-trigger-wrap-focus');this.mimicing=true;Ext.get(Ext.isIE?document.body:document).on("mousedown",this.mimicBlur,this);if(this.monitorTab){this.el.on("keydown",this.checkTab,this);}}},checkTab:function(e){if(e.getKey()==e.TAB){this.triggerBlur();}},onBlur:function(){},mimicBlur:function(e,t){if(!this.wrap.contains(t)&&this.validateBlur()){this.triggerBlur();}},triggerBlur:function(){this.mimicing=false;Ext.get(Ext.isIE?document.body:document).un("mousedown",this.mimicBlur);if(this.monitorTab){this.el.un("keydown",this.checkTab,this);} -this.beforeBlur();this.wrap.removeClass('x-trigger-wrap-focus');Ext.form.TriggerField.superclass.onBlur.call(this);},beforeBlur:Ext.emptyFn,validateBlur:function(e,t){return true;},disableWrapper:function(){if(this.wrap){this.wrap.addClass('x-item-disabled');}},enableWrapper:function(){if(this.wrap){this.wrap.removeClass('x-item-disabled');}},onShow:function(){if(this.wrap){this.wrap.dom.style.display='';this.wrap.dom.style.visibility='visible';}},onHide:function(){this.wrap.dom.style.display='none';},onTriggerClick:Ext.emptyFn});Ext.form.TwinTriggerField=Ext.extend(Ext.form.TriggerField,{initComponent:function(){Ext.form.TwinTriggerField.superclass.initComponent.call(this);this.triggerConfig={tag:'span',cls:'x-form-twin-triggers',cn:[{tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"x-form-trigger "+this.trigger1Class},{tag:"img",src:Ext.BLANK_IMAGE_URL,cls:"x-form-trigger "+this.trigger2Class}]};},getTrigger:function(index){return this.triggers[index];},initTrigger:function(){var ts=this.trigger.select('.x-form-trigger',true);this.wrap.setStyle('overflow','hidden');var triggerField=this;ts.each(function(t,all,index){t.hide=function(){var w=triggerField.wrap.getWidth();this.dom.style.display='none';triggerField.el.setWidth(w-triggerField.trigger.getWidth());};t.show=function(){var w=triggerField.wrap.getWidth();this.dom.style.display='';triggerField.el.setWidth(w-triggerField.trigger.getWidth());};var triggerIndex='Trigger'+(index+1);if(this['hide'+triggerIndex]){t.dom.style.display='none';} -t.on("click",this['on'+triggerIndex+'Click'],this,{preventDefault:true});t.addClassOnOver('x-form-trigger-over');t.addClassOnClick('x-form-trigger-click');},this);this.triggers=ts.elements;},onTrigger1Click:Ext.emptyFn,onTrigger2Click:Ext.emptyFn}); - -Ext.form.TextArea=function(config){Ext.form.TextArea.superclass.constructor.call(this,config);if(this.minHeight!==undefined){this.growMin=this.minHeight;} -if(this.maxHeight!==undefined){this.growMax=this.maxHeight;}};Ext.extend(Ext.form.TextArea,Ext.form.TextField,{growMin:60,growMax:1000,preventScrollbars:false,onRender:function(ct,position){if(!this.el){this.defaultAutoCreate={tag:"textarea",style:"width:300px;height:60px;",autocomplete:"off"};} -Ext.form.TextArea.superclass.onRender.call(this,ct,position);if(this.grow){this.textSizeEl=Ext.DomHelper.append(document.body,{tag:"pre",cls:"x-form-grow-sizer"});if(this.preventScrollbars){this.el.setStyle("overflow","hidden");} -this.el.setHeight(this.growMin);}},onDestroy:function(){if(this.textSizeEl){this.textSizeEl.remove();} -Ext.form.TextArea.superclass.onDestroy.call(this);},onKeyUp:function(e){if(!e.isNavKeyPress()||e.getKey()==e.ENTER){this.autoSize();}},autoSize:function(){if(!this.grow||!this.textSizeEl){return;} -var el=this.el;var v=el.dom.value;var ts=this.textSizeEl;Ext.fly(ts).setWidth(this.el.getWidth());if(v.length<1){v="  ";}else{if(Ext.isIE){v=v.replace(/\n/g,'<p> </p>');} -v+=" \n ";} -ts.innerHTML=v;var h=Math.min(this.growMax,Math.max(ts.offsetHeight,this.growMin));if(h!=this.lastHeight){this.lastHeight=h;this.el.setHeight(h);this.fireEvent("autosize",this,h);}},setValue:function(v){Ext.form.TextArea.superclass.setValue.call(this,v);this.autoSize();}}); - -Ext.form.NumberField=function(config){Ext.form.NumberField.superclass.constructor.call(this,config);};Ext.extend(Ext.form.NumberField,Ext.form.TextField,{fieldClass:"x-form-field x-form-num-field",allowDecimals:true,decimalSeparator:".",decimalPrecision:2,allowNegative:true,minValue:Number.NEGATIVE_INFINITY,maxValue:Number.MAX_VALUE,minText:"The minimum value for this field is {0}",maxText:"The maximum value for this field is {0}",nanText:"{0} is not a valid number",initEvents:function(){Ext.form.NumberField.superclass.initEvents.call(this);var allowed="0123456789";if(this.allowDecimals){allowed+=this.decimalSeparator;} -if(this.allowNegative){allowed+="-";} -var keyPress=function(e){var k=e.getKey();if(!Ext.isIE&&(e.isNavKeyPress()||k==e.BACKSPACE||(k==e.DELETE&&e.button==-1))){return;} -var c=e.getCharCode();if(allowed.indexOf(String.fromCharCode(c))===-1){e.stopEvent();}};this.el.on("keypress",keyPress,this);},validateValue:function(value){if(!Ext.form.NumberField.superclass.validateValue.call(this,value)){return false;} -if(value.length<1){return true;} -value=String(value).replace(this.decimalSeparator,".");if(isNaN(value)){this.markInvalid(String.format(this.nanText,value));return false;} -var num=this.parseValue(value);if(num<this.minValue){this.markInvalid(String.format(this.minText,this.minValue));return false;} -if(num>this.maxValue){this.markInvalid(String.format(this.maxText,this.maxValue));return false;} -return true;},parseValue:function(value){return parseFloat(String(value).replace(this.decimalSeparator,"."));},fixPrecision:function(value){if(!this.allowDecimals||this.decimalPrecision==-1||isNaN(value)||value==0||!value){return value;} -var scale=Math.pow(10,this.decimalPrecision+1);var fixed=this.decimalPrecisionFcn(value*scale);fixed=this.decimalPrecisionFcn(fixed/10);return fixed/(scale/10);},decimalPrecisionFcn:function(v){return Math.floor(v);}}); - -Ext.form.DateField=function(config){Ext.form.DateField.superclass.constructor.call(this,config);if(typeof this.minValue=="string")this.minValue=this.parseDate(this.minValue);if(typeof this.maxValue=="string")this.maxValue=this.parseDate(this.maxValue);this.ddMatch=null;if(this.disabledDates){var dd=this.disabledDates;var re="(?:";for(var i=0;i<dd.length;i++){re+=dd[i];if(i!=dd.length-1)re+="|";} -this.ddMatch=new RegExp(re+")");}};Ext.extend(Ext.form.DateField,Ext.form.TriggerField,{format:"m/d/y",altFormats:"m/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d",disabledDays:null,disabledDaysText:"Disabled",disabledDates:null,disabledDatesText:"Disabled",minValue:null,maxValue:null,minText:"The date in this field must be after {0}",maxText:"The date in this field must be before {0}",invalidText:"{0} is not a valid date - it must be in the format {1}",triggerClass:'x-form-date-trigger',defaultAutoCreate:{tag:"input",type:"text",size:"10",autocomplete:"off"},validateValue:function(value){value=this.formatDate(value);if(!Ext.form.DateField.superclass.validateValue.call(this,value)){return false;} -if(value.length<1){return true;} -var svalue=value;value=this.parseDate(value);if(!value){this.markInvalid(String.format(this.invalidText,svalue,this.format));return false;} -var time=value.getTime();if(this.minValue&&time<this.minValue.getTime()){this.markInvalid(String.format(this.minText,this.formatDate(this.minValue)));return false;} -if(this.maxValue&&time>this.maxValue.getTime()){this.markInvalid(String.format(this.maxText,this.formatDate(this.maxValue)));return false;} -if(this.disabledDays){var day=value.getDay();for(var i=0;i<this.disabledDays.length;i++){if(day===this.disabledDays[i]){this.markInvalid(this.disabledDaysText);return false;}}} -var fvalue=this.formatDate(value);if(this.ddMatch&&this.ddMatch.test(fvalue)){this.markInvalid(String.format(this.disabledDatesText,fvalue));return false;} -return true;},validateBlur:function(){return!this.menu||!this.menu.isVisible();},getValue:function(){return this.parseDate(Ext.form.DateField.superclass.getValue.call(this))||"";},setValue:function(date){Ext.form.DateField.superclass.setValue.call(this,this.formatDate(this.parseDate(date)));},parseDate:function(value){if(!value||value instanceof Date){return value;} -var v=Date.parseDate(value,this.format);if(!v&&this.altFormats){if(!this.altFormatsArray){this.altFormatsArray=this.altFormats.split("|");} -for(var i=0,len=this.altFormatsArray.length;i<len&&!v;i++){v=Date.parseDate(value,this.altFormatsArray[i]);}} -return v;},formatDate:function(date){return(!date||!(date instanceof Date))?date:date.dateFormat(this.format);},menuListeners:{select:function(m,d){this.setValue(d);},show:function(){this.onFocus();},hide:function(){this.focus.defer(10,this);var ml=this.menuListeners;this.menu.un("select",ml.select,this);this.menu.un("show",ml.show,this);this.menu.un("hide",ml.hide,this);}},onTriggerClick:function(){if(this.disabled){return;} -if(this.menu==null){this.menu=new Ext.menu.DateMenu();} -Ext.apply(this.menu.picker,{minDate:this.minValue,maxDate:this.maxValue,disabledDatesRE:this.ddMatch,disabledDatesText:this.disabledDatesText,disabledDays:this.disabledDays,disabledDaysText:this.disabledDaysText,format:this.format,minText:String.format(this.minText,this.formatDate(this.minValue)),maxText:String.format(this.maxText,this.formatDate(this.maxValue))});this.menu.on(Ext.apply({},this.menuListeners,{scope:this}));this.menu.picker.setValue(this.getValue()||new Date());this.menu.show(this.el,"tl-bl?");},beforeBlur:function(){var v=this.parseDate(this.getRawValue());if(v){this.setValue(v);}}}); - -Ext.form.Checkbox=function(config){Ext.form.Checkbox.superclass.constructor.call(this,config);this.addEvents({check:true});};Ext.extend(Ext.form.Checkbox,Ext.form.Field,{focusClass:"x-form-check-focus",fieldClass:"x-form-field",checked:false,defaultAutoCreate:{tag:"input",type:'checkbox',autocomplete:"off"},boxLabel:undefined,onResize:function(){Ext.form.Checkbox.superclass.onResize.apply(this,arguments);if(!this.boxLabel){this.el.alignTo(this.wrap,'c-c');}},initEvents:function(){Ext.form.Checkbox.superclass.initEvents.call(this);this.el.on("click",this.onClick,this);this.el.on("change",this.onClick,this);},getResizeEl:function(){return this.wrap;},getPositionEl:function(){return this.wrap;},onRender:function(ct,position){Ext.form.Checkbox.superclass.onRender.call(this,ct,position);if(this.inputValue!==undefined){this.el.dom.value=this.inputValue;} -this.wrap=this.el.wrap({cls:"x-form-check-wrap"});if(this.boxLabel){this.wrap.createChild({tag:'label',htmlFor:this.el.id,cls:'x-form-cb-label',html:this.boxLabel});} -if(this.checked){this.setValue(true);}},initValue:Ext.emptyFn,getValue:function(){if(this.rendered){return this.el.dom.checked;} -return false;},onClick:function(){if(this.el.dom.checked!=this.checked){this.setValue(this.el.dom.checked);}},setValue:function(v){this.checked=(v===true||v==='true'||v=='1');if(this.el&&this.el.dom){this.el.dom.checked=this.checked;} -this.fireEvent("check",this,this.checked);}}); - -Ext.form.Radio=function(){Ext.form.Radio.superclass.constructor.apply(this,arguments);};Ext.extend(Ext.form.Radio,Ext.form.Checkbox,{inputType:'radio',getGroupValue:function(){return this.el.up('form').child('input[name='+this.el.dom.name+']:checked',true).value;}}); - -Ext.form.ComboBox=function(config){Ext.form.ComboBox.superclass.constructor.call(this,config);this.addEvents({'expand':true,'collapse':true,'beforeselect':true,'select':true,'beforequery':true});if(this.transform){var s=Ext.getDom(this.transform);if(!this.hiddenName){this.hiddenName=s.name;} -if(!this.store){this.mode='local';var d=[],opts=s.options;for(var i=0,len=opts.length;i<len;i++){var o=opts[i];var value=(Ext.isIE?o.getAttributeNode('value').specified:o.hasAttribute('value'))?o.value:o.text;if(o.selected){this.value=value;} -d.push([value,o.text]);} -this.store=new Ext.data.SimpleStore({'id':0,fields:['value','text'],data:d});this.valueField='value';this.displayField='text';} -s.name=Ext.id();if(!this.lazyRender){this.target=true;this.el=Ext.DomHelper.insertBefore(s,this.autoCreate||this.defaultAutoCreate);s.parentNode.removeChild(s);this.render(this.el.parentNode);}else{s.parentNode.removeChild(s);}} -this.selectedIndex=-1;if(this.mode=='local'){if(config.queryDelay===undefined){this.queryDelay=10;} -if(config.minChars===undefined){this.minChars=0;}}};Ext.extend(Ext.form.ComboBox,Ext.form.TriggerField,{defaultAutoCreate:{tag:"input",type:"text",size:"24",autocomplete:"off"},listWidth:undefined,displayField:undefined,valueField:undefined,hiddenName:undefined,listClass:'',selectedClass:'x-combo-selected',triggerClass:'x-form-arrow-trigger',shadow:'sides',listAlign:'tl-bl?',maxHeight:300,triggerAction:'query',minChars:4,typeAhead:false,queryDelay:500,pageSize:0,selectOnFocus:false,queryParam:'query',loadingText:'Loading...',resizable:false,handleHeight:8,editable:true,allQuery:'',mode:'remote',minListWidth:70,forceSelection:false,typeAheadDelay:250,valueNotFoundText:undefined,onRender:function(ct,position){Ext.form.ComboBox.superclass.onRender.call(this,ct,position);if(this.hiddenName){this.hiddenField=this.el.insertSibling({tag:'input',type:'hidden',name:this.hiddenName,id:this.hiddenName},'before',true);this.hiddenField.value=this.hiddenValue!==undefined?this.hiddenValue:this.value!==undefined?this.value:'';this.el.dom.removeAttribute('name');} -if(Ext.isGecko){this.el.dom.setAttribute('autocomplete','off');} -var cls='x-combo-list';this.list=new Ext.Layer({shadow:this.shadow,cls:[cls,this.listClass].join(' '),constrain:false});var lw=this.listWidth||Math.max(this.wrap.getWidth(),this.minListWidth);this.list.setWidth(lw);this.list.swallowEvent('mousewheel');this.assetHeight=0;if(this.title){this.header=this.list.createChild({cls:cls+'-hd',html:this.title});this.assetHeight+=this.header.getHeight();} -this.innerList=this.list.createChild({cls:cls+'-inner'});this.innerList.on('mouseover',this.onViewOver,this);this.innerList.on('mousemove',this.onViewMove,this);this.innerList.setWidth(lw-this.list.getFrameWidth('lr')) -if(this.pageSize){this.footer=this.list.createChild({cls:cls+'-ft'});this.pageTb=new Ext.PagingToolbar(this.footer,this.store,{pageSize:this.pageSize});this.assetHeight+=this.footer.getHeight();} -if(!this.tpl){this.tpl='<div class="'+cls+'-item">{'+this.displayField+'}</div>';} -this.view=new Ext.View(this.innerList,this.tpl,{singleSelect:true,store:this.store,selectedClass:this.selectedClass});this.view.on('click',this.onViewClick,this);this.store.on('beforeload',this.onBeforeLoad,this);this.store.on('load',this.onLoad,this);this.store.on('loadexception',this.collapse,this);if(this.resizable){this.resizer=new Ext.Resizable(this.list,{pinned:true,handles:'se'});this.resizer.on('resize',function(r,w,h){this.maxHeight=h-this.handleHeight-this.list.getFrameWidth('tb')-this.assetHeight;this.listWidth=w;this.restrictHeight();},this);this[this.pageSize?'footer':'innerList'].setStyle('margin-bottom',this.handleHeight+'px');} -if(!this.editable){this.editable=true;this.setEditable(false);}},initEvents:function(){Ext.form.ComboBox.superclass.initEvents.call(this);this.keyNav=new Ext.KeyNav(this.el,{"up":function(e){this.inKeyMode=true;this.selectPrev();},"down":function(e){if(!this.isExpanded()){this.onTriggerClick();}else{this.inKeyMode=true;this.selectNext();}},"enter":function(e){this.onViewClick();},"esc":function(e){this.collapse();},"tab":function(e){this.onViewClick(false);return true;},scope:this,doRelay:function(foo,bar,hname){if(hname=='down'||this.scope.isExpanded()){return Ext.KeyNav.prototype.doRelay.apply(this,arguments);} -return true;}});this.queryDelay=Math.max(this.queryDelay||10,this.mode=='local'?10:250);this.dqTask=new Ext.util.DelayedTask(this.initQuery,this);if(this.typeAhead){this.taTask=new Ext.util.DelayedTask(this.onTypeAhead,this);} -if(this.editable!==false){this.el.on("keyup",this.onKeyUp,this);} -if(this.forceSelection){this.on('blur',this.doForce,this);}},onDestroy:function(){if(this.view){this.view.setStore(null);this.view.el.removeAllListeners();this.view.el.remove();this.view.purgeListeners();} -if(this.list){this.list.destroy();} -if(this.store){this.store.un('beforeload',this.onBeforeLoad,this);this.store.un('load',this.onLoad,this);this.store.un('loadexception',this.collapse,this);} -Ext.form.ComboBox.superclass.onDestroy.call(this);},fireKey:function(e){if(e.isNavKeyPress()&&!this.list.isVisible()){this.fireEvent("specialkey",this,e);}},onResize:function(w,h){Ext.form.ComboBox.superclass.onResize.apply(this,arguments);if(this.list&&this.listWidth===undefined){var lw=Math.max(w,this.minListWidth);this.list.setWidth(lw);this.innerList.setWidth(lw-this.list.getFrameWidth('lr'))}},setEditable:function(value){if(value==this.editable){return;} -this.editable=value;if(!value){this.el.dom.setAttribute('readOnly',true);this.el.on('mousedown',this.onTriggerClick,this);this.el.addClass('x-combo-noedit');}else{this.el.dom.setAttribute('readOnly',false);this.el.un('mousedown',this.onTriggerClick,this);this.el.removeClass('x-combo-noedit');}},onBeforeLoad:function(){if(!this.hasFocus){return;} -this.innerList.update(this.loadingText?'<div class="loading-indicator">'+this.loadingText+'</div>':'');this.restrictHeight();this.selectedIndex=-1;},onLoad:function(){if(!this.hasFocus){return;} -if(this.store.getCount()>0){this.expand();this.restrictHeight();if(this.lastQuery==this.allQuery){if(this.editable){this.el.dom.select();} -if(!this.selectByValue(this.value,true)){this.select(0,true);}}else{this.selectNext();if(this.typeAhead&&this.lastKey!=Ext.EventObject.BACKSPACE&&this.lastKey!=Ext.EventObject.DELETE){this.taTask.delay(this.typeAheadDelay);}}}else{this.onEmptyResults();}},onTypeAhead:function(){if(this.store.getCount()>0){var r=this.store.getAt(0);var newValue=r.data[this.displayField];var len=newValue.length;var selStart=this.getRawValue().length;if(selStart!=len){this.setRawValue(newValue);this.selectText(selStart,newValue.length);}}},onSelect:function(record,index){if(this.fireEvent('beforeselect',this,record,index)!==false){this.setValue(record.data[this.valueField||this.displayField]);this.collapse();this.fireEvent('select',this,record,index);}},getValue:function(){if(this.valueField){return typeof this.value!='undefined'?this.value:'';}else{return Ext.form.ComboBox.superclass.getValue.call(this);}},clearValue:function(){if(this.hiddenField){this.hiddenField.value='';} -this.setRawValue('');this.lastSelectionText='';},setValue:function(v){var text=v;if(this.valueField){var r=this.findRecord(this.valueField,v);if(r){text=r.data[this.displayField];}else if(this.valueNotFoundText!==undefined){text=this.valueNotFoundText;}} -this.lastSelectionText=text;if(this.hiddenField){this.hiddenField.value=v;} -Ext.form.ComboBox.superclass.setValue.call(this,text);this.value=v;},findRecord:function(prop,value){var record;if(this.store.getCount()>0){this.store.each(function(r){if(r.data[prop]==value){record=r;return false;}});} -return record;},onViewMove:function(e,t){this.inKeyMode=false;},onViewOver:function(e,t){if(this.inKeyMode){return;} -var item=this.view.findItemFromChild(t);if(item){var index=this.view.indexOf(item);this.select(index,false);}},onViewClick:function(doFocus){var index=this.view.getSelectedIndexes()[0];var r=this.store.getAt(index);if(r){this.onSelect(r,index);} -if(doFocus!==false){this.el.focus();}},restrictHeight:function(){this.innerList.dom.style.height='';var inner=this.innerList.dom;var h=Math.max(inner.clientHeight,inner.offsetHeight,inner.scrollHeight);this.innerList.setHeight(h<this.maxHeight?'auto':this.maxHeight);this.list.beginUpdate();this.list.setHeight(this.innerList.getHeight()+this.list.getFrameWidth('tb')+(this.resizable?this.handleHeight:0)+this.assetHeight);this.list.alignTo(this.el,this.listAlign);this.list.endUpdate();},onEmptyResults:function(){this.collapse();},isExpanded:function(){return this.list.isVisible();},selectByValue:function(v,scrollIntoView){if(v!==undefined&&v!==null){var r=this.findRecord(this.valueField||this.displayField,v);if(r){this.select(this.store.indexOf(r),scrollIntoView);return true;}} -return false;},select:function(index,scrollIntoView){this.selectedIndex=index;this.view.select(index);if(scrollIntoView!==false){var el=this.view.getNode(index);if(el){this.innerList.scrollChildIntoView(el,false);}}},selectNext:function(){var ct=this.store.getCount();if(ct>0){if(this.selectedIndex==-1){this.select(0);}else if(this.selectedIndex<ct-1){this.select(this.selectedIndex+1);}}},selectPrev:function(){var ct=this.store.getCount();if(ct>0){if(this.selectedIndex==-1){this.select(0);}else if(this.selectedIndex!=0){this.select(this.selectedIndex-1);}}},onKeyUp:function(e){if(this.editable!==false&&!e.isSpecialKey()){this.lastKey=e.getKey();this.dqTask.delay(this.queryDelay);}},validateBlur:function(){return!this.list||!this.list.isVisible();},initQuery:function(){this.doQuery(this.getRawValue());},doForce:function(){if(this.el.dom.value.length>0){this.el.dom.value=this.lastSelectionText===undefined?'':this.lastSelectionText;this.applyEmptyText();}},doQuery:function(q,forceAll){if(q===undefined||q===null){q='';} -var qe={query:q,forceAll:forceAll,combo:this,cancel:false};if(this.fireEvent('beforequery',qe)===false||qe.cancel){return false;} -q=qe.query;forceAll=qe.forceAll;if(forceAll===true||(q.length>=this.minChars)){if(this.lastQuery!=q){this.lastQuery=q;if(this.mode=='local'){this.selectedIndex=-1;if(forceAll){this.store.clearFilter();}else{this.store.filter(this.displayField,q);} -this.onLoad();}else{this.store.baseParams[this.queryParam]=q;this.store.load({params:this.getParams(q)});this.expand();}}else{this.selectedIndex=-1;this.onLoad();}}},getParams:function(q){var p={};if(this.pageSize){p.start=0;p.limit=this.pageSize;} -return p;},collapse:function(){if(!this.isExpanded()){return;} -this.list.hide();Ext.get(document).un('mousedown',this.collapseIf,this);this.fireEvent('collapse',this);},collapseIf:function(e){if(!e.within(this.wrap)&&!e.within(this.list)){this.collapse();}},expand:function(){if(this.isExpanded()||!this.hasFocus){return;} -this.list.alignTo(this.el,this.listAlign);this.list.show();Ext.get(document).on('mousedown',this.collapseIf,this);this.fireEvent('expand',this);},onTriggerClick:function(){if(this.disabled){return;} -if(this.isExpanded()){this.collapse();this.el.focus();}else{this.hasFocus=true;if(this.triggerAction=='all'){this.doQuery(this.allQuery,true);}else{this.doQuery(this.getRawValue());} -this.el.focus();}}}); - -Ext.Editor=function(field,config){Ext.Editor.superclass.constructor.call(this,config);this.field=field;this.addEvents({"beforestartedit":true,"startedit":true,"beforecomplete":true,"complete":true,"specialkey":true});};Ext.extend(Ext.Editor,Ext.Component,{value:"",alignment:"c-c?",shadow:"frame",constrain:false,updateEl:false,onRender:function(ct,position){this.el=new Ext.Layer({shadow:this.shadow,cls:"x-editor",parentEl:ct,shim:this.shim,shadowOffset:4,id:this.id});this.el.setStyle("overflow",Ext.isGecko?"auto":"hidden");if(this.field.msgTarget!='title'){this.field.msgTarget='qtip';} -this.field.render(this.el);if(Ext.isGecko){this.field.el.dom.setAttribute('autocomplete','off');} -this.field.show();this.field.on("blur",this.onBlur,this);this.relayEvents(this.field,["specialkey"]);if(this.field.grow){this.field.on("autosize",this.el.sync,this.el,{delay:1});}},startEdit:function(el,value){if(this.editing){this.completeEdit();} -this.boundEl=Ext.get(el);var v=value!==undefined?value:this.boundEl.dom.innerHTML;if(!this.rendered){this.render(this.parentEl||document.body);} -if(this.fireEvent("beforestartedit",this,this.boundEl,v)===false){return;} -this.startValue=v;this.field.setValue(v);if(this.autoSize){var sz=this.boundEl.getSize();switch(this.autoSize){case"width":this.setSize(sz.width,"");break;case"height":this.setSize("",sz.height);break;default:this.setSize(sz.width,sz.height);}} -this.el.alignTo(this.boundEl,this.alignment);this.editing=true;if(Ext.QuickTips){Ext.QuickTips.disable();} -this.show();},setSize:function(w,h){this.field.setSize(w,h);if(this.el){this.el.sync();}},realign:function(){this.el.alignTo(this.boundEl,this.alignment);},completeEdit:function(remainVisible){if(!this.editing){return;} -var v=this.getValue();if(this.revertInvalid!==false&&!this.field.isValid()){v=this.startValue;this.cancelEdit(true);} -if(String(v)==String(this.startValue)&&this.ignoreNoChange){this.editing=false;this.hide();return;} -if(this.fireEvent("beforecomplete",this,v,this.startValue)!==false){this.editing=false;if(this.updateEl&&this.boundEl){this.boundEl.update(v);} -if(remainVisible!==true){this.hide();} -this.fireEvent("complete",this,v,this.startValue);}},onShow:function(){this.el.show();if(this.hideEl!==false){this.boundEl.hide();} -this.field.show();if(Ext.isIE&&!this.fixIEFocus){this.fixIEFocus=true;this.deferredFocus.defer(50,this);}else{this.field.focus();} -this.fireEvent("startedit",this.boundEl,this.startValue);},deferredFocus:function(){if(this.editing){this.field.focus();}},cancelEdit:function(remainVisible){if(this.editing){this.setValue(this.startValue);if(remainVisible!==true){this.hide();}}},onBlur:function(){if(this.allowBlur!==true&&this.editing){this.completeEdit();}},onHide:function(){if(this.editing){this.completeEdit();return;} -this.field.blur();if(this.field.collapse){this.field.collapse();} -this.el.hide();if(this.hideEl!==false){this.boundEl.show();} -if(Ext.QuickTips){Ext.QuickTips.enable();}},setValue:function(v){this.field.setValue(v);},getValue:function(){return this.field.getValue();}}); - -Ext.form.BasicForm=function(el,config){Ext.apply(this,config);this.items=new Ext.util.MixedCollection(false,function(o){return o.id||(o.id=Ext.id());});this.addEvents({beforeaction:true,actionfailed:true,actioncomplete:true});if(el){this.initEl(el);} -Ext.form.BasicForm.superclass.constructor.call(this);};Ext.extend(Ext.form.BasicForm,Ext.util.Observable,{timeout:30,activeAction:null,trackResetOnLoad:false,waitMsgTarget:undefined,initEl:function(el){this.el=Ext.get(el);this.id=this.el.id||Ext.id();this.el.on('submit',this.onSubmit,this);this.el.addClass('x-form');},onSubmit:function(e){e.stopEvent();},isValid:function(){var valid=true;this.items.each(function(f){if(!f.validate()){valid=false;}});return valid;},isDirty:function(){var dirty=false;this.items.each(function(f){if(f.isDirty()){dirty=true;return false;}});return dirty;},doAction:function(action,options){if(typeof action=='string'){action=new Ext.form.Action.ACTION_TYPES[action](this,options);} -if(this.fireEvent('beforeaction',this,action)!==false){this.beforeAction(action);action.run.defer(100,action);} -return this;},submit:function(options){this.doAction('submit',options);return this;},load:function(options){this.doAction('load',options);return this;},updateRecord:function(record){record.beginEdit();var fs=record.fields;fs.each(function(f){var field=this.findField(f.name);if(field){record.set(f.name,field.getValue());}},this);record.endEdit();return this;},loadRecord:function(record){this.setValues(record.data);return this;},beforeAction:function(action){var o=action.options;if(o.waitMsg){if(this.waitMsgTarget===true){this.el.mask(o.waitMsg,'x-mask-loading');}else if(this.waitMsgTarget){this.waitMsgTarget=Ext.get(this.waitMsgTarget);this.waitMsgTarget.mask(o.waitMsg,'x-mask-loading');}else{Ext.MessageBox.wait(o.waitMsg,o.waitTitle||this.waitTitle||'Please Wait...');}}},afterAction:function(action,success){this.activeAction=null;var o=action.options;if(o.waitMsg){if(this.waitMsgTarget===true){this.el.unmask();}else if(this.waitMsgTarget){this.waitMsgTarget.unmask();}else{Ext.MessageBox.updateProgress(1);Ext.MessageBox.hide();}} -if(success){if(o.reset){this.reset();} -Ext.callback(o.success,o.scope,[this,action]);this.fireEvent('actioncomplete',this,action);}else{Ext.callback(o.failure,o.scope,[this,action]);this.fireEvent('actionfailed',this,action);}},findField:function(id){var field=this.items.get(id);if(!field){this.items.each(function(f){if(f.isFormField&&(f.dataIndex==id||f.id==id||f.getName()==id)){field=f;return false;}});} -return field||null;},markInvalid:function(errors){if(errors instanceof Array){for(var i=0,len=errors.length;i<len;i++){var fieldError=errors[i];var f=this.findField(fieldError.id);if(f){f.markInvalid(fieldError.msg);}}}else{var field,id;for(id in errors){if(typeof errors[id]!='function'&&(field=this.findField(id))){field.markInvalid(errors[id]);}}} -return this;},setValues:function(values){if(values instanceof Array){for(var i=0,len=values.length;i<len;i++){var v=values[i];var f=this.findField(v.id);if(f){f.setValue(v.value);if(this.trackResetOnLoad){f.originalValue=f.getValue();}}}}else{var field,id;for(id in values){if(typeof values[id]!='function'&&(field=this.findField(id))){field.setValue(values[id]);if(this.trackResetOnLoad){field.originalValue=field.getValue();}}}} -return this;},getValues:function(asString){var fs=Ext.lib.Ajax.serializeForm(this.el.dom);if(asString===true){return fs;} -return Ext.urlDecode(fs);},clearInvalid:function(){this.items.each(function(f){f.clearInvalid();});return this;},reset:function(){this.items.each(function(f){f.reset();});return this;},add:function(){this.items.addAll(Array.prototype.slice.call(arguments,0));return this;},remove:function(field){this.items.remove(field);return this;},render:function(){this.items.each(function(f){if(f.isFormField&&!f.rendered&&document.getElementById(f.id)){f.applyTo(f.id);}});return this;},applyToFields:function(o){this.items.each(function(f){Ext.apply(f,o);});return this;},applyIfToFields:function(o){this.items.each(function(f){Ext.applyIf(f,o);});return this;}});Ext.BasicForm=Ext.form.BasicForm; - -Ext.form.Form=function(config){Ext.form.Form.superclass.constructor.call(this,null,config);this.url=this.url||this.action;if(!this.root){this.root=new Ext.form.Layout(Ext.applyIf({id:Ext.id()},config));} -this.active=this.root;this.buttons=[];this.addEvents({clientvalidation:true});};Ext.extend(Ext.form.Form,Ext.form.BasicForm,{buttonAlign:'center',minButtonWidth:75,labelAlign:'left',monitorValid:false,monitorPoll:200,column:function(c){var col=new Ext.form.Column(c);this.start(col);if(arguments.length>1){this.add.apply(this,Array.prototype.slice.call(arguments,1));this.end();} -return col;},fieldset:function(c){var fs=new Ext.form.FieldSet(c);this.start(fs);if(arguments.length>1){this.add.apply(this,Array.prototype.slice.call(arguments,1));this.end();} -return fs;},container:function(c){var l=new Ext.form.Layout(c);this.start(l);if(arguments.length>1){this.add.apply(this,Array.prototype.slice.call(arguments,1));this.end();} -return l;},start:function(c){Ext.applyIf(c,{'labelAlign':this.active.labelAlign,'labelWidth':this.active.labelWidth,'itemCls':this.active.itemCls});this.active.stack.push(c);c.ownerCt=this.active;this.active=c;return this;},end:function(){if(this.active==this.root){return this;} -this.active=this.active.ownerCt;return this;},add:function(){this.active.stack.push.apply(this.active.stack,arguments);var r=[];for(var i=0,a=arguments,len=a.length;i<len;i++){if(a[i].isFormField){r.push(a[i]);}} -if(r.length>0){Ext.form.Form.superclass.add.apply(this,r);} -return this;},render:function(ct){ct=Ext.get(ct);var o=this.autoCreate||{tag:'form',method:this.method||'POST',id:this.id||Ext.id()};this.initEl(ct.createChild(o));this.root.render(this.el);this.items.each(function(f){f.render('x-form-el-'+f.id);});if(this.buttons.length>0){var tb=this.el.createChild({cls:'x-form-btns-ct',cn:{cls:"x-form-btns x-form-btns-"+this.buttonAlign,html:'<table cellspacing="0"><tbody><tr></tr></tbody></table><div class="x-clear"></div>'}},null,true);var tr=tb.getElementsByTagName('tr')[0];for(var i=0,len=this.buttons.length;i<len;i++){var b=this.buttons[i];var td=document.createElement('td');td.className='x-form-btn-td';b.render(tr.appendChild(td));}} -if(this.monitorValid){this.startMonitoring();} -return this;},addButton:function(config,handler,scope){var bc={handler:handler,scope:scope,minWidth:this.minButtonWidth,hideParent:true};if(typeof config=="string"){bc.text=config;}else{Ext.apply(bc,config);} -var btn=new Ext.Button(null,bc);this.buttons.push(btn);return btn;},startMonitoring:function(){if(!this.bound){this.bound=true;Ext.TaskMgr.start({run:this.bindHandler,interval:this.monitorPoll||200,scope:this});}},stopMonitoring:function(){this.bound=false;},bindHandler:function(){if(!this.bound){return false;} -var valid=true;this.items.each(function(f){if(!f.isValid(true)){valid=false;return false;}});for(var i=0,len=this.buttons.length;i<len;i++){var btn=this.buttons[i];if(btn.formBind===true&&btn.disabled===valid){btn.setDisabled(!valid);}} -this.fireEvent('clientvalidation',this,valid);}});Ext.Form=Ext.form.Form; - -Ext.form.Action=function(form,options){this.form=form;this.options=options||{};};Ext.form.Action.CLIENT_INVALID='client';Ext.form.Action.SERVER_INVALID='server';Ext.form.Action.CONNECT_FAILURE='connect';Ext.form.Action.LOAD_FAILURE='load';Ext.form.Action.prototype={type:'default',failureType:undefined,response:undefined,result:undefined,run:function(options){},success:function(response){},handleResponse:function(response){},failure:function(response){this.response=response;this.failureType=Ext.form.Action.CONNECT_FAILURE;this.form.afterAction(this,false);},processResponse:function(response){this.response=response;if(!response.responseText){return true;} -this.result=this.handleResponse(response);return this.result;},getUrl:function(appendParams){var url=this.options.url||this.form.url||this.form.el.dom.action;if(appendParams){var p=this.getParams();if(p){url+=(url.indexOf('?')!=-1?'&':'?')+p;}} -return url;},getMethod:function(){return(this.options.method||this.form.method||this.form.el.dom.method||'POST').toUpperCase();},getParams:function(){var bp=this.form.baseParams;var p=this.options.params;if(p){if(typeof p=="object"){p=Ext.urlEncode(Ext.applyIf(p,bp));}else if(typeof p=='string'&&bp){p+='&'+Ext.urlEncode(bp);}}else if(bp){p=Ext.urlEncode(bp);} -return p;},createCallback:function(){return{success:this.success,failure:this.failure,scope:this,timeout:(this.form.timeout*1000),upload:this.form.fileUpload?this.success:undefined};}};Ext.form.Action.Submit=function(form,options){Ext.form.Action.Submit.superclass.constructor.call(this,form,options);};Ext.extend(Ext.form.Action.Submit,Ext.form.Action,{type:'submit',run:function(){var o=this.options;var isPost=this.getMethod()=='POST';if(o.clientValidation===false||this.form.isValid()){Ext.lib.Ajax.formRequest(this.form.el.dom,this.getUrl(!isPost),this.createCallback(),isPost?this.getParams():null,this.form.fileUpload,Ext.SSL_SECURE_URL);}else if(o.clientValidation!==false){this.failureType=Ext.form.Action.CLIENT_INVALID;this.form.afterAction(this,false);}},success:function(response){var result=this.processResponse(response);if(result===true||result.success){this.form.afterAction(this,true);return;} -if(result.errors){this.form.markInvalid(result.errors);this.failureType=Ext.form.Action.SERVER_INVALID;} -this.form.afterAction(this,false);},handleResponse:function(response){if(this.form.errorReader){var rs=this.form.errorReader.read(response);var errors=[];if(rs.records){for(var i=0,len=rs.records.length;i<len;i++){var r=rs.records[i];errors[i]=r.data;}} -if(errors.length<1){errors=null;} -return{success:rs.success,errors:errors};} -return Ext.decode(response.responseText);}});Ext.form.Action.Load=function(form,options){Ext.form.Action.Load.superclass.constructor.call(this,form,options);this.reader=this.form.reader;};Ext.extend(Ext.form.Action.Load,Ext.form.Action,{type:'load',run:function(){Ext.lib.Ajax.request(this.getMethod(),this.getUrl(false),this.createCallback(),this.getParams());},success:function(response){var result=this.processResponse(response);if(result===true||!result.success||!result.data){this.failureType=Ext.form.Action.LOAD_FAILURE;this.form.afterAction(this,false);return;} -this.form.clearInvalid();this.form.setValues(result.data);this.form.afterAction(this,true);},handleResponse:function(response){if(this.form.reader){var rs=this.form.reader.read(response);var data=rs.records&&rs.records[0]?rs.records[0].data:null;return{success:rs.success,data:data};} -return Ext.decode(response.responseText);}});Ext.form.Action.ACTION_TYPES={'load':Ext.form.Action.Load,'submit':Ext.form.Action.Submit}; - -Ext.form.Layout=function(config){Ext.form.Layout.superclass.constructor.call(this,config);this.stack=[];};Ext.extend(Ext.form.Layout,Ext.Component,{clear:true,labelSeparator:':',hideLabels:false,defaultAutoCreate:{tag:'div',cls:'x-form-ct'},onRender:function(ct,position){if(this.el){this.el=Ext.get(this.el);}else{var cfg=this.getAutoCreate();this.el=ct.createChild(cfg,position);} -if(this.style){this.el.applyStyles(this.style);} -if(this.labelAlign){this.el.addClass('x-form-label-'+this.labelAlign);} -if(this.hideLabels){this.labelStyle="display:none";this.elementStyle="padding-left:0;";}else{if(typeof this.labelWidth=='number'){this.labelStyle="width:"+this.labelWidth+"px;";this.elementStyle="padding-left:"+((this.labelWidth+(typeof this.labelPad=='number'?this.labelPad:5))+'px')+";";} -if(this.labelAlign=='top'){this.labelStyle="width:auto;";this.elementStyle="padding-left:0;";}} -var stack=this.stack;var slen=stack.length;if(slen>0){if(!this.fieldTpl){var t=new Ext.Template('<div class="x-form-item {5}">','<label for="{0}" style="{2}">{1}{4}</label>','<div class="x-form-element" id="x-form-el-{0}" style="{3}">','</div>','</div><div class="x-form-clear-left"></div>');t.disableFormats=true;t.compile();Ext.form.Layout.prototype.fieldTpl=t;} -for(var i=0;i<slen;i++){if(stack[i].isFormField){this.renderField(stack[i]);}else{this.renderComponent(stack[i]);}}} -if(this.clear){this.el.createChild({cls:'x-form-clear'});}},renderField:function(f){this.fieldTpl.append(this.el,[f.id,f.fieldLabel,f.labelStyle||this.labelStyle||'',this.elementStyle||'',typeof f.labelSeparator=='undefined'?this.labelSeparator:f.labelSeparator,f.itemCls||this.itemCls||'']);},renderComponent:function(c){c.render(this.el);}});Ext.form.Column=function(config){Ext.form.Column.superclass.constructor.call(this,config);};Ext.extend(Ext.form.Column,Ext.form.Layout,{defaultAutoCreate:{tag:'div',cls:'x-form-ct x-form-column'},onRender:function(ct,position){Ext.form.Column.superclass.onRender.call(this,ct,position);if(this.width){this.el.setWidth(this.width);}}});Ext.form.FieldSet=function(config){Ext.form.FieldSet.superclass.constructor.call(this,config);};Ext.extend(Ext.form.FieldSet,Ext.form.Layout,{defaultAutoCreate:{tag:'fieldset',cn:{tag:'legend'}},onRender:function(ct,position){Ext.form.FieldSet.superclass.onRender.call(this,ct,position);if(this.legend){this.setLegend(this.legend);}},setLegend:function(text){if(this.rendered){this.el.child('legend').update(text);}}}); - -Ext.form.VTypes=function(){var alpha=/^[a-zA-Z_]+$/;var alphanum=/^[a-zA-Z0-9_]+$/;var email=/^([\w]+)(.[\w]+)*@([\w-]+\.){1,5}([A-Za-z]){2,4}$/;var url=/(((https?)|(ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i;return{'email':function(v){return email.test(v);},'emailText':'This field should be an e-mail address in the format "user@domain.com"','emailMask':/[a-z0-9_\.\-@]/i,'url':function(v){return url.test(v);},'urlText':'This field should be a URL in the format "http:/'+'/www.domain.com"','alpha':function(v){return alpha.test(v);},'alphaText':'This field should only contain letters and _','alphaMask':/[a-z_]/i,'alphanum':function(v){return alphanum.test(v);},'alphanumText':'This field should only contain letters, numbers and _','alphanumMask':/[a-z0-9_]/i};}(); diff --git a/lib/web/extjs/package/grid/edit-grid-debug.js b/lib/web/extjs/package/grid/edit-grid-debug.js deleted file mode 100644 index 4aa768b694159729cdb0bfbc06a7e9b8856c6973..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/grid/edit-grid-debug.js +++ /dev/null @@ -1,325 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.grid.EditorGrid = function(container, config){ - Ext.grid.EditorGrid.superclass.constructor.call(this, container, config); - this.getGridEl().addClass("xedit-grid"); - - if(!this.selModel){ - this.selModel = new Ext.grid.CellSelectionModel(); - } - - this.activeEditor = null; - - this.addEvents({ - - "beforeedit" : true, - - "afteredit" : true, - - "validateedit" : true - }); - this.on("bodyscroll", this.stopEditing, this); - this.on(this.clicksToEdit == 1 ? "cellclick" : "celldblclick", this.onCellDblClick, this); -}; - -Ext.extend(Ext.grid.EditorGrid, Ext.grid.Grid, { - isEditor : true, - clicksToEdit: 2, - trackMouseOver: false, // causes very odd FF errors - - onCellDblClick : function(g, row, col){ - this.startEditing(row, col); - }, - - onEditComplete : function(ed, value, startValue){ - this.editing = false; - this.activeEditor = null; - ed.un("specialkey", this.selModel.onEditorKey, this.selModel); - if(String(value) != String(startValue)){ - var r = ed.record; - var field = this.colModel.getDataIndex(ed.col); - var e = { - grid: this, - record: r, - field: field, - originalValue: startValue, - value: value, - row: ed.row, - column: ed.col, - cancel:false - }; - if(this.fireEvent("validateedit", e) !== false && !e.cancel){ - r.set(field, e.value); - delete e.cancel; - this.fireEvent("afteredit", e); - } - } - this.view.focusCell(ed.row, ed.col); - }, - - - startEditing : function(row, col){ - this.stopEditing(); - if(this.colModel.isCellEditable(col, row)){ - this.view.ensureVisible(row, col, true); - var r = this.dataSource.getAt(row); - var field = this.colModel.getDataIndex(col); - var e = { - grid: this, - record: r, - field: field, - value: r.data[field], - row: row, - column: col, - cancel:false - }; - if(this.fireEvent("beforeedit", e) !== false && !e.cancel){ - this.editing = true; - var ed = this.colModel.getCellEditor(col, row); - if(!ed.rendered){ - ed.render(ed.parentEl || document.body); - } - (function(){ // complex but required for focus issues in safari, ie and opera - ed.row = row; - ed.col = col; - ed.record = r; - ed.on("complete", this.onEditComplete, this, {single: true}); - ed.on("specialkey", this.selModel.onEditorKey, this.selModel); - this.activeEditor = ed; - var v = r.data[field]; - ed.startEdit(this.view.getCell(row, col), v); - }).defer(50, this); - } - } - }, - - - stopEditing : function(){ - if(this.activeEditor){ - this.activeEditor.completeEdit(); - } - this.activeEditor = null; - } -}); -// private -// This is a support class used internally by the Grid components -Ext.grid.GridEditor = function(field, config){ - Ext.grid.GridEditor.superclass.constructor.call(this, field, config); - field.monitorTab = false; -}; - -Ext.extend(Ext.grid.GridEditor, Ext.Editor, { - alignment: "tl-tl", - autoSize: "width", - hideEl : false, - cls: "x-small-editor x-grid-editor", - shim:false, - shadow:"frame" -}); -Ext.grid.PropertyRecord = Ext.data.Record.create([ - {name:'name',type:'string'}, 'value' -]); - -Ext.grid.PropertyStore = function(grid, source){ - this.grid = grid; - this.store = new Ext.data.Store({ - recordType : Ext.grid.PropertyRecord - }); - this.store.on('update', this.onUpdate, this); - if(source){ - this.setSource(source); - } - Ext.grid.PropertyStore.superclass.constructor.call(this); -}; -Ext.extend(Ext.grid.PropertyStore, Ext.util.Observable, { - setSource : function(o){ - this.source = o; - this.store.removeAll(); - var data = []; - for(var k in o){ - if(this.isEditableValue(o[k])){ - data.push(new Ext.grid.PropertyRecord({name: k, value: o[k]}, k)); - } - } - this.store.loadRecords({records: data}, {}, true); - }, - - onUpdate : function(ds, record, type){ - if(type == Ext.data.Record.EDIT){ - var v = record.data['value']; - var oldValue = record.modified['value']; - if(this.grid.fireEvent('beforepropertychange', this.source, record.id, v, oldValue) !== false){ - this.source[record.id] = v; - record.commit(); - this.grid.fireEvent('propertychange', this.source, record.id, v, oldValue); - }else{ - record.reject(); - } - } - }, - - getProperty : function(row){ - return this.store.getAt(row); - }, - - isEditableValue: function(val){ - if(val && val instanceof Date){ - return true; - }else if(typeof val == 'object' || typeof val == 'function'){ - return false; - } - return true; - }, - - setValue : function(prop, value){ - this.source[prop] = value; - this.store.getById(prop).set('value', value); - }, - - getSource : function(){ - return this.source; - } -}); - -Ext.grid.PropertyColumnModel = function(grid, store){ - this.grid = grid; - var g = Ext.grid; - g.PropertyColumnModel.superclass.constructor.call(this, [ - {header: this.nameText, sortable: true, dataIndex:'name', id: 'name'}, - {header: this.valueText, resizable:false, dataIndex: 'value', id: 'value'} - ]); - this.store = store; - this.bselect = Ext.DomHelper.append(document.body, { - tag: 'select', style:'display:none', cls: 'x-grid-editor', children: [ - {tag: 'option', value: 'true', html: 'true'}, - {tag: 'option', value: 'false', html: 'false'} - ] - }); - Ext.id(this.bselect); - var f = Ext.form; - this.editors = { - 'date' : new g.GridEditor(new f.DateField({selectOnFocus:true})), - 'string' : new g.GridEditor(new f.TextField({selectOnFocus:true})), - 'number' : new g.GridEditor(new f.NumberField({selectOnFocus:true, style:'text-align:left;'})), - 'boolean' : new g.GridEditor(new f.Field({el:this.bselect,selectOnFocus:true})) - }; - this.renderCellDelegate = this.renderCell.createDelegate(this); - this.renderPropDelegate = this.renderProp.createDelegate(this); -}; - -Ext.extend(Ext.grid.PropertyColumnModel, Ext.grid.ColumnModel, { - nameText : 'Name', - valueText : 'Value', - dateFormat : 'm/j/Y', - renderDate : function(dateVal){ - return dateVal.dateFormat(this.dateFormat); - }, - - renderBool : function(bVal){ - return bVal ? 'true' : 'false'; - }, - - isCellEditable : function(colIndex, rowIndex){ - return colIndex == 1; - }, - - getRenderer : function(col){ - return col == 1 ? - this.renderCellDelegate : this.renderPropDelegate; - }, - - renderProp : function(v){ - return this.getPropertyName(v); - }, - - renderCell : function(val){ - var rv = val; - if(val instanceof Date){ - rv = this.renderDate(val); - }else if(typeof val == 'boolean'){ - rv = this.renderBool(val); - } - return Ext.util.Format.htmlEncode(rv); - }, - - getPropertyName : function(name){ - var pn = this.grid.propertyNames; - return pn && pn[name] ? pn[name] : name; - }, - - getCellEditor : function(colIndex, rowIndex){ - var p = this.store.getProperty(rowIndex); - var n = p.data['name'], val = p.data['value']; - if(this.grid.customEditors[n]){ - return this.grid.customEditors[n]; - } - if(val instanceof Date){ - return this.editors['date']; - }else if(typeof val == 'number'){ - return this.editors['number']; - }else if(typeof val == 'boolean'){ - return this.editors['boolean']; - }else{ - return this.editors['string']; - } - } -}); - -Ext.grid.PropertyGrid = function(container, config){ - config = config || {}; - var store = new Ext.grid.PropertyStore(this); - this.store = store; - var cm = new Ext.grid.PropertyColumnModel(this, store); - store.store.sort('name', 'ASC'); - Ext.grid.PropertyGrid.superclass.constructor.call(this, container, Ext.apply({ - ds: store.store, - cm: cm, - enableColLock:false, - enableColumnMove:false, - stripeRows:false, - trackMouseOver: false, - clicksToEdit:1 - }, config)); - this.getGridEl().addClass('x-props-grid'); - this.lastEditRow = null; - this.on('columnresize', this.onColumnResize, this); - this.addEvents({ - beforepropertychange: true, - propertychange: true - }); - this.customEditors = this.customEditors || {}; -}; -Ext.extend(Ext.grid.PropertyGrid, Ext.grid.EditorGrid, { - render : function(){ - Ext.grid.PropertyGrid.superclass.render.call(this); - this.autoSize.defer(100, this); - }, - - autoSize : function(){ - Ext.grid.PropertyGrid.superclass.autoSize.call(this); - if(this.view){ - this.view.fitColumns(); - } - }, - - onColumnResize : function(){ - this.colModel.setColumnWidth(1, this.container.getWidth(true)-this.colModel.getColumnWidth(0)); - this.autoSize(); - }, - - setSource : function(source){ - this.store.setSource(source); - //this.autoSize(); - }, - - getSource : function(){ - return this.store.getSource(); - } -}); diff --git a/lib/web/extjs/package/grid/edit-grid.js b/lib/web/extjs/package/grid/edit-grid.js deleted file mode 100644 index 373d80b4a0975cdc594ad477f35a62ab0a3cd921..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/grid/edit-grid.js +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.grid.EditorGrid=function(container,config){Ext.grid.EditorGrid.superclass.constructor.call(this,container,config);this.getGridEl().addClass("xedit-grid");if(!this.selModel){this.selModel=new Ext.grid.CellSelectionModel();} -this.activeEditor=null;this.addEvents({"beforeedit":true,"afteredit":true,"validateedit":true});this.on("bodyscroll",this.stopEditing,this);this.on(this.clicksToEdit==1?"cellclick":"celldblclick",this.onCellDblClick,this);};Ext.extend(Ext.grid.EditorGrid,Ext.grid.Grid,{isEditor:true,clicksToEdit:2,trackMouseOver:false,onCellDblClick:function(g,row,col){this.startEditing(row,col);},onEditComplete:function(ed,value,startValue){this.editing=false;this.activeEditor=null;ed.un("specialkey",this.selModel.onEditorKey,this.selModel);if(String(value)!=String(startValue)){var r=ed.record;var field=this.colModel.getDataIndex(ed.col);var e={grid:this,record:r,field:field,originalValue:startValue,value:value,row:ed.row,column:ed.col,cancel:false};if(this.fireEvent("validateedit",e)!==false&&!e.cancel){r.set(field,e.value);delete e.cancel;this.fireEvent("afteredit",e);}} -this.view.focusCell(ed.row,ed.col);},startEditing:function(row,col){this.stopEditing();if(this.colModel.isCellEditable(col,row)){this.view.ensureVisible(row,col,true);var r=this.dataSource.getAt(row);var field=this.colModel.getDataIndex(col);var e={grid:this,record:r,field:field,value:r.data[field],row:row,column:col,cancel:false};if(this.fireEvent("beforeedit",e)!==false&&!e.cancel){this.editing=true;var ed=this.colModel.getCellEditor(col,row);if(!ed.rendered){ed.render(ed.parentEl||document.body);} -(function(){ed.row=row;ed.col=col;ed.record=r;ed.on("complete",this.onEditComplete,this,{single:true});ed.on("specialkey",this.selModel.onEditorKey,this.selModel);this.activeEditor=ed;var v=r.data[field];ed.startEdit(this.view.getCell(row,col),v);}).defer(50,this);}}},stopEditing:function(){if(this.activeEditor){this.activeEditor.completeEdit();} -this.activeEditor=null;}}); - -Ext.grid.GridEditor=function(field,config){Ext.grid.GridEditor.superclass.constructor.call(this,field,config);field.monitorTab=false;};Ext.extend(Ext.grid.GridEditor,Ext.Editor,{alignment:"tl-tl",autoSize:"width",hideEl:false,cls:"x-small-editor x-grid-editor",shim:false,shadow:"frame"}); - -Ext.grid.PropertyRecord=Ext.data.Record.create([{name:'name',type:'string'},'value']);Ext.grid.PropertyStore=function(grid,source){this.grid=grid;this.store=new Ext.data.Store({recordType:Ext.grid.PropertyRecord});this.store.on('update',this.onUpdate,this);if(source){this.setSource(source);} -Ext.grid.PropertyStore.superclass.constructor.call(this);};Ext.extend(Ext.grid.PropertyStore,Ext.util.Observable,{setSource:function(o){this.source=o;this.store.removeAll();var data=[];for(var k in o){if(this.isEditableValue(o[k])){data.push(new Ext.grid.PropertyRecord({name:k,value:o[k]},k));}} -this.store.loadRecords({records:data},{},true);},onUpdate:function(ds,record,type){if(type==Ext.data.Record.EDIT){var v=record.data['value'];var oldValue=record.modified['value'];if(this.grid.fireEvent('beforepropertychange',this.source,record.id,v,oldValue)!==false){this.source[record.id]=v;record.commit();this.grid.fireEvent('propertychange',this.source,record.id,v,oldValue);}else{record.reject();}}},getProperty:function(row){return this.store.getAt(row);},isEditableValue:function(val){if(val&&val instanceof Date){return true;}else if(typeof val=='object'||typeof val=='function'){return false;} -return true;},setValue:function(prop,value){this.source[prop]=value;this.store.getById(prop).set('value',value);},getSource:function(){return this.source;}});Ext.grid.PropertyColumnModel=function(grid,store){this.grid=grid;var g=Ext.grid;g.PropertyColumnModel.superclass.constructor.call(this,[{header:this.nameText,sortable:true,dataIndex:'name',id:'name'},{header:this.valueText,resizable:false,dataIndex:'value',id:'value'}]);this.store=store;this.bselect=Ext.DomHelper.append(document.body,{tag:'select',style:'display:none',cls:'x-grid-editor',children:[{tag:'option',value:'true',html:'true'},{tag:'option',value:'false',html:'false'}]});Ext.id(this.bselect);var f=Ext.form;this.editors={'date':new g.GridEditor(new f.DateField({selectOnFocus:true})),'string':new g.GridEditor(new f.TextField({selectOnFocus:true})),'number':new g.GridEditor(new f.NumberField({selectOnFocus:true,style:'text-align:left;'})),'boolean':new g.GridEditor(new f.Field({el:this.bselect,selectOnFocus:true}))};this.renderCellDelegate=this.renderCell.createDelegate(this);this.renderPropDelegate=this.renderProp.createDelegate(this);};Ext.extend(Ext.grid.PropertyColumnModel,Ext.grid.ColumnModel,{nameText:'Name',valueText:'Value',dateFormat:'m/j/Y',renderDate:function(dateVal){return dateVal.dateFormat(this.dateFormat);},renderBool:function(bVal){return bVal?'true':'false';},isCellEditable:function(colIndex,rowIndex){return colIndex==1;},getRenderer:function(col){return col==1?this.renderCellDelegate:this.renderPropDelegate;},renderProp:function(v){return this.getPropertyName(v);},renderCell:function(val){var rv=val;if(val instanceof Date){rv=this.renderDate(val);}else if(typeof val=='boolean'){rv=this.renderBool(val);} -return Ext.util.Format.htmlEncode(rv);},getPropertyName:function(name){var pn=this.grid.propertyNames;return pn&&pn[name]?pn[name]:name;},getCellEditor:function(colIndex,rowIndex){var p=this.store.getProperty(rowIndex);var n=p.data['name'],val=p.data['value'];if(this.grid.customEditors[n]){return this.grid.customEditors[n];} -if(val instanceof Date){return this.editors['date'];}else if(typeof val=='number'){return this.editors['number'];}else if(typeof val=='boolean'){return this.editors['boolean'];}else{return this.editors['string'];}}});Ext.grid.PropertyGrid=function(container,config){config=config||{};var store=new Ext.grid.PropertyStore(this);this.store=store;var cm=new Ext.grid.PropertyColumnModel(this,store);store.store.sort('name','ASC');Ext.grid.PropertyGrid.superclass.constructor.call(this,container,Ext.apply({ds:store.store,cm:cm,enableColLock:false,enableColumnMove:false,stripeRows:false,trackMouseOver:false,clicksToEdit:1},config));this.getGridEl().addClass('x-props-grid');this.lastEditRow=null;this.on('columnresize',this.onColumnResize,this);this.addEvents({beforepropertychange:true,propertychange:true});this.customEditors=this.customEditors||{};};Ext.extend(Ext.grid.PropertyGrid,Ext.grid.EditorGrid,{render:function(){Ext.grid.PropertyGrid.superclass.render.call(this);this.autoSize.defer(100,this);},autoSize:function(){Ext.grid.PropertyGrid.superclass.autoSize.call(this);if(this.view){this.view.fitColumns();}},onColumnResize:function(){this.colModel.setColumnWidth(1,this.container.getWidth(true)-this.colModel.getColumnWidth(0));this.autoSize();},setSource:function(source){this.store.setSource(source);},getSource:function(){return this.store.getSource();}}); diff --git a/lib/web/extjs/package/grid/grid.js b/lib/web/extjs/package/grid/grid.js deleted file mode 100644 index ce93d8471f7e37461d98c1a5763368438d1fde5d..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/grid/grid.js +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.grid.Grid=function(container,config){this.container=Ext.get(container);this.container.update("");this.container.setStyle("overflow","hidden");this.container.addClass('x-grid-container');this.id=this.container.id;Ext.apply(this,config);if(this.ds){this.dataSource=this.ds;delete this.ds;} -if(this.cm){this.colModel=this.cm;delete this.cm;} -if(this.sm){this.selModel=this.sm;delete this.sm;} -if(this.width){this.container.setWidth(this.width);} -if(this.height){this.container.setHeight(this.height);} -this.addEvents({"click":true,"dblclick":true,"contextmenu":true,"mousedown":true,"mouseup":true,"mouseover":true,"mouseout":true,"keypress":true,"keydown":true,"cellclick":true,"celldblclick":true,"rowclick":true,"rowdblclick":true,"headerclick":true,"headerdblclick":true,"rowcontextmenu":true,"cellcontextmenu":true,"headercontextmenu":true,"bodyscroll":true,"columnresize":true,"columnmove":true,"startdrag":true,"enddrag":true,"dragdrop":true,"dragover":true,"dragenter":true,"dragout":true,render:true});Ext.grid.Grid.superclass.constructor.call(this);};Ext.extend(Ext.grid.Grid,Ext.util.Observable,{minColumnWidth:25,autoSizeColumns:false,autoSizeHeaders:true,monitorWindowResize:true,maxRowsToMeasure:0,trackMouseOver:true,enableDragDrop:false,enableColumnMove:true,enableColumnHide:true,enableRowHeightSync:false,stripeRows:true,autoHeight:false,autoExpandColumn:false,autoExpandMin:50,autoExpandMax:1000,view:null,loadMask:false,rendered:false,render:function(){var c=this.container;if((!c.dom.offsetHeight||c.dom.offsetHeight<20)||c.getStyle("height")=="auto"){this.autoHeight=true;} -var view=this.getView();view.init(this);c.on("click",this.onClick,this);c.on("dblclick",this.onDblClick,this);c.on("contextmenu",this.onContextMenu,this);c.on("keydown",this.onKeyDown,this);this.relayEvents(c,["mousedown","mouseup","mouseover","mouseout","keypress"]);this.getSelectionModel().init(this);view.render();if(this.loadMask){this.loadMask=new Ext.LoadMask(this.container,Ext.apply({store:this.dataSource},this.loadMask));} -this.rendered=true;this.fireEvent('render',this);return this;},reconfigure:function(dataSource,colModel){if(this.loadMask){this.loadMask.destroy();this.loadMask=new Ext.LoadMask(this.container,Ext.apply({store:dataSource},this.loadMask));} -this.view.bind(dataSource,colModel);this.dataSource=dataSource;this.colModel=colModel;this.view.refresh(true);},onKeyDown:function(e){this.fireEvent("keydown",e);},destroy:function(removeEl,keepListeners){if(this.loadMask){this.loadMask.destroy();} -var c=this.container;c.removeAllListeners();this.view.destroy();this.colModel.purgeListeners();if(!keepListeners){this.purgeListeners();} -c.update("");if(removeEl===true){c.remove();}},processEvent:function(name,e){this.fireEvent(name,e);var t=e.getTarget();var v=this.view;var header=v.findHeaderIndex(t);if(header!==false){this.fireEvent("header"+name,this,header,e);}else{var row=v.findRowIndex(t);var cell=v.findCellIndex(t);if(row!==false){this.fireEvent("row"+name,this,row,e);if(cell!==false){this.fireEvent("cell"+name,this,row,cell,e);}}}},onClick:function(e){this.processEvent("click",e);},onContextMenu:function(e,t){this.processEvent("contextmenu",e);},onDblClick:function(e){this.processEvent("dblclick",e);},walkCells:function(row,col,step,fn,scope){var cm=this.colModel,clen=cm.getColumnCount();var ds=this.dataSource,rlen=ds.getCount(),first=true;if(step<0){if(col<0){row--;first=false;} -while(row>=0){if(!first){col=clen-1;} -first=false;while(col>=0){if(fn.call(scope||this,row,col,cm)===true){return[row,col];} -col--;} -row--;}}else{if(col>=clen){row++;first=false;} -while(row<rlen){if(!first){col=0;} -first=false;while(col<clen){if(fn.call(scope||this,row,col,cm)===true){return[row,col];} -col++;} -row++;}} -return null;},getSelections:function(){return this.selModel.getSelections();},autoSize:function(){if(this.rendered){this.view.layout();if(this.view.adjustForScroll){this.view.adjustForScroll();}}},getGridEl:function(){return this.container;},stopEditing:function(){},getSelectionModel:function(){if(!this.selModel){this.selModel=new Ext.grid.RowSelectionModel();} -return this.selModel;},getDataSource:function(){return this.dataSource;},getColumnModel:function(){return this.colModel;},getView:function(){if(!this.view){this.view=new Ext.grid.GridView(this.viewConfig);} -return this.view;},getDragDropText:function(){var count=this.selModel.getCount();return String.format(this.ddText,count,count==1?'':'s');}});Ext.grid.Grid.prototype.ddText="{0} selected row{1}"; - -Ext.grid.AbstractGridView=function(){this.grid=null;this.events={"beforerowremoved":true,"beforerowsinserted":true,"beforerefresh":true,"rowremoved":true,"rowsinserted":true,"rowupdated":true,"refresh":true};Ext.grid.AbstractGridView.superclass.constructor.call(this);};Ext.extend(Ext.grid.AbstractGridView,Ext.util.Observable,{rowClass:"x-grid-row",cellClass:"x-grid-cell",tdClass:"x-grid-td",hdClass:"x-grid-hd",splitClass:"x-grid-hd-split",init:function(grid){this.grid=grid;var cid=this.grid.getGridEl().id;this.colSelector="#"+cid+" ."+this.cellClass+"-";this.tdSelector="#"+cid+" ."+this.tdClass+"-";this.hdSelector="#"+cid+" ."+this.hdClass+"-";this.splitSelector="#"+cid+" ."+this.splitClass+"-";},getColumnRenderers:function(){var renderers=[];var cm=this.grid.colModel;var colCount=cm.getColumnCount();for(var i=0;i<colCount;i++){renderers[i]=cm.getRenderer(i);} -return renderers;},getColumnIds:function(){var ids=[];var cm=this.grid.colModel;var colCount=cm.getColumnCount();for(var i=0;i<colCount;i++){ids[i]=cm.getColumnId(i);} -return ids;},getDataIndexes:function(){if(!this.indexMap){this.indexMap=this.buildIndexMap();} -return this.indexMap.colToData;},getColumnIndexByDataIndex:function(dataIndex){if(!this.indexMap){this.indexMap=this.buildIndexMap();} -return this.indexMap.dataToCol[dataIndex];},setCSSStyle:function(colIndex,name,value){var selector="#"+this.grid.id+" .x-grid-col-"+colIndex;Ext.util.CSS.updateRule(selector,name,value);},generateRules:function(cm){var ruleBuf=[];for(var i=0,len=cm.getColumnCount();i<len;i++){var cid=cm.getColumnId(i);ruleBuf.push(this.colSelector,cid," {\n",cm.config[i].css,"}\n",this.tdSelector,cid," {\n}\n",this.hdSelector,cid," {\n}\n",this.splitSelector,cid," {\n}\n");} -return Ext.util.CSS.createStyleSheet(ruleBuf.join(""));}}); - -Ext.grid.GridView=function(config){Ext.grid.GridView.superclass.constructor.call(this);this.el=null;Ext.apply(this,config);};Ext.extend(Ext.grid.GridView,Ext.grid.AbstractGridView,{rowClass:"x-grid-row",cellClass:"x-grid-col",tdClass:"x-grid-td",hdClass:"x-grid-hd",splitClass:"x-grid-split",sortClasses:["sort-asc","sort-desc"],enableMoveAnim:false,hlColor:"C3DAF9",dh:Ext.DomHelper,fly:Ext.Element.fly,css:Ext.util.CSS,borderWidth:1,splitOffset:3,scrollIncrement:22,cellRE:/(?:.*?)x-grid-(?:hd|cell|csplit)-(?:[\d]+)-([\d]+)(?:.*?)/,findRE:/\s?(?:x-grid-hd|x-grid-col|x-grid-csplit)\s/,bind:function(ds,cm){if(this.ds){this.ds.un("load",this.onLoad,this);this.ds.un("datachanged",this.onDataChange);this.ds.un("add",this.onAdd);this.ds.un("remove",this.onRemove);this.ds.un("update",this.onUpdate);this.ds.un("clear",this.onClear);} -if(ds){ds.on("load",this.onLoad,this);ds.on("datachanged",this.onDataChange,this);ds.on("add",this.onAdd,this);ds.on("remove",this.onRemove,this);ds.on("update",this.onUpdate,this);ds.on("clear",this.onClear,this);} -this.ds=ds;if(this.cm){this.cm.un("widthchange",this.onColWidthChange,this);this.cm.un("headerchange",this.onHeaderChange,this);this.cm.un("hiddenchange",this.onHiddenChange,this);this.cm.un("columnmoved",this.onColumnMove,this);this.cm.un("columnlockchange",this.onColumnLock,this);} -if(cm){this.generateRules(cm);cm.on("widthchange",this.onColWidthChange,this);cm.on("headerchange",this.onHeaderChange,this);cm.on("hiddenchange",this.onHiddenChange,this);cm.on("columnmoved",this.onColumnMove,this);cm.on("columnlockchange",this.onColumnLock,this);} -this.cm=cm;},init:function(grid){Ext.grid.GridView.superclass.init.call(this,grid);this.bind(grid.dataSource,grid.colModel);grid.on("headerclick",this.handleHeaderClick,this);if(grid.trackMouseOver){grid.on("mouseover",this.onRowOver,this);grid.on("mouseout",this.onRowOut,this);} -grid.cancelTextSelection=function(){};this.gridId=grid.id;var tpls=this.templates||{};if(!tpls.master){tpls.master=new Ext.Template('<div class="x-grid" hidefocus="true">','<div class="x-grid-topbar"></div>','<div class="x-grid-scroller"><div></div></div>','<div class="x-grid-locked">','<div class="x-grid-header">{lockedHeader}</div>','<div class="x-grid-body">{lockedBody}</div>',"</div>",'<div class="x-grid-viewport">','<div class="x-grid-header">{header}</div>','<div class="x-grid-body">{body}</div>',"</div>",'<div class="x-grid-bottombar"></div>','<a href="#" class="x-grid-focus" tabIndex="-1"></a>','<div class="x-grid-resize-proxy"> </div>',"</div>");tpls.master.disableformats=true;} -if(!tpls.header){tpls.header=new Ext.Template('<table border="0" cellspacing="0" cellpadding="0">','<tbody><tr class="x-grid-hd-row">{cells}</tr></tbody>',"</table>{splits}");tpls.header.disableformats=true;} -tpls.header.compile();if(!tpls.hcell){tpls.hcell=new Ext.Template('<td class="x-grid-hd x-grid-td-{id} {cellId}"><div title="{title}" class="x-grid-hd-inner x-grid-hd-{id}">','<div class="x-grid-hd-text" unselectable="on">{value}<img class="x-grid-sort-icon" src="',Ext.BLANK_IMAGE_URL,'" /></div>',"</div></td>");tpls.hcell.disableFormats=true;} -tpls.hcell.compile();if(!tpls.hsplit){tpls.hsplit=new Ext.Template('<div class="x-grid-split {splitId} x-grid-split-{id}" style="{style}" unselectable="on"> </div>');tpls.hsplit.disableFormats=true;} -tpls.hsplit.compile();if(!tpls.body){tpls.body=new Ext.Template('<table border="0" cellspacing="0" cellpadding="0">',"<tbody>{rows}</tbody>","</table>");tpls.body.disableFormats=true;} -tpls.body.compile();if(!tpls.row){tpls.row=new Ext.Template('<tr class="x-grid-row {alt}">{cells}</tr>');tpls.row.disableFormats=true;} -tpls.row.compile();if(!tpls.cell){tpls.cell=new Ext.Template('<td class="x-grid-col x-grid-td-{id} {cellId} {css}" tabIndex="0">','<div class="x-grid-col-{id} x-grid-cell-inner"><div class="x-grid-cell-text" unselectable="on" {attr}>{value}</div></div>',"</td>");tpls.cell.disableFormats=true;} -tpls.cell.compile();this.templates=tpls;},onColWidthChange:function(){this.updateColumns.apply(this,arguments);},onHeaderChange:function(){this.updateHeaders.apply(this,arguments);},onHiddenChange:function(){this.handleHiddenChange.apply(this,arguments);},onColumnMove:function(){this.handleColumnMove.apply(this,arguments);},onColumnLock:function(){this.handleLockChange.apply(this,arguments);},onDataChange:function(){this.refresh();this.updateHeaderSortState();},onClear:function(){this.refresh();},onUpdate:function(ds,record){this.refreshRow(record);},refreshRow:function(record){var ds=this.ds,index;if(typeof record=='number'){index=record;record=ds.getAt(index);}else{index=ds.indexOf(record);} -var rows=this.getRowComposite(index);var cls=[];this.insertRows(ds,index,index,true);this.onRemove(ds,record,index+1,true);this.syncRowHeights(index,index);this.layout();this.fireEvent("rowupdated",this,index,record);},onAdd:function(ds,records,index){this.insertRows(ds,index,index+(records.length-1));},onRemove:function(ds,record,index,isUpdate){if(isUpdate!==true){this.fireEvent("beforerowremoved",this,index,record);} -var bt=this.getBodyTable(),lt=this.getLockedTable();if(bt.rows[index]){bt.firstChild.removeChild(bt.rows[index]);} -if(lt.rows[index]){lt.firstChild.removeChild(lt.rows[index]);} -if(isUpdate!==true){this.stripeRows(index);this.syncRowHeights(index,index);this.layout();this.fireEvent("rowremoved",this,index,record);}},onLoad:function(){this.scrollToTop();},scrollToTop:function(){if(this.scroller){this.scroller.dom.scrollTop=0;this.syncScroll();}},getHeaderPanel:function(doShow){if(doShow){this.headerPanel.show();} -return this.headerPanel;},getFooterPanel:function(doShow){if(doShow){this.footerPanel.show();} -return this.footerPanel;},initElements:function(){var E=Ext.Element;var el=this.grid.getGridEl().dom.firstChild;var cs=el.childNodes;this.el=new E(el);this.headerPanel=new E(el.firstChild);this.headerPanel.enableDisplayMode("block");this.scroller=new E(cs[1]);this.scrollSizer=new E(this.scroller.dom.firstChild);this.lockedWrap=new E(cs[2]);this.lockedHd=new E(this.lockedWrap.dom.firstChild);this.lockedBody=new E(this.lockedWrap.dom.childNodes[1]);this.mainWrap=new E(cs[3]);this.mainHd=new E(this.mainWrap.dom.firstChild);this.mainBody=new E(this.mainWrap.dom.childNodes[1]);this.footerPanel=new E(cs[4]);this.footerPanel.enableDisplayMode("block");this.focusEl=new E(cs[5]);this.focusEl.swallowEvent("click",true);this.resizeProxy=new E(cs[6]);this.headerSelector=String.format('#{0} td.x-grid-hd, #{1} td.x-grid-hd',this.lockedHd.id,this.mainHd.id);this.splitterSelector=String.format('#{0} div.x-grid-split, #{1} div.x-grid-split',this.lockedHd.id,this.mainHd.id);},getHeaderCell:function(index){return Ext.DomQuery.select(this.headerSelector)[index];},getHeaderCellMeasure:function(index){return this.getHeaderCell(index).firstChild;},getHeaderCellText:function(index){return this.getHeaderCell(index).firstChild.firstChild;},getLockedTable:function(){return this.lockedBody.dom.firstChild;},getBodyTable:function(){return this.mainBody.dom.firstChild;},getLockedRow:function(index){return this.getLockedTable().rows[index];},getRow:function(index){return this.getBodyTable().rows[index];},getRowComposite:function(index){if(!this.rowEl){this.rowEl=new Ext.CompositeElementLite();} -var els=[],lrow,mrow;if(lrow=this.getLockedRow(index)){els.push(lrow);} -if(mrow=this.getRow(index)){els.push(mrow);} -this.rowEl.elements=els;return this.rowEl;},getCell:function(rowIndex,colIndex){var locked=this.cm.getLockedCount();var source;if(colIndex<locked){source=this.lockedBody.dom.firstChild;}else{source=this.mainBody.dom.firstChild;colIndex-=locked;} -return source.rows[rowIndex].childNodes[colIndex];},getCellText:function(rowIndex,colIndex){return this.getCell(rowIndex,colIndex).firstChild.firstChild;},getCellBox:function(cell){var b=this.fly(cell).getBox();if(Ext.isOpera){b.y=cell.offsetTop+this.mainBody.getY();} -return b;},getCellIndex:function(cell){var id=String(cell.className).match(this.cellRE);if(id){return parseInt(id[1],10);} -return 0;},findHeaderIndex:function(n){var r=Ext.fly(n).findParent("td."+this.hdClass,6);return r?this.getCellIndex(r):false;},findHeaderCell:function(n){var r=Ext.fly(n).findParent("td."+this.hdClass,6);return r?r:false;},findRowIndex:function(n){if(!n){return false;} -var r=Ext.fly(n).findParent("tr."+this.rowClass,6);return r?r.rowIndex:false;},findCellIndex:function(node){var stop=this.el.dom;while(node&&node!=stop){if(this.findRE.test(node.className)){return this.getCellIndex(node);} -node=node.parentNode;} -return false;},getColumnId:function(index){return this.cm.getColumnId(index);},getSplitters:function(){if(this.splitterSelector){return Ext.DomQuery.select(this.splitterSelector);}else{return null;}},getSplitter:function(index){return this.getSplitters()[index];},onRowOver:function(e,t){var row;if((row=this.findRowIndex(t))!==false){this.getRowComposite(row).addClass("x-grid-row-over");}},onRowOut:function(e,t){var row;if((row=this.findRowIndex(t))!==false&&row!==this.findRowIndex(e.getRelatedTarget())){this.getRowComposite(row).removeClass("x-grid-row-over");}},renderHeaders:function(){var cm=this.cm;var ct=this.templates.hcell,ht=this.templates.header,st=this.templates.hsplit;var cb=[],lb=[],sb=[],lsb=[],p={};for(var i=0,len=cm.getColumnCount();i<len;i++){p.cellId="x-grid-hd-0-"+i;p.splitId="x-grid-csplit-0-"+i;p.id=cm.getColumnId(i);p.title=cm.getColumnTooltip(i)||"";p.value=cm.getColumnHeader(i)||"";p.style=(this.grid.enableColumnResize===false||!cm.isResizable(i)||cm.isFixed(i))?'cursor:default':'';if(!cm.isLocked(i)){cb[cb.length]=ct.apply(p);sb[sb.length]=st.apply(p);}else{lb[lb.length]=ct.apply(p);lsb[lsb.length]=st.apply(p);}} -return[ht.apply({cells:lb.join(""),splits:lsb.join("")}),ht.apply({cells:cb.join(""),splits:sb.join("")})];},updateHeaders:function(){var html=this.renderHeaders();this.lockedHd.update(html[0]);this.mainHd.update(html[1]);},focusRow:function(row){var x=this.scroller.dom.scrollLeft;this.focusCell(row,0,false);this.scroller.dom.scrollLeft=x;},focusCell:function(row,col,hscroll){var el=this.ensureVisible(row,col,hscroll);this.focusEl.alignTo(el,"tl-tl");if(Ext.isGecko){this.focusEl.focus();}else{this.focusEl.focus.defer(1,this.focusEl);}},ensureVisible:function(row,col,hscroll){if(typeof row!="number"){row=row.rowIndex;} -if(row<0&&row>=this.ds.getCount()){return;} -col=(col!==undefined?col:0);var cm=this.grid.colModel;while(cm.isHidden(col)){col++;} -var el=this.getCell(row,col);if(!el){return;} -var c=this.scroller.dom;var ctop=parseInt(el.offsetTop,10);var cleft=parseInt(el.offsetLeft,10);var cbot=ctop+el.offsetHeight;var cright=cleft+el.offsetWidth;var ch=c.clientHeight-this.mainHd.dom.offsetHeight;var stop=parseInt(c.scrollTop,10);var sleft=parseInt(c.scrollLeft,10);var sbot=stop+ch;var sright=sleft+c.clientWidth;if(ctop<stop){c.scrollTop=ctop;}else if(cbot>sbot){c.scrollTop=cbot-ch;} -if(hscroll!==false){if(cleft<sleft){c.scrollLeft=cleft;}else if(cright>sright){c.scrollLeft=cright-c.clientWidth;}} -return el;},updateColumns:function(){this.grid.stopEditing();var cm=this.grid.colModel,colIds=this.getColumnIds();var pos=0;for(var i=0,len=cm.getColumnCount();i<len;i++){var w=cm.getColumnWidth(i);this.css.updateRule(this.colSelector+colIds[i],"width",(w-this.borderWidth)+"px");this.css.updateRule(this.hdSelector+colIds[i],"width",(w-this.borderWidth)+"px");} -this.updateSplitters();},generateRules:function(cm){var ruleBuf=[];for(var i=0,len=cm.getColumnCount();i<len;i++){var cid=cm.getColumnId(i);var align='';if(cm.config[i].align){align='text-align:'+cm.config[i].align+';';} -var hidden='';if(cm.isHidden(i)){hidden='display:none;';} -var width="width:"+(cm.getColumnWidth(i)-this.borderWidth)+"px;";ruleBuf.push(this.colSelector,cid," {\n",cm.config[i].css,align,width,"\n}\n",this.hdSelector,cid," {\n",align,width,"}\n",this.tdSelector,cid," {\n",hidden,"\n}\n",this.splitSelector,cid," {\n",hidden,"\n}\n");} -return Ext.util.CSS.createStyleSheet(ruleBuf.join(""));},updateSplitters:function(){var cm=this.cm,s=this.getSplitters();if(s){var pos=0,locked=true;for(var i=0,len=cm.getColumnCount();i<len;i++){if(cm.isHidden(i))continue;var w=cm.getColumnWidth(i);if(!cm.isLocked(i)&&locked){pos=0;locked=false;} -pos+=w;s[i].style.left=(pos-this.splitOffset)+"px";}}},handleHiddenChange:function(colModel,colIndex,hidden){if(hidden){this.hideColumn(colIndex);}else{this.unhideColumn(colIndex);}},hideColumn:function(colIndex){var cid=this.getColumnId(colIndex);this.css.updateRule(this.tdSelector+cid,"display","none");this.css.updateRule(this.splitSelector+cid,"display","none");if(Ext.isSafari){this.updateHeaders();} -this.updateSplitters();this.layout();},unhideColumn:function(colIndex){var cid=this.getColumnId(colIndex);this.css.updateRule(this.tdSelector+cid,"display","");this.css.updateRule(this.splitSelector+cid,"display","");if(Ext.isSafari){this.updateHeaders();} -this.updateSplitters();this.layout();},insertRows:function(dm,firstRow,lastRow,isUpdate){if(firstRow==0&&lastRow==dm.getCount()-1){this.refresh();}else{if(!isUpdate){this.fireEvent("beforerowsinserted",this,firstRow,lastRow);} -var s=this.getScrollState();var markup=this.renderRows(firstRow,lastRow);this.bufferRows(markup[0],this.getLockedTable(),firstRow);this.bufferRows(markup[1],this.getBodyTable(),firstRow);this.restoreScroll(s);if(!isUpdate){this.fireEvent("rowsinserted",this,firstRow,lastRow);this.syncRowHeights(firstRow,lastRow);this.stripeRows(firstRow);this.layout();}}},bufferRows:function(markup,target,index){var before=null,trows=target.rows,tbody=target.tBodies[0];if(index<trows.length){before=trows[index];} -var b=document.createElement("div");b.innerHTML="<table><tbody>"+markup+"</tbody></table>";var rows=b.firstChild.rows;for(var i=0,len=rows.length;i<len;i++){if(before){tbody.insertBefore(rows[0],before);}else{tbody.appendChild(rows[0]);}} -b.innerHTML="";b=null;},deleteRows:function(dm,firstRow,lastRow){if(dm.getRowCount()<1){this.fireEvent("beforerefresh",this);this.mainBody.update("");this.lockedBody.update("");this.fireEvent("refresh",this);}else{this.fireEvent("beforerowsdeleted",this,firstRow,lastRow);var bt=this.getBodyTable();var tbody=bt.firstChild;var rows=bt.rows;for(var rowIndex=firstRow;rowIndex<=lastRow;rowIndex++){tbody.removeChild(rows[firstRow]);} -this.stripeRows(firstRow);this.fireEvent("rowsdeleted",this,firstRow,lastRow);}},updateRows:function(dataSource,firstRow,lastRow){var s=this.getScrollState();this.refresh();this.restoreScroll(s);},handleSort:function(dataSource,sortColumnIndex,sortDir,noRefresh){if(!noRefresh){this.refresh();} -this.updateHeaderSortState();},getScrollState:function(){var sb=this.scroller.dom;return{left:sb.scrollLeft,top:sb.scrollTop};},stripeRows:function(startRow){if(!this.grid.stripeRows||this.ds.getCount()<1){return;} -startRow=startRow||0;var rows=this.getBodyTable().rows;var lrows=this.getLockedTable().rows;var cls=' x-grid-row-alt ';for(var i=startRow,len=rows.length;i<len;i++){var row=rows[i],lrow=lrows[i];var isAlt=((i+1)%2==0);var hasAlt=(' '+row.className+' ').indexOf(cls)!=-1;if(isAlt==hasAlt){continue;} -if(isAlt){row.className+=" x-grid-row-alt";}else{row.className=row.className.replace("x-grid-row-alt","");} -if(lrow){lrow.className=row.className;}}},restoreScroll:function(state){var sb=this.scroller.dom;sb.scrollLeft=state.left;sb.scrollTop=state.top;this.syncScroll();},syncScroll:function(){var sb=this.scroller.dom;var sh=this.mainHd.dom;var bs=this.mainBody.dom;var lv=this.lockedBody.dom;sh.scrollLeft=bs.scrollLeft=sb.scrollLeft;lv.scrollTop=bs.scrollTop=sb.scrollTop;},handleScroll:function(e){this.syncScroll();var sb=this.scroller.dom;this.grid.fireEvent("bodyscroll",sb.scrollLeft,sb.scrollTop);e.stopEvent();},handleWheel:function(e){var d=e.getWheelDelta();this.scroller.dom.scrollTop-=d*22;this.lockedBody.dom.scrollTop=this.mainBody.dom.scrollTop=this.scroller.dom.scrollTop;e.stopEvent();},renderRows:function(startRow,endRow){var g=this.grid,cm=g.colModel,ds=g.dataSource,stripe=g.stripeRows;var colCount=cm.getColumnCount();if(ds.getCount()<1){return["",""];} -var cs=[];for(var i=0;i<colCount;i++){var name=cm.getDataIndex(i);cs[i]={name:typeof name=='undefined'?ds.fields.get(i).name:name,renderer:cm.getRenderer(i),id:cm.getColumnId(i),locked:cm.isLocked(i)};} -startRow=startRow||0;endRow=typeof endRow=="undefined"?ds.getCount()-1:endRow;var rs=ds.getRange(startRow,endRow);return this.doRender(cs,rs,ds,startRow,colCount,stripe);},doRender:Ext.isGecko?function(cs,rs,ds,startRow,colCount,stripe){var ts=this.templates,ct=ts.cell,rt=ts.row;var buf="",lbuf="",cb,lcb,c,p={},rp={},r,rowIndex;for(var j=0,len=rs.length;j<len;j++){r=rs[j];cb="";lcb="";rowIndex=(j+startRow);for(var i=0;i<colCount;i++){c=cs[i];p.cellId="x-grid-cell-"+rowIndex+"-"+i;p.id=c.id;p.css=p.attr="";p.value=c.renderer(r.data[c.name],p,r,rowIndex,i,ds);if(p.value==undefined||p.value==="")p.value=" ";if(r.dirty&&typeof r.modified[c.name]!=='undefined'){p.css+=p.css?' x-grid-dirty-cell':'x-grid-dirty-cell';} -var markup=ct.apply(p);if(!c.locked){cb+=markup;}else{lcb+=markup;}} -var alt=[];if(stripe&&((rowIndex+1)%2==0)){alt[0]="x-grid-row-alt";} -if(r.dirty){alt[1]=" x-grid-dirty-row";} -rp.cells=lcb;if(this.getRowClass){alt[2]=this.getRowClass(r,rowIndex);} -rp.alt=alt.join(" ");lbuf+=rt.apply(rp);rp.cells=cb;buf+=rt.apply(rp);} -return[lbuf,buf];}:function(cs,rs,ds,startRow,colCount,stripe){var ts=this.templates,ct=ts.cell,rt=ts.row;var buf=[],lbuf=[],cb,lcb,c,p={},rp={},r,rowIndex;for(var j=0,len=rs.length;j<len;j++){r=rs[j];cb=[];lcb=[];rowIndex=(j+startRow);for(var i=0;i<colCount;i++){c=cs[i];p.cellId="x-grid-cell-"+rowIndex+"-"+i;p.id=c.id;p.css=p.attr="";p.value=c.renderer(r.data[c.name],p,r,rowIndex,i,ds);if(p.value==undefined||p.value==="")p.value=" ";if(r.dirty&&typeof r.modified[c.name]!=='undefined'){p.css+=p.css?' x-grid-dirty-cell':'x-grid-dirty-cell';} -var markup=ct.apply(p);if(!c.locked){cb[cb.length]=markup;}else{lcb[lcb.length]=markup;}} -var alt=[];if(stripe&&((rowIndex+1)%2==0)){alt[0]="x-grid-row-alt";} -if(r.dirty){alt[1]=" x-grid-dirty-row";} -rp.cells=lcb;if(this.getRowClass){alt[2]=this.getRowClass(r,rowIndex);} -rp.alt=alt.join(" ");rp.cells=lcb.join("");lbuf[lbuf.length]=rt.apply(rp);rp.cells=cb.join("");buf[buf.length]=rt.apply(rp);} -return[lbuf.join(""),buf.join("")];},renderBody:function(){var markup=this.renderRows();var bt=this.templates.body;return[bt.apply({rows:markup[0]}),bt.apply({rows:markup[1]})];},refresh:function(headersToo){this.fireEvent("beforerefresh",this);this.grid.stopEditing();var result=this.renderBody();this.lockedBody.update(result[0]);this.mainBody.update(result[1]);if(headersToo===true){this.updateHeaders();this.updateColumns();this.updateSplitters();this.updateHeaderSortState();} -this.syncRowHeights();this.layout();this.fireEvent("refresh",this);},handleColumnMove:function(cm,oldIndex,newIndex){this.indexMap=null;var s=this.getScrollState();this.refresh(true);this.restoreScroll(s);this.afterMove(newIndex);},afterMove:function(colIndex){if(this.enableMoveAnim&&Ext.enableFx){this.fly(this.getHeaderCell(colIndex).firstChild).highlight(this.hlColor);}},updateCell:function(dm,rowIndex,dataIndex){var colIndex=this.getColumnIndexByDataIndex(dataIndex);if(typeof colIndex=="undefined"){return;} -var cm=this.grid.colModel;var cell=this.getCell(rowIndex,colIndex);var cellText=this.getCellText(rowIndex,colIndex);var p={cellId:"x-grid-cell-"+rowIndex+"-"+colIndex,id:cm.getColumnId(colIndex),css:colIndex==cm.getColumnCount()-1?"x-grid-col-last":""};var renderer=cm.getRenderer(colIndex);var val=renderer(dm.getValueAt(rowIndex,dataIndex),p,rowIndex,colIndex,dm);if(typeof val=="undefined"||val==="")val=" ";cellText.innerHTML=val;cell.className=this.cellClass+" "+p.cellId+" "+p.css;this.syncRowHeights(rowIndex,rowIndex);},calcColumnWidth:function(colIndex,maxRowsToMeasure){var maxWidth=0;if(this.grid.autoSizeHeaders){var h=this.getHeaderCellMeasure(colIndex);maxWidth=Math.max(maxWidth,h.scrollWidth);} -var tb,index;if(this.cm.isLocked(colIndex)){tb=this.getLockedTable();index=colIndex;}else{tb=this.getBodyTable();index=colIndex-this.cm.getLockedCount();} -if(tb&&tb.rows){var rows=tb.rows;var stopIndex=Math.min(maxRowsToMeasure||rows.length,rows.length);for(var i=0;i<stopIndex;i++){var cell=rows[i].childNodes[index].firstChild;maxWidth=Math.max(maxWidth,cell.scrollWidth);}} -return maxWidth+5;},autoSizeColumn:function(colIndex,forceMinSize,suppressEvent){if(this.cm.isHidden(colIndex)){return;} -if(forceMinSize){var cid=this.cm.getColumnId(colIndex);this.css.updateRule(this.colSelector+cid,"width",this.grid.minColumnWidth+"px");if(this.grid.autoSizeHeaders){this.css.updateRule(this.hdSelector+cid,"width",this.grid.minColumnWidth+"px");}} -var newWidth=this.calcColumnWidth(colIndex);this.cm.setColumnWidth(colIndex,Math.max(this.grid.minColumnWidth,newWidth),suppressEvent);if(!suppressEvent){this.grid.fireEvent("columnresize",colIndex,newWidth);}},autoSizeColumns:function(){var cm=this.grid.colModel;var colCount=cm.getColumnCount();for(var i=0;i<colCount;i++){this.autoSizeColumn(i,true,true);} -if(cm.getTotalWidth()<this.scroller.dom.clientWidth){this.fitColumns();}else{this.updateColumns();this.layout();}},fitColumns:function(reserveScrollSpace){var cm=this.grid.colModel;var colCount=cm.getColumnCount();var cols=[];var width=0;var i,w;for(i=0;i<colCount;i++){if(!cm.isHidden(i)&&!cm.isFixed(i)){w=cm.getColumnWidth(i);cols.push(i);cols.push(w);width+=w;}} -var avail=Math.min(this.scroller.dom.clientWidth,this.el.getWidth());if(reserveScrollSpace){avail-=17;} -var frac=(avail-cm.getTotalWidth())/width;while(cols.length){w=cols.pop();i=cols.pop();cm.setColumnWidth(i,Math.floor(w+w*frac),true);} -this.updateColumns();this.layout();},onRowSelect:function(rowIndex){var row=this.getRowComposite(rowIndex);row.addClass("x-grid-row-selected");},onRowDeselect:function(rowIndex){var row=this.getRowComposite(rowIndex);row.removeClass("x-grid-row-selected");},onCellSelect:function(row,col){var cell=this.getCell(row,col);if(cell){Ext.fly(cell).addClass("x-grid-cell-selected");}},onCellDeselect:function(row,col){var cell=this.getCell(row,col);if(cell){Ext.fly(cell).removeClass("x-grid-cell-selected");}},updateHeaderSortState:function(){var state=this.ds.getSortState();if(!state){return;} -this.sortState=state;var sortColumn=this.cm.findColumnIndex(state.field);if(sortColumn!=-1){var sortDir=state.direction;var sc=this.sortClasses;var hds=this.el.select(this.headerSelector).removeClass(sc);hds.item(sortColumn).addClass(sc[sortDir=="DESC"?1:0]);}},handleHeaderClick:function(g,index){if(this.headersDisabled){return;} -var dm=g.dataSource,cm=g.colModel;if(!cm.isSortable(index)){return;} -g.stopEditing();dm.sort(cm.getDataIndex(index));},destroy:function(){if(this.colMenu){this.colMenu.removeAll();Ext.menu.MenuMgr.unregister(this.colMenu);this.colMenu.getEl().remove();delete this.colMenu;} -if(this.hmenu){this.hmenu.removeAll();Ext.menu.MenuMgr.unregister(this.hmenu);this.hmenu.getEl().remove();delete this.hmenu;} -if(this.grid.enableColumnMove){var dds=Ext.dd.DDM.ids['gridHeader'+this.grid.getGridEl().id];if(dds){for(var dd in dds){if(!dds[dd].config.isTarget&&dds[dd].dragElId){var elid=dds[dd].dragElId;dds[dd].unreg();Ext.get(elid).remove();}else if(dds[dd].config.isTarget){dds[dd].proxyTop.remove();dds[dd].proxyBottom.remove();dds[dd].unreg();} -if(Ext.dd.DDM.locationCache[dd]){delete Ext.dd.DDM.locationCache[dd];}} -delete Ext.dd.DDM.ids['gridHeader'+this.grid.getGridEl().id];}} -this.bind(null,null);Ext.EventManager.removeResizeListener(this.onWindowResize,this);},handleLockChange:function(){this.refresh(true);},onDenyColumnLock:function(){},onDenyColumnHide:function(){},handleHdMenuClick:function(item){var index=this.hdCtxIndex;var cm=this.cm,ds=this.ds;switch(item.id){case"asc":ds.sort(cm.getDataIndex(index),"ASC");break;case"desc":ds.sort(cm.getDataIndex(index),"DESC");break;case"lock":var lc=cm.getLockedCount();if(cm.getColumnCount(true)<=lc+1){this.onDenyColumnLock();return;} -if(lc!=index){cm.setLocked(index,true,true);cm.moveColumn(index,lc);this.grid.fireEvent("columnmove",index,lc);}else{cm.setLocked(index,true);} -break;case"unlock":var lc=cm.getLockedCount();if((lc-1)!=index){cm.setLocked(index,false,true);cm.moveColumn(index,lc-1);this.grid.fireEvent("columnmove",index,lc-1);}else{cm.setLocked(index,false);} -break;default:index=cm.getIndexById(item.id.substr(4));if(index!=-1){if(item.checked&&cm.getColumnCount(true)<=1){this.onDenyColumnHide();return false;} -cm.setHidden(index,item.checked);}} -return true;},beforeColMenuShow:function(){var cm=this.cm,colCount=cm.getColumnCount();this.colMenu.removeAll();for(var i=0;i<colCount;i++){this.colMenu.add(new Ext.menu.CheckItem({id:"col-"+cm.getColumnId(i),text:cm.getColumnHeader(i),checked:!cm.isHidden(i),hideOnClick:false}));}},handleHdCtx:function(g,index,e){e.stopEvent();var hd=this.getHeaderCell(index);this.hdCtxIndex=index;var ms=this.hmenu.items,cm=this.cm;ms.get("asc").setDisabled(!cm.isSortable(index));ms.get("desc").setDisabled(!cm.isSortable(index));if(this.grid.enableColLock!==false){ms.get("lock").setDisabled(cm.isLocked(index));ms.get("unlock").setDisabled(!cm.isLocked(index));} -this.hmenu.show(hd,"tl-bl");},handleHdOver:function(e){var hd=this.findHeaderCell(e.getTarget());if(hd&&!this.headersDisabled){if(this.grid.colModel.isSortable(this.getCellIndex(hd))){this.fly(hd).addClass("x-grid-hd-over");}}},handleHdOut:function(e){var hd=this.findHeaderCell(e.getTarget());if(hd){this.fly(hd).removeClass("x-grid-hd-over");}},handleSplitDblClick:function(e,t){var i=this.getCellIndex(t);if(this.grid.enableColumnResize!==false&&this.cm.isResizable(i)&&!this.cm.isFixed(i)){this.autoSizeColumn(i,true);this.layout();}},render:function(){var cm=this.cm;var colCount=cm.getColumnCount();if(this.grid.monitorWindowResize===true){Ext.EventManager.onWindowResize(this.onWindowResize,this,true);} -var header=this.renderHeaders();var body=this.templates.body.apply({rows:""});var html=this.templates.master.apply({lockedBody:body,body:body,lockedHeader:header[0],header:header[1]});this.grid.getGridEl().dom.innerHTML=html;this.initElements();this.scroller.on("scroll",this.handleScroll,this);this.lockedBody.on("mousewheel",this.handleWheel,this);this.mainBody.on("mousewheel",this.handleWheel,this);this.mainHd.on("mouseover",this.handleHdOver,this);this.mainHd.on("mouseout",this.handleHdOut,this);this.mainHd.on("dblclick",this.handleSplitDblClick,this,{delegate:"."+this.splitClass});this.lockedHd.on("mouseover",this.handleHdOver,this);this.lockedHd.on("mouseout",this.handleHdOut,this);this.lockedHd.on("dblclick",this.handleSplitDblClick,this,{delegate:"."+this.splitClass});if(this.grid.enableColumnResize!==false&&Ext.grid.SplitDragZone){new Ext.grid.SplitDragZone(this.grid,this.lockedHd.dom,this.mainHd.dom);} -this.updateSplitters();if(this.grid.enableColumnMove&&Ext.grid.HeaderDragZone){new Ext.grid.HeaderDragZone(this.grid,this.lockedHd.dom,this.mainHd.dom);new Ext.grid.HeaderDropZone(this.grid,this.lockedHd.dom,this.mainHd.dom);} -if(this.grid.enableCtxMenu!==false&&Ext.menu.Menu){this.hmenu=new Ext.menu.Menu({id:this.grid.id+"-hctx"});this.hmenu.add({id:"asc",text:this.sortAscText,cls:"xg-hmenu-sort-asc"},{id:"desc",text:this.sortDescText,cls:"xg-hmenu-sort-desc"});if(this.grid.enableColLock!==false){this.hmenu.add('-',{id:"lock",text:this.lockText,cls:"xg-hmenu-lock"},{id:"unlock",text:this.unlockText,cls:"xg-hmenu-unlock"});} -if(this.grid.enableColumnHide!==false){this.colMenu=new Ext.menu.Menu({id:this.grid.id+"-hcols-menu"});this.colMenu.on("beforeshow",this.beforeColMenuShow,this);this.colMenu.on("itemclick",this.handleHdMenuClick,this);this.hmenu.add('-',{id:"columns",text:this.columnsText,menu:this.colMenu});} -this.hmenu.on("itemclick",this.handleHdMenuClick,this);this.grid.on("headercontextmenu",this.handleHdCtx,this);} -if((this.grid.enableDragDrop||this.grid.enableDrag)&&Ext.grid.GridDragZone){this.dd=new Ext.grid.GridDragZone(this.grid,{ddGroup:this.grid.ddGroup||'GridDD'});} -this.updateHeaderSortState();this.beforeInitialResize();this.layout(true);this.renderPhase2.defer(1,this);},renderPhase2:function(){this.refresh();if(this.grid.autoSizeColumns){this.autoSizeColumns();}},beforeInitialResize:function(){},onColumnSplitterMoved:function(i,w){this.userResized=true;var cm=this.grid.colModel;cm.setColumnWidth(i,w,true);var cid=cm.getColumnId(i);this.css.updateRule(this.colSelector+cid,"width",(w-this.borderWidth)+"px");this.css.updateRule(this.hdSelector+cid,"width",(w-this.borderWidth)+"px");this.updateSplitters();this.layout();this.grid.fireEvent("columnresize",i,w);},syncRowHeights:function(startIndex,endIndex){if(this.grid.enableRowHeightSync===true&&this.cm.getLockedCount()>0){startIndex=startIndex||0;var mrows=this.getBodyTable().rows;var lrows=this.getLockedTable().rows;var len=mrows.length-1;endIndex=Math.min(endIndex||len,len);for(var i=startIndex;i<=endIndex;i++){var m=mrows[i],l=lrows[i];var h=Math.max(m.offsetHeight,l.offsetHeight);m.style.height=l.style.height=h+"px";}}},layout:function(initialRender,is2ndPass){var g=this.grid;var auto=g.autoHeight;var scrollOffset=16;var c=g.getGridEl(),cm=this.cm,expandCol=g.autoExpandColumn,gv=this;if(!c.dom.offsetWidth){if(initialRender){this.lockedWrap.show();this.mainWrap.show();} -return;} -var hasLock=this.cm.isLocked(0);var tbh=this.headerPanel.getHeight();var bbh=this.footerPanel.getHeight();if(auto){var ch=this.getBodyTable().offsetHeight+tbh+bbh+this.mainHd.getHeight();var newHeight=ch+c.getBorderWidth("tb");if(g.maxHeight){newHeight=Math.min(g.maxHeight,newHeight);} -c.setHeight(newHeight);} -if(g.autoWidth){c.setWidth(cm.getTotalWidth()+c.getBorderWidth('lr'));} -var s=this.scroller;var csize=c.getSize(true);this.el.setSize(csize.width,csize.height);this.headerPanel.setWidth(csize.width);this.footerPanel.setWidth(csize.width);var hdHeight=this.mainHd.getHeight();var vw=csize.width;var vh=csize.height-(tbh+bbh);s.setSize(vw,vh);var bt=this.getBodyTable();var ltWidth=hasLock?Math.max(this.getLockedTable().offsetWidth,this.lockedHd.dom.firstChild.offsetWidth):0;var scrollHeight=bt.offsetHeight;var scrollWidth=ltWidth+bt.offsetWidth;var vscroll=false,hscroll=false;this.scrollSizer.setSize(scrollWidth,scrollHeight+hdHeight);var lw=this.lockedWrap,mw=this.mainWrap;var lb=this.lockedBody,mb=this.mainBody;setTimeout(function(){var t=s.dom.offsetTop;var w=s.dom.clientWidth,h=s.dom.clientHeight;lw.setTop(t);lw.setSize(ltWidth,h);mw.setLeftTop(ltWidth,t);mw.setSize(w-ltWidth,h);lb.setHeight(h-hdHeight);mb.setHeight(h-hdHeight);if(is2ndPass!==true&&!gv.userResized&&expandCol){var ci=cm.getIndexById(expandCol);var tw=cm.getTotalWidth(false);var currentWidth=cm.getColumnWidth(ci);var cw=Math.min(Math.max(((w-tw)+currentWidth-2)-(w<=s.dom.offsetWidth?0:18),g.autoExpandMin),g.autoExpandMax);if(currentWidth!=cw){cm.setColumnWidth(ci,cw,true);gv.css.updateRule(gv.colSelector+expandCol,"width",(cw-gv.borderWidth)+"px");gv.css.updateRule(gv.hdSelector+expandCol,"width",(cw-gv.borderWidth)+"px");gv.updateSplitters();gv.layout(false,true);}} -if(initialRender){lw.show();mw.show();}},10);},onWindowResize:function(){if(!this.grid.monitorWindowResize||this.grid.autoHeight){return;} -this.layout();},appendFooter:function(parentEl){return null;},sortAscText:"Sort Ascending",sortDescText:"Sort Descending",lockText:"Lock Column",unlockText:"Unlock Column",columnsText:"Columns"}); - -Ext.grid.ColumnModel=function(config){Ext.grid.ColumnModel.superclass.constructor.call(this);this.config=config;this.lookup={};for(var i=0,len=config.length;i<len;i++){if(typeof config[i].dataIndex=="undefined"){config[i].dataIndex=i;} -if(typeof config[i].renderer=="string"){config[i].renderer=Ext.util.Format[config[i].renderer];} -if(typeof config[i].id=="undefined"){config[i].id=i;} -this.lookup[config[i].id]=config[i];} -this.defaultWidth=100;this.defaultSortable=false;this.addEvents({"widthchange":true,"headerchange":true,"hiddenchange":true,"columnmoved":true,"columnlockchange":true});Ext.grid.ColumnModel.superclass.constructor.call(this);};Ext.extend(Ext.grid.ColumnModel,Ext.util.Observable,{getColumnId:function(index){return this.config[index].id;},getColumnById:function(id){return this.lookup[id];},getIndexById:function(id){for(var i=0,len=this.config.length;i<len;i++){if(this.config[i].id==id){return i;}} -return-1;},moveColumn:function(oldIndex,newIndex){var c=this.config[oldIndex];this.config.splice(oldIndex,1);this.config.splice(newIndex,0,c);this.dataMap=null;this.fireEvent("columnmoved",this,oldIndex,newIndex);},isLocked:function(colIndex){return this.config[colIndex].locked===true;},setLocked:function(colIndex,value,suppressEvent){if(this.isLocked(colIndex)==value){return;} -this.config[colIndex].locked=value;if(!suppressEvent){this.fireEvent("columnlockchange",this,colIndex,value);}},getTotalLockedWidth:function(){var totalWidth=0;for(var i=0;i<this.config.length;i++){if(this.isLocked(i)&&!this.isHidden(i)){this.totalWidth+=this.getColumnWidth(i);}} -return totalWidth;},getLockedCount:function(){for(var i=0,len=this.config.length;i<len;i++){if(!this.isLocked(i)){return i;}}},getColumnCount:function(visibleOnly){if(visibleOnly===true){var c=0;for(var i=0,len=this.config.length;i<len;i++){if(!this.isHidden(i)){c++;}} -return c;} -return this.config.length;},getColumnsBy:function(fn,scope){var r=[];for(var i=0,len=this.config.length;i<len;i++){var c=this.config[i];if(fn.call(scope||this,c,i)===true){r[r.length]=c;}} -return r;},isSortable:function(col){if(typeof this.config[col].sortable=="undefined"){return this.defaultSortable;} -return this.config[col].sortable;},getRenderer:function(col){if(!this.config[col].renderer){return Ext.grid.ColumnModel.defaultRenderer;} -return this.config[col].renderer;},setRenderer:function(col,fn){this.config[col].renderer=fn;},getColumnWidth:function(col){return this.config[col].width||this.defaultWidth;},setColumnWidth:function(col,width,suppressEvent){this.config[col].width=width;this.totalWidth=null;if(!suppressEvent){this.fireEvent("widthchange",this,col,width);}},getTotalWidth:function(includeHidden){if(!this.totalWidth){this.totalWidth=0;for(var i=0,len=this.config.length;i<len;i++){if(includeHidden||!this.isHidden(i)){this.totalWidth+=this.getColumnWidth(i);}}} -return this.totalWidth;},getColumnHeader:function(col){return this.config[col].header;},setColumnHeader:function(col,header){this.config[col].header=header;this.fireEvent("headerchange",this,col,header);},getColumnTooltip:function(col){return this.config[col].tooltip;},setColumnTooltip:function(col,tooltip){this.config[col].tooltip=tooltip;},getDataIndex:function(col){return this.config[col].dataIndex;},setDataIndex:function(col,dataIndex){this.config[col].dataIndex=dataIndex;},findColumnIndex:function(dataIndex){var c=this.config;for(var i=0,len=c.length;i<len;i++){if(c[i].dataIndex==dataIndex){return i;}} -return-1;},isCellEditable:function(colIndex,rowIndex){return(this.config[colIndex].editable||(typeof this.config[colIndex].editable=="undefined"&&this.config[colIndex].editor))?true:false;},getCellEditor:function(colIndex,rowIndex){return this.config[colIndex].editor;},setEditable:function(col,editable){this.config[col].editable=editable;},isHidden:function(colIndex){return this.config[colIndex].hidden;},isFixed:function(colIndex){return this.config[colIndex].fixed;},isResizable:function(colIndex){return colIndex>=0&&this.config[colIndex].resizable!==false&&this.config[colIndex].fixed!==true;},setHidden:function(colIndex,hidden){this.config[colIndex].hidden=hidden;this.totalWidth=null;this.fireEvent("hiddenchange",this,colIndex,hidden);},setEditor:function(col,editor){this.config[col].editor=editor;}});Ext.grid.ColumnModel.defaultRenderer=function(value){if(typeof value=="string"&&value.length<1){return" ";} -return value;};Ext.grid.DefaultColumnModel=Ext.grid.ColumnModel; - -Ext.grid.AbstractSelectionModel=function(){this.locked=false;Ext.grid.AbstractSelectionModel.superclass.constructor.call(this);};Ext.extend(Ext.grid.AbstractSelectionModel,Ext.util.Observable,{init:function(grid){this.grid=grid;this.initEvents();},lock:function(){this.locked=true;},unlock:function(){this.locked=false;},isLocked:function(){return this.locked;}}); - -Ext.grid.RowSelectionModel=function(config){Ext.apply(this,config);this.selections=new Ext.util.MixedCollection(false,function(o){return o.id;});this.last=false;this.lastActive=false;this.addEvents({"selectionchange":true,"beforerowselect":true,"rowselect":true,"rowdeselect":true});this.locked=false;};Ext.extend(Ext.grid.RowSelectionModel,Ext.grid.AbstractSelectionModel,{singleSelect:false,initEvents:function(){if(!this.grid.enableDragDrop&&!this.grid.enableDrag){this.grid.on("mousedown",this.handleMouseDown,this);} -this.rowNav=new Ext.KeyNav(this.grid.getGridEl(),{"up":function(e){if(!e.shiftKey){this.selectPrevious(e.shiftKey);}else if(this.last!==false&&this.lastActive!==false){var last=this.last;this.selectRange(this.last,this.lastActive-1);this.grid.getView().focusRow(this.lastActive);if(last!==false){this.last=last;}}else{this.selectFirstRow();}},"down":function(e){if(!e.shiftKey){this.selectNext(e.shiftKey);}else if(this.last!==false&&this.lastActive!==false){var last=this.last;this.selectRange(this.last,this.lastActive+1);this.grid.getView().focusRow(this.lastActive);if(last!==false){this.last=last;}}else{this.selectFirstRow();}},scope:this});var view=this.grid.view;view.on("refresh",this.onRefresh,this);view.on("rowupdated",this.onRowUpdated,this);view.on("rowremoved",this.onRemove,this);},onRefresh:function(){var ds=this.grid.dataSource,i,v=this.grid.view;var s=this.selections;s.each(function(r){if((i=ds.indexOfId(r.id))!=-1){v.onRowSelect(i);}else{s.remove(r);}});},onRemove:function(v,index,r){this.selections.remove(r);},onRowUpdated:function(v,index,r){if(this.isSelected(r)){v.onRowSelect(index);}},selectRecords:function(records,keepExisting){if(!keepExisting){this.clearSelections();} -var ds=this.grid.dataSource;for(var i=0,len=records.length;i<len;i++){this.selectRow(ds.indexOf(records[i]),true);}},getCount:function(){return this.selections.length;},selectFirstRow:function(){this.selectRow(0);},selectLastRow:function(keepExisting){this.selectRow(this.grid.dataSource.getCount()-1,keepExisting);},selectNext:function(keepExisting){if(this.last!==false&&(this.last+1)<this.grid.dataSource.getCount()){this.selectRow(this.last+1,keepExisting);this.grid.getView().focusRow(this.last);}},selectPrevious:function(keepExisting){if(this.last){this.selectRow(this.last-1,keepExisting);this.grid.getView().focusRow(this.last);}},getSelections:function(){return[].concat(this.selections.items);},getSelected:function(){return this.selections.itemAt(0);},clearSelections:function(fast){if(this.locked)return;if(fast!==true){var ds=this.grid.dataSource;var s=this.selections;s.each(function(r){this.deselectRow(ds.indexOfId(r.id));},this);s.clear();}else{this.selections.clear();} -this.last=false;},selectAll:function(){if(this.locked)return;this.selections.clear();for(var i=0,len=this.grid.dataSource.getCount();i<len;i++){this.selectRow(i,true);}},hasSelection:function(){return this.selections.length>0;},isSelected:function(index){var r=typeof index=="number"?this.grid.dataSource.getAt(index):index;return(r&&this.selections.key(r.id)?true:false);},isIdSelected:function(id){return(this.selections.key(id)?true:false);},handleMouseDown:function(e,t){var view=this.grid.getView(),rowIndex;if(this.isLocked()||(rowIndex=view.findRowIndex(t))===false){return;};if(e.shiftKey&&this.last!==false){var last=this.last;this.selectRange(last,rowIndex,e.ctrlKey);this.last=last;view.focusRow(rowIndex);}else{var isSelected=this.isSelected(rowIndex);if(e.button!=0&&isSelected){view.focusRow(rowIndex);}else if(e.ctrlKey&&isSelected){this.deselectRow(rowIndex);}else{this.selectRow(rowIndex,e.button==0&&(e.ctrlKey||e.shiftKey));view.focusRow(rowIndex);}}},selectRows:function(rows,keepExisting){if(!keepExisting){this.clearSelections();} -for(var i=0,len=rows.length;i<len;i++){this.selectRow(rows[i],true);}},selectRange:function(startRow,endRow,keepExisting){if(this.locked)return;if(!keepExisting){this.clearSelections();} -if(startRow<=endRow){for(var i=startRow;i<=endRow;i++){this.selectRow(i,true);}}else{for(var i=startRow;i>=endRow;i--){this.selectRow(i,true);}}},deselectRange:function(startRow,endRow,preventViewNotify){if(this.locked)return;for(var i=startRow;i<=endRow;i++){this.deselectRow(i,preventViewNotify);}},selectRow:function(index,keepExisting,preventViewNotify){if(this.locked||(index<0||index>=this.grid.dataSource.getCount()))return;if(this.fireEvent("beforerowselect",this,index,keepExisting)!==false){if(!keepExisting||this.singleSelect){this.clearSelections();} -var r=this.grid.dataSource.getAt(index);this.selections.add(r);this.last=this.lastActive=index;if(!preventViewNotify){this.grid.getView().onRowSelect(index);} -this.fireEvent("rowselect",this,index,r);this.fireEvent("selectionchange",this);}},deselectRow:function(index,preventViewNotify){if(this.locked)return;if(this.last==index){this.last=false;} -if(this.lastActive==index){this.lastActive=false;} -var r=this.grid.dataSource.getAt(index);this.selections.remove(r);if(!preventViewNotify){this.grid.getView().onRowDeselect(index);} -this.fireEvent("rowdeselect",this,index);this.fireEvent("selectionchange",this);},restoreLast:function(){if(this._last){this.last=this._last;}},acceptsNav:function(row,col,cm){return!cm.isHidden(col)&&cm.isCellEditable(col,row);},onEditorKey:function(field,e){var k=e.getKey(),newCell,g=this.grid,ed=g.activeEditor;if(k==e.TAB){e.stopEvent();ed.completeEdit();if(e.shiftKey){newCell=g.walkCells(ed.row,ed.col-1,-1,this.acceptsNav,this);}else{newCell=g.walkCells(ed.row,ed.col+1,1,this.acceptsNav,this);}}else if(k==e.ENTER&&!e.ctrlKey){e.stopEvent();ed.completeEdit();if(e.shiftKey){newCell=g.walkCells(ed.row-1,ed.col,-1,this.acceptsNav,this);}else{newCell=g.walkCells(ed.row+1,ed.col,1,this.acceptsNav,this);}}else if(k==e.ESC){ed.cancelEdit();} -if(newCell){g.startEditing(newCell[0],newCell[1]);}}}); - -Ext.grid.CellSelectionModel=function(config){Ext.apply(this,config);this.selection=null;this.addEvents({"beforecellselect":true,"cellselect":true,"selectionchange":true});};Ext.extend(Ext.grid.CellSelectionModel,Ext.grid.AbstractSelectionModel,{initEvents:function(){this.grid.on("mousedown",this.handleMouseDown,this);this.grid.getGridEl().on(Ext.isIE?"keydown":"keypress",this.handleKeyDown,this);var view=this.grid.view;view.on("refresh",this.onViewChange,this);view.on("rowupdated",this.onRowUpdated,this);view.on("beforerowremoved",this.clearSelections,this);view.on("beforerowsinserted",this.clearSelections,this);if(this.grid.isEditor){this.grid.on("beforeedit",this.beforeEdit,this);}},beforeEdit:function(e){this.select(e.row,e.column,false,true,e.record);},onRowUpdated:function(v,index,r){if(this.selection&&this.selection.record==r){v.onCellSelect(index,this.selection.cell[1]);}},onViewChange:function(){this.clearSelections(true);},getSelectedCell:function(){return this.selection?this.selection.cell:null;},clearSelections:function(preventNotify){var s=this.selection;if(s){if(preventNotify!==true){this.grid.view.onCellDeselect(s.cell[0],s.cell[1]);} -this.selection=null;this.fireEvent("selectionchange",this,null);}},hasSelection:function(){return this.selection?true:false;},handleMouseDown:function(e,t){var v=this.grid.getView();if(this.isLocked()){return;};var row=v.findRowIndex(t);var cell=v.findCellIndex(t);if(row!==false&&cell!==false){this.select(row,cell);}},select:function(rowIndex,colIndex,preventViewNotify,preventFocus,r){if(this.fireEvent("beforecellselect",this,rowIndex,colIndex)!==false){this.clearSelections();r=r||this.grid.dataSource.getAt(rowIndex);this.selection={record:r,cell:[rowIndex,colIndex]};if(!preventViewNotify){var v=this.grid.getView();v.onCellSelect(rowIndex,colIndex);if(preventFocus!==true){v.focusCell(rowIndex,colIndex);}} -this.fireEvent("cellselect",this,rowIndex,colIndex);this.fireEvent("selectionchange",this,this.selection);}},isSelectable:function(rowIndex,colIndex,cm){return!cm.isHidden(colIndex);},handleKeyDown:function(e){if(!e.isNavKeyPress()){return;} -var g=this.grid,s=this.selection;if(!s){e.stopEvent();var cell=g.walkCells(0,0,1,this.isSelectable,this);if(cell){this.select(cell[0],cell[1]);} -return;} -var sm=this;var walk=function(row,col,step){return g.walkCells(row,col,step,sm.isSelectable,sm);};var k=e.getKey(),r=s.cell[0],c=s.cell[1];var newCell;switch(k){case e.TAB:if(e.shiftKey){newCell=walk(r,c-1,-1);}else{newCell=walk(r,c+1,1);} -break;case e.DOWN:newCell=walk(r+1,c,1);break;case e.UP:newCell=walk(r-1,c,-1);break;case e.RIGHT:newCell=walk(r,c+1,1);break;case e.LEFT:newCell=walk(r,c-1,-1);break;case e.ENTER:if(g.isEditor&&!g.editing){g.startEditing(r,c);e.stopEvent();return;} -break;};if(newCell){this.select(newCell[0],newCell[1]);e.stopEvent();}},acceptsNav:function(row,col,cm){return!cm.isHidden(col)&&cm.isCellEditable(col,row);},onEditorKey:function(field,e){var k=e.getKey(),newCell,g=this.grid,ed=g.activeEditor;if(k==e.TAB){if(e.shiftKey){newCell=g.walkCells(ed.row,ed.col-1,-1,this.acceptsNav,this);}else{newCell=g.walkCells(ed.row,ed.col+1,1,this.acceptsNav,this);} -e.stopEvent();}else if(k==e.ENTER&&!e.ctrlKey){ed.completeEdit();e.stopEvent();}else if(k==e.ESC){ed.cancelEdit();} -if(newCell){g.startEditing(newCell[0],newCell[1]);}}}); - -Ext.grid.HeaderDragZone=function(grid,hd,hd2){this.grid=grid;this.view=grid.getView();this.ddGroup="gridHeader"+this.grid.getGridEl().id;Ext.grid.HeaderDragZone.superclass.constructor.call(this,hd);if(hd2){this.setHandleElId(Ext.id(hd));this.setOuterHandleElId(Ext.id(hd2));} -this.scroll=false;};Ext.extend(Ext.grid.HeaderDragZone,Ext.dd.DragZone,{maxDragWidth:120,getDragData:function(e){var t=Ext.lib.Event.getTarget(e);var h=this.view.findHeaderCell(t);if(h){return{ddel:h.firstChild,header:h};} -return false;},onInitDrag:function(e){this.view.headersDisabled=true;var clone=this.dragData.ddel.cloneNode(true);clone.id=Ext.id();clone.style.width=Math.min(this.dragData.header.offsetWidth,this.maxDragWidth)+"px";this.proxy.update(clone);return true;},afterValidDrop:function(){var v=this.view;setTimeout(function(){v.headersDisabled=false;},50);},afterInvalidDrop:function(){var v=this.view;setTimeout(function(){v.headersDisabled=false;},50);}});Ext.grid.HeaderDropZone=function(grid,hd,hd2){this.grid=grid;this.view=grid.getView();this.proxyTop=Ext.DomHelper.append(document.body,{tag:"div",cls:"col-move-top",html:" "},true);this.proxyBottom=Ext.DomHelper.append(document.body,{tag:"div",cls:"col-move-bottom",html:" "},true);this.proxyTop.hide=this.proxyBottom.hide=function(){this.setLeftTop(-100,-100);this.setStyle("visibility","hidden");};this.ddGroup="gridHeader"+this.grid.getGridEl().id;Ext.grid.HeaderDropZone.superclass.constructor.call(this,grid.getGridEl().dom);};Ext.extend(Ext.grid.HeaderDropZone,Ext.dd.DropZone,{proxyOffsets:[-4,-9],fly:Ext.Element.fly,getTargetFromEvent:function(e){var t=Ext.lib.Event.getTarget(e);var cindex=this.view.findCellIndex(t);if(cindex!==false){return this.view.getHeaderCell(cindex);}},nextVisible:function(h){var v=this.view,cm=this.grid.colModel;h=h.nextSibling;while(h){if(!cm.isHidden(v.getCellIndex(h))){return h;} -h=h.nextSibling;} -return null;},prevVisible:function(h){var v=this.view,cm=this.grid.colModel;h=h.prevSibling;while(h){if(!cm.isHidden(v.getCellIndex(h))){return h;} -h=h.prevSibling;} -return null;},positionIndicator:function(h,n,e){var x=Ext.lib.Event.getPageX(e);var r=Ext.lib.Dom.getRegion(n.firstChild);var px,pt,py=r.top+this.proxyOffsets[1];if((r.right-x)<=(r.right-r.left)/2){px=r.right+this.view.borderWidth;pt="after";}else{px=r.left;pt="before";} -var oldIndex=this.view.getCellIndex(h);var newIndex=this.view.getCellIndex(n);if(this.grid.colModel.isFixed(newIndex)){return false;} -var locked=this.grid.colModel.isLocked(newIndex);if(pt=="after"){newIndex++;} -if(oldIndex<newIndex){newIndex--;} -if(oldIndex==newIndex&&(locked==this.grid.colModel.isLocked(oldIndex))){return false;} -px+=this.proxyOffsets[0];this.proxyTop.setLeftTop(px,py);this.proxyTop.show();if(!this.bottomOffset){this.bottomOffset=this.view.mainHd.getHeight();} -this.proxyBottom.setLeftTop(px,py+this.proxyTop.dom.offsetHeight+this.bottomOffset);this.proxyBottom.show();return pt;},onNodeEnter:function(n,dd,e,data){if(data.header!=n){this.positionIndicator(data.header,n,e);}},onNodeOver:function(n,dd,e,data){var result=false;if(data.header!=n){result=this.positionIndicator(data.header,n,e);} -if(!result){this.proxyTop.hide();this.proxyBottom.hide();} -return result?this.dropAllowed:this.dropNotAllowed;},onNodeOut:function(n,dd,e,data){this.proxyTop.hide();this.proxyBottom.hide();},onNodeDrop:function(n,dd,e,data){var h=data.header;if(h!=n){var cm=this.grid.colModel;var x=Ext.lib.Event.getPageX(e);var r=Ext.lib.Dom.getRegion(n.firstChild);var pt=(r.right-x)<=((r.right-r.left)/2)?"after":"before";var oldIndex=this.view.getCellIndex(h);var newIndex=this.view.getCellIndex(n);var locked=cm.isLocked(newIndex);if(pt=="after"){newIndex++;} -if(oldIndex<newIndex){newIndex--;} -if(oldIndex==newIndex&&(locked==cm.isLocked(oldIndex))){return false;} -cm.setLocked(oldIndex,locked,true);cm.moveColumn(oldIndex,newIndex);this.grid.fireEvent("columnmove",oldIndex,newIndex);return true;} -return false;}});Ext.grid.GridView.ColumnDragZone=function(grid,hd){Ext.grid.GridView.ColumnDragZone.superclass.constructor.call(this,grid,hd,null);this.proxy.el.addClass('x-grid3-col-dd');};Ext.extend(Ext.grid.GridView.ColumnDragZone,Ext.grid.HeaderDragZone,{handleMouseDown:function(e){},callHandleMouseDown:function(e){Ext.grid.GridView.ColumnDragZone.superclass.handleMouseDown.call(this,e);}}); - -Ext.grid.SplitDragZone=function(grid,hd,hd2){this.grid=grid;this.view=grid.getView();this.proxy=this.view.resizeProxy;Ext.grid.SplitDragZone.superclass.constructor.call(this,hd,"gridSplitters"+this.grid.getGridEl().id,{dragElId:Ext.id(this.proxy.dom),resizeFrame:false});this.setHandleElId(Ext.id(hd));this.setOuterHandleElId(Ext.id(hd2));this.scroll=false;};Ext.extend(Ext.grid.SplitDragZone,Ext.dd.DDProxy,{fly:Ext.Element.fly,b4StartDrag:function(x,y){this.view.headersDisabled=true;this.proxy.setHeight(this.view.mainWrap.getHeight());var w=this.cm.getColumnWidth(this.cellIndex);var minw=Math.max(w-this.grid.minColumnWidth,0);this.resetConstraints();this.setXConstraint(minw,1000);this.setYConstraint(0,0);this.minX=x-minw;this.maxX=x+1000;this.startPos=x;Ext.dd.DDProxy.prototype.b4StartDrag.call(this,x,y);},handleMouseDown:function(e){ev=Ext.EventObject.setEvent(e);var t=this.fly(ev.getTarget());if(t.hasClass("x-grid-split")){this.cellIndex=this.view.getCellIndex(t.dom);this.split=t.dom;this.cm=this.grid.colModel;if(this.cm.isResizable(this.cellIndex)&&!this.cm.isFixed(this.cellIndex)){Ext.grid.SplitDragZone.superclass.handleMouseDown.apply(this,arguments);}}},endDrag:function(e){this.view.headersDisabled=false;var endX=Math.max(this.minX,Ext.lib.Event.getPageX(e));var diff=endX-this.startPos;this.view.onColumnSplitterMoved(this.cellIndex,this.cm.getColumnWidth(this.cellIndex)+diff);},autoOffset:function(){this.setDelta(0,0);}}); - -Ext.grid.GridDragZone=function(grid,config){this.view=grid.getView();Ext.grid.GridDragZone.superclass.constructor.call(this,this.view.mainBody.dom,config);if(this.view.lockedBody){this.setHandleElId(Ext.id(this.view.mainBody.dom));this.setOuterHandleElId(Ext.id(this.view.lockedBody.dom));} -this.scroll=false;this.grid=grid;this.ddel=document.createElement('div');this.ddel.className='x-grid-dd-wrap';};Ext.extend(Ext.grid.GridDragZone,Ext.dd.DragZone,{ddGroup:"GridDD",getDragData:function(e){var t=Ext.lib.Event.getTarget(e);var rowIndex=this.view.findRowIndex(t);if(rowIndex!==false){var sm=this.grid.selModel;if(!sm.isSelected(rowIndex)||e.hasModifier()){sm.handleMouseDown(e,t);} -return{grid:this.grid,ddel:this.ddel,rowIndex:rowIndex,selections:sm.getSelections()};} -return false;},onInitDrag:function(e){var data=this.dragData;this.ddel.innerHTML=this.grid.getDragDropText();this.proxy.update(this.ddel);},afterRepair:function(){this.dragging=false;},getRepairXY:function(e,data){return false;},onEndDrag:function(data,e){},onValidDrop:function(dd,e,id){this.hideProxy();},beforeInvalidDrop:function(e,id){}}); diff --git a/lib/web/extjs/package/layout/layout-debug.js b/lib/web/extjs/package/layout/layout-debug.js deleted file mode 100644 index 5cfeaa6fa01b00fd76a97b5e3292ea1f493a1082..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/layout/layout-debug.js +++ /dev/null @@ -1,2032 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.LayoutManager = function(container, config){ - Ext.LayoutManager.superclass.constructor.call(this); - this.el = Ext.get(container); - // ie scrollbar fix - if(this.el.dom == document.body && Ext.isIE && !config.allowScroll){ - document.body.scroll = "no"; - }else if(this.el.dom != document.body && this.el.getStyle('position') == 'static'){ - this.el.position('relative'); - } - this.id = this.el.id; - this.el.addClass("x-layout-container"); - - this.monitorWindowResize = true; - this.regions = {}; - this.addEvents({ - - "layout" : true, - - "regionresized" : true, - - "regioncollapsed" : true, - - "regionexpanded" : true - }); - this.updating = false; - Ext.EventManager.onWindowResize(this.onWindowResize, this, true); -}; - -Ext.extend(Ext.LayoutManager, Ext.util.Observable, { - - isUpdating : function(){ - return this.updating; - }, - - - beginUpdate : function(){ - this.updating = true; - }, - - - endUpdate : function(noLayout){ - this.updating = false; - if(!noLayout){ - this.layout(); - } - }, - - layout: function(){ - - }, - - onRegionResized : function(region, newSize){ - this.fireEvent("regionresized", region, newSize); - this.layout(); - }, - - onRegionCollapsed : function(region){ - this.fireEvent("regioncollapsed", region); - }, - - onRegionExpanded : function(region){ - this.fireEvent("regionexpanded", region); - }, - - - getViewSize : function(){ - var size; - if(this.el.dom != document.body){ - size = this.el.getSize(); - }else{ - size = {width: Ext.lib.Dom.getViewWidth(), height: Ext.lib.Dom.getViewHeight()}; - } - size.width -= this.el.getBorderWidth("lr")-this.el.getPadding("lr"); - size.height -= this.el.getBorderWidth("tb")-this.el.getPadding("tb"); - return size; - }, - - - getEl : function(){ - return this.el; - }, - - - getRegion : function(target){ - return this.regions[target.toLowerCase()]; - }, - - onWindowResize : function(){ - if(this.monitorWindowResize){ - this.layout(); - } - } -}); - -Ext.BorderLayout = function(container, config){ - config = config || {}; - Ext.BorderLayout.superclass.constructor.call(this, container, config); - this.factory = config.factory || Ext.BorderLayout.RegionFactory; - for(var i = 0, len = this.factory.validRegions.length; i < len; i++) { - var target = this.factory.validRegions[i]; - if(config[target]){ - this.addRegion(target, config[target]); - } - } -}; - -Ext.extend(Ext.BorderLayout, Ext.LayoutManager, { - - addRegion : function(target, config){ - if(!this.regions[target]){ - var r = this.factory.create(target, this, config); - this.bindRegion(target, r); - } - return this.regions[target]; - }, - - // private (kinda) - bindRegion : function(name, r){ - this.regions[name] = r; - r.on("visibilitychange", this.layout, this); - r.on("paneladded", this.layout, this); - r.on("panelremoved", this.layout, this); - r.on("invalidated", this.layout, this); - r.on("resized", this.onRegionResized, this); - r.on("collapsed", this.onRegionCollapsed, this); - r.on("expanded", this.onRegionExpanded, this); - }, - - - layout : function(){ - if(this.updating) return; - var size = this.getViewSize(); - var w = size.width, h = size.height; - var centerW = w, centerH = h, centerY = 0, centerX = 0; - //var x = 0, y = 0; - - var rs = this.regions; - var n = rs["north"], s = rs["south"], west = rs["west"], e = rs["east"], c = rs["center"]; - //if(this.hideOnLayout){ // not supported anymore - //c.el.setStyle("display", "none"); - //} - if(n && n.isVisible()){ - var b = n.getBox(); - var m = n.getMargins(); - b.width = w - (m.left+m.right); - b.x = m.left; - b.y = m.top; - centerY = b.height + b.y + m.bottom; - centerH -= centerY; - n.updateBox(this.safeBox(b)); - } - if(s && s.isVisible()){ - var b = s.getBox(); - var m = s.getMargins(); - b.width = w - (m.left+m.right); - b.x = m.left; - var totalHeight = (b.height + m.top + m.bottom); - b.y = h - totalHeight + m.top; - centerH -= totalHeight; - s.updateBox(this.safeBox(b)); - } - if(west && west.isVisible()){ - var b = west.getBox(); - var m = west.getMargins(); - b.height = centerH - (m.top+m.bottom); - b.x = m.left; - b.y = centerY + m.top; - var totalWidth = (b.width + m.left + m.right); - centerX += totalWidth; - centerW -= totalWidth; - west.updateBox(this.safeBox(b)); - } - if(e && e.isVisible()){ - var b = e.getBox(); - var m = e.getMargins(); - b.height = centerH - (m.top+m.bottom); - var totalWidth = (b.width + m.left + m.right); - b.x = w - totalWidth + m.left; - b.y = centerY + m.top; - centerW -= totalWidth; - e.updateBox(this.safeBox(b)); - } - if(c){ - var m = c.getMargins(); - var centerBox = { - x: centerX + m.left, - y: centerY + m.top, - width: centerW - (m.left+m.right), - height: centerH - (m.top+m.bottom) - }; - //if(this.hideOnLayout){ - //c.el.setStyle("display", "block"); - //} - c.updateBox(this.safeBox(centerBox)); - } - this.el.repaint(); - this.fireEvent("layout", this); - }, - - safeBox : function(box){ - box.width = Math.max(0, box.width); - box.height = Math.max(0, box.height); - return box; - }, - - - add : function(target, panel){ - target = target.toLowerCase(); - return this.regions[target].add(panel); - }, - - - remove : function(target, panel){ - target = target.toLowerCase(); - return this.regions[target].remove(panel); - }, - - - findPanel : function(panelId){ - var rs = this.regions; - for(var target in rs){ - if(typeof rs[target] != "function"){ - var p = rs[target].getPanel(panelId); - if(p){ - return p; - } - } - } - return null; - }, - - - showPanel : function(panelId) { - var rs = this.regions; - for(var target in rs){ - var r = rs[target]; - if(typeof r != "function"){ - if(r.hasPanel(panelId)){ - return r.showPanel(panelId); - } - } - } - return null; - }, - - - restoreState : function(provider){ - if(!provider){ - provider = Ext.state.Manager; - } - var sm = new Ext.LayoutStateManager(); - sm.init(this, provider); - }, - - - batchAdd : function(regions){ - this.beginUpdate(); - for(var rname in regions){ - var lr = this.regions[rname]; - if(lr){ - this.addTypedPanels(lr, regions[rname]); - } - } - this.endUpdate(); - }, - - - addTypedPanels : function(lr, ps){ - if(typeof ps == 'string'){ - lr.add(new Ext.ContentPanel(ps)); - } - else if(ps instanceof Array){ - for(var i =0, len = ps.length; i < len; i++){ - this.addTypedPanels(lr, ps[i]); - } - } - else if(!ps.events){ // raw config? - var el = ps.el; - delete ps.el; // prevent conflict - lr.add(new Ext.ContentPanel(el || Ext.id(), ps)); - } - else { // panel object assumed! - lr.add(ps); - } - } -}); - -Ext.BorderLayout.create = function(config, targetEl){ - var layout = new Ext.BorderLayout(targetEl || document.body, config); - layout.beginUpdate(); - var regions = Ext.BorderLayout.RegionFactory.validRegions; - for(var j = 0, jlen = regions.length; j < jlen; j++){ - var lr = regions[j]; - if(layout.regions[lr] && config[lr].panels){ - var r = layout.regions[lr]; - var ps = config[lr].panels; - layout.addTypedPanels(r, ps); - } - } - layout.endUpdate(); - return layout; -}; - -Ext.BorderLayout.RegionFactory = { - validRegions : ["north","south","east","west","center"], - - create : function(target, mgr, config){ - target = target.toLowerCase(); - if(config.lightweight || config.basic){ - return new Ext.BasicLayoutRegion(mgr, config, target); - } - switch(target){ - case "north": - return new Ext.NorthLayoutRegion(mgr, config); - case "south": - return new Ext.SouthLayoutRegion(mgr, config); - case "east": - return new Ext.EastLayoutRegion(mgr, config); - case "west": - return new Ext.WestLayoutRegion(mgr, config); - case "center": - return new Ext.CenterLayoutRegion(mgr, config); - } - throw 'Layout region "'+target+'" not supported.'; - } -}; - -Ext.BasicLayoutRegion = function(mgr, config, pos, skipConfig){ - this.mgr = mgr; - this.position = pos; - this.events = { - - "beforeremove" : true, - - "invalidated" : true, - - "visibilitychange" : true, - - "paneladded" : true, - - "panelremoved" : true, - - "collapsed" : true, - - "expanded" : true, - - "slideshow" : true, - - "slidehide" : true, - - "panelactivated" : true, - - "resized" : true - }; - - this.panels = new Ext.util.MixedCollection(); - this.panels.getKey = this.getPanelId.createDelegate(this); - this.box = null; - this.activePanel = null; - if(skipConfig !== true){ - this.applyConfig(config); - } -}; - -Ext.extend(Ext.BasicLayoutRegion, Ext.util.Observable, { - getPanelId : function(p){ - return p.getId(); - }, - - applyConfig : function(config){ - this.margins = config.margins || this.margins || {top: 0, left: 0, right:0, bottom: 0}; - this.config = config; - }, - - - resizeTo : function(newSize){ - var el = this.el ? this.el : - (this.activePanel ? this.activePanel.getEl() : null); - if(el){ - switch(this.position){ - case "east": - case "west": - el.setWidth(newSize); - this.fireEvent("resized", this, newSize); - break; - case "north": - case "south": - el.setHeight(newSize); - this.fireEvent("resized", this, newSize); - break; - } - } - }, - - getBox : function(){ - return this.activePanel ? this.activePanel.getEl().getBox(false, true) : null; - }, - - getMargins : function(){ - return this.margins; - }, - - updateBox : function(box){ - this.box = box; - var el = this.activePanel.getEl(); - el.dom.style.left = box.x + "px"; - el.dom.style.top = box.y + "px"; - this.activePanel.setSize(box.width, box.height); - }, - - - getEl : function(){ - return this.activePanel; - }, - - - isVisible : function(){ - return this.activePanel ? true : false; - }, - - setActivePanel : function(panel){ - panel = this.getPanel(panel); - if(this.activePanel && this.activePanel != panel){ - this.activePanel.setActiveState(false); - this.activePanel.getEl().setLeftTop(-10000,-10000); - } - this.activePanel = panel; - panel.setActiveState(true); - if(this.box){ - panel.setSize(this.box.width, this.box.height); - } - this.fireEvent("panelactivated", this, panel); - this.fireEvent("invalidated"); - }, - - - showPanel : function(panel){ - if(panel = this.getPanel(panel)){ - this.setActivePanel(panel); - } - return panel; - }, - - - getActivePanel : function(){ - return this.activePanel; - }, - - - add : function(panel){ - if(arguments.length > 1){ - for(var i = 0, len = arguments.length; i < len; i++) { - this.add(arguments[i]); - } - return null; - } - if(this.hasPanel(panel)){ - this.showPanel(panel); - return panel; - } - var el = panel.getEl(); - if(el.dom.parentNode != this.mgr.el.dom){ - this.mgr.el.dom.appendChild(el.dom); - } - if(panel.setRegion){ - panel.setRegion(this); - } - this.panels.add(panel); - el.setStyle("position", "absolute"); - if(!panel.background){ - this.setActivePanel(panel); - if(this.config.initialSize && this.panels.getCount()==1){ - this.resizeTo(this.config.initialSize); - } - } - this.fireEvent("paneladded", this, panel); - return panel; - }, - - - hasPanel : function(panel){ - if(typeof panel == "object"){ // must be panel obj - panel = panel.getId(); - } - return this.getPanel(panel) ? true : false; - }, - - - remove : function(panel, preservePanel){ - panel = this.getPanel(panel); - if(!panel){ - return null; - } - var e = {}; - this.fireEvent("beforeremove", this, panel, e); - if(e.cancel === true){ - return null; - } - var panelId = panel.getId(); - this.panels.removeKey(panelId); - return panel; - }, - - - getPanel : function(id){ - if(typeof id == "object"){ // must be panel obj - return id; - } - return this.panels.get(id); - }, - - - getPosition: function(){ - return this.position; - } -}); - -Ext.LayoutRegion = function(mgr, config, pos){ - Ext.LayoutRegion.superclass.constructor.call(this, mgr, config, pos, true); - var dh = Ext.DomHelper; - - this.el = dh.append(mgr.el.dom, {tag: "div", cls: "x-layout-panel x-layout-panel-" + this.position}, true); - - - this.titleEl = dh.append(this.el.dom, {tag: "div", unselectable: "on", cls: "x-unselectable x-layout-panel-hd x-layout-title-"+this.position, children:[ - {tag: "span", cls: "x-unselectable x-layout-panel-hd-text", unselectable: "on", html: " "}, - {tag: "div", cls: "x-unselectable x-layout-panel-hd-tools", unselectable: "on"} - ]}, true); - this.titleEl.enableDisplayMode(); - - this.titleTextEl = this.titleEl.dom.firstChild; - this.tools = Ext.get(this.titleEl.dom.childNodes[1], true); - this.closeBtn = this.createTool(this.tools.dom, "x-layout-close"); - this.closeBtn.enableDisplayMode(); - this.closeBtn.on("click", this.closeClicked, this); - this.closeBtn.hide(); - - this.createBody(config); - this.visible = true; - this.collapsed = false; - - if(config.hideWhenEmpty){ - this.hide(); - this.on("paneladded", this.validateVisibility, this); - this.on("panelremoved", this.validateVisibility, this); - } - this.applyConfig(config); -}; - -Ext.extend(Ext.LayoutRegion, Ext.BasicLayoutRegion, { - - createBody : function(){ - - this.bodyEl = this.el.createChild({tag: "div", cls: "x-layout-panel-body"}); - }, - - applyConfig : function(c){ - if(c.collapsible && this.position != "center" && !this.collapsedEl){ - var dh = Ext.DomHelper; - if(c.titlebar !== false){ - this.collapseBtn = this.createTool(this.tools.dom, "x-layout-collapse-"+this.position); - this.collapseBtn.on("click", this.collapse, this); - this.collapseBtn.enableDisplayMode(); - - if(c.showPin === true || this.showPin){ - this.stickBtn = this.createTool(this.tools.dom, "x-layout-stick"); - this.stickBtn.enableDisplayMode(); - this.stickBtn.on("click", this.expand, this); - this.stickBtn.hide(); - } - } - - this.collapsedEl = dh.append(this.mgr.el.dom, {cls: "x-layout-collapsed x-layout-collapsed-"+this.position, children:[ - {cls: "x-layout-collapsed-tools", children:[{cls: "x-layout-ctools-inner"}]} - ]}, true); - if(c.floatable !== false){ - this.collapsedEl.addClassOnOver("x-layout-collapsed-over"); - this.collapsedEl.on("click", this.collapseClick, this); - } - - if(c.collapsedTitle && (this.position == "north" || this.position== "south")) { - this.collapsedTitleTextEl = dh.append(this.collapsedEl.dom, {tag: "div", cls: "x-unselectable x-layout-panel-hd-text", - id: "message", unselectable: "on", style:{"float":"left"}}); - this.collapsedTitleTextEl.innerHTML = c.collapsedTitle; - } - this.expandBtn = this.createTool(this.collapsedEl.dom.firstChild.firstChild, "x-layout-expand-"+this.position); - this.expandBtn.on("click", this.expand, this); - } - if(this.collapseBtn){ - this.collapseBtn.setVisible(c.collapsible == true); - } - this.cmargins = c.cmargins || this.cmargins || - (this.position == "west" || this.position == "east" ? - {top: 0, left: 2, right:2, bottom: 0} : - {top: 2, left: 0, right:0, bottom: 2}); - this.margins = c.margins || this.margins || {top: 0, left: 0, right:0, bottom: 0}; - this.bottomTabs = c.tabPosition != "top"; - this.autoScroll = c.autoScroll || false; - if(this.autoScroll){ - this.bodyEl.setStyle("overflow", "auto"); - }else{ - this.bodyEl.setStyle("overflow", "hidden"); - } - //if(c.titlebar !== false){ - if((!c.titlebar && !c.title) || c.titlebar === false){ - this.titleEl.hide(); - }else{ - this.titleEl.show(); - if(c.title){ - this.titleTextEl.innerHTML = c.title; - } - } - //} - this.duration = c.duration || .30; - this.slideDuration = c.slideDuration || .45; - this.config = c; - if(c.collapsed){ - this.collapse(true); - } - if(c.hidden){ - this.hide(); - } - }, - - isVisible : function(){ - return this.visible; - }, - - - setCollapsedTitle : function(title){ - title = title || " "; - if(this.collapsedTitleTextEl){ - this.collapsedTitleTextEl.innerHTML = title; - } - }, - - getBox : function(){ - var b; - if(!this.collapsed){ - b = this.el.getBox(false, true); - }else{ - b = this.collapsedEl.getBox(false, true); - } - return b; - }, - - getMargins : function(){ - return this.collapsed ? this.cmargins : this.margins; - }, - - highlight : function(){ - this.el.addClass("x-layout-panel-dragover"); - }, - - unhighlight : function(){ - this.el.removeClass("x-layout-panel-dragover"); - }, - - updateBox : function(box){ - this.box = box; - if(!this.collapsed){ - this.el.dom.style.left = box.x + "px"; - this.el.dom.style.top = box.y + "px"; - this.updateBody(box.width, box.height); - }else{ - this.collapsedEl.dom.style.left = box.x + "px"; - this.collapsedEl.dom.style.top = box.y + "px"; - this.collapsedEl.setSize(box.width, box.height); - } - if(this.tabs){ - this.tabs.autoSizeTabs(); - } - }, - - updateBody : function(w, h){ - if(w !== null){ - this.el.setWidth(w); - w -= this.el.getBorderWidth("rl"); - if(this.config.adjustments){ - w += this.config.adjustments[0]; - } - } - if(h !== null){ - this.el.setHeight(h); - h = this.titleEl && this.titleEl.isDisplayed() ? h - (this.titleEl.getHeight()||0) : h; - h -= this.el.getBorderWidth("tb"); - if(this.config.adjustments){ - h += this.config.adjustments[1]; - } - this.bodyEl.setHeight(h); - if(this.tabs){ - h = this.tabs.syncHeight(h); - } - } - if(this.panelSize){ - w = w !== null ? w : this.panelSize.width; - h = h !== null ? h : this.panelSize.height; - } - if(this.activePanel){ - var el = this.activePanel.getEl(); - w = w !== null ? w : el.getWidth(); - h = h !== null ? h : el.getHeight(); - this.panelSize = {width: w, height: h}; - this.activePanel.setSize(w, h); - } - if(Ext.isIE && this.tabs){ - this.tabs.el.repaint(); - } - }, - - - getEl : function(){ - return this.el; - }, - - - hide : function(){ - if(!this.collapsed){ - this.el.dom.style.left = "-2000px"; - this.el.hide(); - }else{ - this.collapsedEl.dom.style.left = "-2000px"; - this.collapsedEl.hide(); - } - this.visible = false; - this.fireEvent("visibilitychange", this, false); - }, - - - show : function(){ - if(!this.collapsed){ - this.el.show(); - }else{ - this.collapsedEl.show(); - } - this.visible = true; - this.fireEvent("visibilitychange", this, true); - }, - - closeClicked : function(){ - if(this.activePanel){ - this.remove(this.activePanel); - } - }, - - collapseClick : function(e){ - if(this.isSlid){ - e.stopPropagation(); - this.slideIn(); - }else{ - e.stopPropagation(); - this.slideOut(); - } - }, - - - collapse : function(skipAnim){ - if(this.collapsed) return; - this.collapsed = true; - if(this.split){ - this.split.el.hide(); - } - if(this.config.animate && skipAnim !== true){ - this.fireEvent("invalidated", this); - this.animateCollapse(); - }else{ - this.el.setLocation(-20000,-20000); - this.el.hide(); - this.collapsedEl.show(); - this.fireEvent("collapsed", this); - this.fireEvent("invalidated", this); - } - }, - - animateCollapse : function(){ - // overridden - }, - - - expand : function(e, skipAnim){ - if(e) e.stopPropagation(); - if(!this.collapsed || this.el.hasActiveFx()) return; - if(this.isSlid){ - this.afterSlideIn(); - skipAnim = true; - } - this.collapsed = false; - if(this.config.animate && skipAnim !== true){ - this.animateExpand(); - }else{ - this.el.show(); - if(this.split){ - this.split.el.show(); - } - this.collapsedEl.setLocation(-2000,-2000); - this.collapsedEl.hide(); - this.fireEvent("invalidated", this); - this.fireEvent("expanded", this); - } - }, - - animateExpand : function(){ - // overridden - }, - - initTabs : function(){ - this.bodyEl.setStyle("overflow", "hidden"); - var ts = new Ext.TabPanel(this.bodyEl.dom, { - tabPosition: this.bottomTabs ? 'bottom' : 'top', - disableTooltips: this.config.disableTabTips - }); - if(this.config.hideTabs){ - ts.stripWrap.setDisplayed(false); - } - this.tabs = ts; - ts.resizeTabs = this.config.resizeTabs === true; - ts.minTabWidth = this.config.minTabWidth || 40; - ts.maxTabWidth = this.config.maxTabWidth || 250; - ts.preferredTabWidth = this.config.preferredTabWidth || 150; - ts.monitorResize = false; - ts.bodyEl.setStyle("overflow", this.config.autoScroll ? "auto" : "hidden"); - ts.bodyEl.addClass('x-layout-tabs-body'); - this.panels.each(this.initPanelAsTab, this); - }, - - initPanelAsTab : function(panel){ - var ti = this.tabs.addTab(panel.getEl().id, panel.getTitle(), null, - this.config.closeOnTab && panel.isClosable()); - if(panel.tabTip !== undefined){ - ti.setTooltip(panel.tabTip); - } - ti.on("activate", function(){ - this.setActivePanel(panel); - }, this); - if(this.config.closeOnTab){ - ti.on("beforeclose", function(t, e){ - e.cancel = true; - this.remove(panel); - }, this); - } - return ti; - }, - - updatePanelTitle : function(panel, title){ - if(this.activePanel == panel){ - this.updateTitle(title); - } - if(this.tabs){ - var ti = this.tabs.getTab(panel.getEl().id); - ti.setText(title); - if(panel.tabTip !== undefined){ - ti.setTooltip(panel.tabTip); - } - } - }, - - updateTitle : function(title){ - if(this.titleTextEl && !this.config.title){ - this.titleTextEl.innerHTML = (typeof title != "undefined" && title.length > 0 ? title : " "); - } - }, - - setActivePanel : function(panel){ - panel = this.getPanel(panel); - if(this.activePanel && this.activePanel != panel){ - this.activePanel.setActiveState(false); - } - this.activePanel = panel; - panel.setActiveState(true); - if(this.panelSize){ - panel.setSize(this.panelSize.width, this.panelSize.height); - } - if(this.closeBtn){ - this.closeBtn.setVisible(!this.config.closeOnTab && !this.isSlid && panel.isClosable()); - } - this.updateTitle(panel.getTitle()); - if(this.tabs){ - this.fireEvent("invalidated", this); - } - this.fireEvent("panelactivated", this, panel); - }, - - - showPanel : function(panel){ - if(panel = this.getPanel(panel)){ - if(this.tabs){ - var tab = this.tabs.getTab(panel.getEl().id); - if(tab.isHidden()){ - this.tabs.unhideTab(tab.id); - } - tab.activate(); - }else{ - this.setActivePanel(panel); - } - } - return panel; - }, - - - getActivePanel : function(){ - return this.activePanel; - }, - - validateVisibility : function(){ - if(this.panels.getCount() < 1){ - this.updateTitle(" "); - this.closeBtn.hide(); - this.hide(); - }else{ - if(!this.isVisible()){ - this.show(); - } - } - }, - - - add : function(panel){ - if(arguments.length > 1){ - for(var i = 0, len = arguments.length; i < len; i++) { - this.add(arguments[i]); - } - return null; - } - if(this.hasPanel(panel)){ - this.showPanel(panel); - return panel; - } - panel.setRegion(this); - this.panels.add(panel); - if(this.panels.getCount() == 1 && !this.config.alwaysShowTabs){ - this.bodyEl.dom.appendChild(panel.getEl().dom); - if(panel.background !== true){ - this.setActivePanel(panel); - } - this.fireEvent("paneladded", this, panel); - return panel; - } - if(!this.tabs){ - this.initTabs(); - }else{ - this.initPanelAsTab(panel); - } - if(panel.background !== true){ - this.tabs.activate(panel.getEl().id); - } - this.fireEvent("paneladded", this, panel); - return panel; - }, - - - hidePanel : function(panel){ - if(this.tabs && (panel = this.getPanel(panel))){ - this.tabs.hideTab(panel.getEl().id); - } - }, - - - unhidePanel : function(panel){ - if(this.tabs && (panel = this.getPanel(panel))){ - this.tabs.unhideTab(panel.getEl().id); - } - }, - - clearPanels : function(){ - while(this.panels.getCount() > 0){ - this.remove(this.panels.first()); - } - }, - - - remove : function(panel, preservePanel){ - panel = this.getPanel(panel); - if(!panel){ - return null; - } - var e = {}; - this.fireEvent("beforeremove", this, panel, e); - if(e.cancel === true){ - return null; - } - preservePanel = (typeof preservePanel != "undefined" ? preservePanel : (this.config.preservePanels === true || panel.preserve === true)); - var panelId = panel.getId(); - this.panels.removeKey(panelId); - if(preservePanel){ - document.body.appendChild(panel.getEl().dom); - } - if(this.tabs){ - this.tabs.removeTab(panel.getEl().id); - }else if (!preservePanel){ - this.bodyEl.dom.removeChild(panel.getEl().dom); - } - if(this.panels.getCount() == 1 && this.tabs && !this.config.alwaysShowTabs){ - var p = this.panels.first(); - var tempEl = document.createElement("div"); // temp holder to keep IE from deleting the node - tempEl.appendChild(p.getEl().dom); - this.bodyEl.update(""); - this.bodyEl.dom.appendChild(p.getEl().dom); - tempEl = null; - this.updateTitle(p.getTitle()); - this.tabs = null; - this.bodyEl.setStyle("overflow", this.config.autoScroll ? "auto" : "hidden"); - this.setActivePanel(p); - } - panel.setRegion(null); - if(this.activePanel == panel){ - this.activePanel = null; - } - if(this.config.autoDestroy !== false && preservePanel !== true){ - try{panel.destroy();}catch(e){} - } - this.fireEvent("panelremoved", this, panel); - return panel; - }, - - - getTabs : function(){ - return this.tabs; - }, - - createTool : function(parentEl, className){ - var btn = Ext.DomHelper.append(parentEl, {tag: "div", cls: "x-layout-tools-button", - children: [{tag: "div", cls: "x-layout-tools-button-inner " + className, html: " "}]}, true); - btn.addClassOnOver("x-layout-tools-button-over"); - return btn; - } -}); - -Ext.SplitLayoutRegion = function(mgr, config, pos, cursor){ - this.cursor = cursor; - Ext.SplitLayoutRegion.superclass.constructor.call(this, mgr, config, pos); -}; - -Ext.extend(Ext.SplitLayoutRegion, Ext.LayoutRegion, { - splitTip : "Drag to resize.", - collapsibleSplitTip : "Drag to resize. Double click to hide.", - useSplitTips : false, - - applyConfig : function(config){ - Ext.SplitLayoutRegion.superclass.applyConfig.call(this, config); - if(config.split){ - if(!this.split){ - var splitEl = Ext.DomHelper.append(this.mgr.el.dom, - {tag: "div", id: this.el.id + "-split", cls: "x-layout-split x-layout-split-"+this.position, html: " "}); - - this.split = new Ext.SplitBar(splitEl, this.el, this.orientation); - this.split.on("moved", this.onSplitMove, this); - this.split.useShim = config.useShim === true; - this.split.getMaximumSize = this[this.position == 'north' || this.position == 'south' ? 'getVMaxSize' : 'getHMaxSize'].createDelegate(this); - if(this.useSplitTips){ - this.split.el.dom.title = config.collapsible ? this.collapsibleSplitTip : this.splitTip; - } - if(config.collapsible){ - this.split.el.on("dblclick", this.collapse, this); - } - } - if(typeof config.minSize != "undefined"){ - this.split.minSize = config.minSize; - } - if(typeof config.maxSize != "undefined"){ - this.split.maxSize = config.maxSize; - } - if(config.hideWhenEmpty || config.hidden){ - this.hideSplitter(); - } - } - }, - - getHMaxSize : function(){ - var cmax = this.config.maxSize || 10000; - var center = this.mgr.getRegion("center"); - return Math.min(cmax, (this.el.getWidth()+center.getEl().getWidth())-center.getMinWidth()); - }, - - getVMaxSize : function(){ - var cmax = this.config.maxSize || 10000; - var center = this.mgr.getRegion("center"); - return Math.min(cmax, (this.el.getHeight()+center.getEl().getHeight())-center.getMinHeight()); - }, - - onSplitMove : function(split, newSize){ - this.fireEvent("resized", this, newSize); - }, - - - getSplitBar : function(){ - return this.split; - }, - - hide : function(){ - this.hideSplitter(); - Ext.SplitLayoutRegion.superclass.hide.call(this); - }, - - hideSplitter : function(){ - if(this.split){ - this.split.el.setLocation(-2000,-2000); - this.split.el.hide(); - } - }, - - show : function(){ - if(this.split){ - this.split.el.show(); - } - Ext.SplitLayoutRegion.superclass.show.call(this); - }, - - beforeSlide: function(){ - if(Ext.isGecko){// firefox overflow auto bug workaround - this.bodyEl.clip(); - if(this.tabs) this.tabs.bodyEl.clip(); - if(this.activePanel){ - this.activePanel.getEl().clip(); - - if(this.activePanel.beforeSlide){ - this.activePanel.beforeSlide(); - } - } - } - }, - - afterSlide : function(){ - if(Ext.isGecko){// firefox overflow auto bug workaround - this.bodyEl.unclip(); - if(this.tabs) this.tabs.bodyEl.unclip(); - if(this.activePanel){ - this.activePanel.getEl().unclip(); - if(this.activePanel.afterSlide){ - this.activePanel.afterSlide(); - } - } - } - }, - - initAutoHide : function(){ - if(this.autoHide !== false){ - if(!this.autoHideHd){ - var st = new Ext.util.DelayedTask(this.slideIn, this); - this.autoHideHd = { - "mouseout": function(e){ - if(!e.within(this.el, true)){ - st.delay(500); - } - }, - "mouseover" : function(e){ - st.cancel(); - }, - scope : this - }; - } - this.el.on(this.autoHideHd); - } - }, - - clearAutoHide : function(){ - if(this.autoHide !== false){ - this.el.un("mouseout", this.autoHideHd.mouseout); - this.el.un("mouseover", this.autoHideHd.mouseover); - } - }, - - clearMonitor : function(){ - Ext.get(document).un("click", this.slideInIf, this); - }, - - // these names are backwards but not changed for compat - slideOut : function(){ - if(this.isSlid || this.el.hasActiveFx()){ - return; - } - this.isSlid = true; - if(this.collapseBtn){ - this.collapseBtn.hide(); - } - this.closeBtnState = this.closeBtn.getStyle('display'); - this.closeBtn.hide(); - if(this.stickBtn){ - this.stickBtn.show(); - } - this.el.show(); - this.el.alignTo(this.collapsedEl, this.getCollapseAnchor()); - this.beforeSlide(); - this.el.setStyle("z-index", 10001); - this.el.slideIn(this.getSlideAnchor(), { - callback: function(){ - this.afterSlide(); - this.initAutoHide(); - Ext.get(document).on("click", this.slideInIf, this); - this.fireEvent("slideshow", this); - }, - scope: this, - block: true - }); - }, - - afterSlideIn : function(){ - this.clearAutoHide(); - this.isSlid = false; - this.clearMonitor(); - this.el.setStyle("z-index", ""); - if(this.collapseBtn){ - this.collapseBtn.show(); - } - this.closeBtn.setStyle('display', this.closeBtnState); - if(this.stickBtn){ - this.stickBtn.hide(); - } - this.fireEvent("slidehide", this); - }, - - slideIn : function(cb){ - if(!this.isSlid || this.el.hasActiveFx()){ - Ext.callback(cb); - return; - } - this.isSlid = false; - this.beforeSlide(); - this.el.slideOut(this.getSlideAnchor(), { - callback: function(){ - this.el.setLeftTop(-10000, -10000); - this.afterSlide(); - this.afterSlideIn(); - Ext.callback(cb); - }, - scope: this, - block: true - }); - }, - - slideInIf : function(e){ - if(!e.within(this.el)){ - this.slideIn(); - } - }, - - animateCollapse : function(){ - this.beforeSlide(); - this.el.setStyle("z-index", 20000); - var anchor = this.getSlideAnchor(); - this.el.slideOut(anchor, { - callback : function(){ - this.el.setStyle("z-index", ""); - this.collapsedEl.slideIn(anchor, {duration:.3}); - this.afterSlide(); - this.el.setLocation(-10000,-10000); - this.el.hide(); - this.fireEvent("collapsed", this); - }, - scope: this, - block: true - }); - }, - - animateExpand : function(){ - this.beforeSlide(); - this.el.alignTo(this.collapsedEl, this.getCollapseAnchor(), this.getExpandAdj()); - this.el.setStyle("z-index", 20000); - this.collapsedEl.hide({ - duration:.1 - }); - this.el.slideIn(this.getSlideAnchor(), { - callback : function(){ - this.el.setStyle("z-index", ""); - this.afterSlide(); - if(this.split){ - this.split.el.show(); - } - this.fireEvent("invalidated", this); - this.fireEvent("expanded", this); - }, - scope: this, - block: true - }); - }, - - anchors : { - "west" : "left", - "east" : "right", - "north" : "top", - "south" : "bottom" - }, - - sanchors : { - "west" : "l", - "east" : "r", - "north" : "t", - "south" : "b" - }, - - canchors : { - "west" : "tl-tr", - "east" : "tr-tl", - "north" : "tl-bl", - "south" : "bl-tl" - }, - - getAnchor : function(){ - return this.anchors[this.position]; - }, - - getCollapseAnchor : function(){ - return this.canchors[this.position]; - }, - - getSlideAnchor : function(){ - return this.sanchors[this.position]; - }, - - getAlignAdj : function(){ - var cm = this.cmargins; - switch(this.position){ - case "west": - return [0, 0]; - break; - case "east": - return [0, 0]; - break; - case "north": - return [0, 0]; - break; - case "south": - return [0, 0]; - break; - } - }, - - getExpandAdj : function(){ - var c = this.collapsedEl, cm = this.cmargins; - switch(this.position){ - case "west": - return [-(cm.right+c.getWidth()+cm.left), 0]; - break; - case "east": - return [cm.right+c.getWidth()+cm.left, 0]; - break; - case "north": - return [0, -(cm.top+cm.bottom+c.getHeight())]; - break; - case "south": - return [0, cm.top+cm.bottom+c.getHeight()]; - break; - } - } -}); - -Ext.CenterLayoutRegion = function(mgr, config){ - Ext.CenterLayoutRegion.superclass.constructor.call(this, mgr, config, "center"); - this.visible = true; - this.minWidth = config.minWidth || 20; - this.minHeight = config.minHeight || 20; -}; - -Ext.extend(Ext.CenterLayoutRegion, Ext.LayoutRegion, { - hide : function(){ - // center panel can't be hidden - }, - - show : function(){ - // center panel can't be hidden - }, - - getMinWidth: function(){ - return this.minWidth; - }, - - getMinHeight: function(){ - return this.minHeight; - } -}); - - -Ext.NorthLayoutRegion = function(mgr, config){ - Ext.NorthLayoutRegion.superclass.constructor.call(this, mgr, config, "north", "n-resize"); - if(this.split){ - this.split.placement = Ext.SplitBar.TOP; - this.split.orientation = Ext.SplitBar.VERTICAL; - this.split.el.addClass("x-layout-split-v"); - } - var size = config.initialSize || config.height; - if(typeof size != "undefined"){ - this.el.setHeight(size); - } -}; -Ext.extend(Ext.NorthLayoutRegion, Ext.SplitLayoutRegion, { - orientation: Ext.SplitBar.VERTICAL, - getBox : function(){ - if(this.collapsed){ - return this.collapsedEl.getBox(); - } - var box = this.el.getBox(); - if(this.split){ - box.height += this.split.el.getHeight(); - } - return box; - }, - - updateBox : function(box){ - if(this.split && !this.collapsed){ - box.height -= this.split.el.getHeight(); - this.split.el.setLeft(box.x); - this.split.el.setTop(box.y+box.height); - this.split.el.setWidth(box.width); - } - if(this.collapsed){ - this.updateBody(box.width, null); - } - Ext.NorthLayoutRegion.superclass.updateBox.call(this, box); - } -}); - -Ext.SouthLayoutRegion = function(mgr, config){ - Ext.SouthLayoutRegion.superclass.constructor.call(this, mgr, config, "south", "s-resize"); - if(this.split){ - this.split.placement = Ext.SplitBar.BOTTOM; - this.split.orientation = Ext.SplitBar.VERTICAL; - this.split.el.addClass("x-layout-split-v"); - } - var size = config.initialSize || config.height; - if(typeof size != "undefined"){ - this.el.setHeight(size); - } -}; -Ext.extend(Ext.SouthLayoutRegion, Ext.SplitLayoutRegion, { - orientation: Ext.SplitBar.VERTICAL, - getBox : function(){ - if(this.collapsed){ - return this.collapsedEl.getBox(); - } - var box = this.el.getBox(); - if(this.split){ - var sh = this.split.el.getHeight(); - box.height += sh; - box.y -= sh; - } - return box; - }, - - updateBox : function(box){ - if(this.split && !this.collapsed){ - var sh = this.split.el.getHeight(); - box.height -= sh; - box.y += sh; - this.split.el.setLeft(box.x); - this.split.el.setTop(box.y-sh); - this.split.el.setWidth(box.width); - } - if(this.collapsed){ - this.updateBody(box.width, null); - } - Ext.SouthLayoutRegion.superclass.updateBox.call(this, box); - } -}); - -Ext.EastLayoutRegion = function(mgr, config){ - Ext.EastLayoutRegion.superclass.constructor.call(this, mgr, config, "east", "e-resize"); - if(this.split){ - this.split.placement = Ext.SplitBar.RIGHT; - this.split.orientation = Ext.SplitBar.HORIZONTAL; - this.split.el.addClass("x-layout-split-h"); - } - var size = config.initialSize || config.width; - if(typeof size != "undefined"){ - this.el.setWidth(size); - } -}; -Ext.extend(Ext.EastLayoutRegion, Ext.SplitLayoutRegion, { - orientation: Ext.SplitBar.HORIZONTAL, - getBox : function(){ - if(this.collapsed){ - return this.collapsedEl.getBox(); - } - var box = this.el.getBox(); - if(this.split){ - var sw = this.split.el.getWidth(); - box.width += sw; - box.x -= sw; - } - return box; - }, - - updateBox : function(box){ - if(this.split && !this.collapsed){ - var sw = this.split.el.getWidth(); - box.width -= sw; - this.split.el.setLeft(box.x); - this.split.el.setTop(box.y); - this.split.el.setHeight(box.height); - box.x += sw; - } - if(this.collapsed){ - this.updateBody(null, box.height); - } - Ext.EastLayoutRegion.superclass.updateBox.call(this, box); - } -}); - -Ext.WestLayoutRegion = function(mgr, config){ - Ext.WestLayoutRegion.superclass.constructor.call(this, mgr, config, "west", "w-resize"); - if(this.split){ - this.split.placement = Ext.SplitBar.LEFT; - this.split.orientation = Ext.SplitBar.HORIZONTAL; - this.split.el.addClass("x-layout-split-h"); - } - var size = config.initialSize || config.width; - if(typeof size != "undefined"){ - this.el.setWidth(size); - } -}; -Ext.extend(Ext.WestLayoutRegion, Ext.SplitLayoutRegion, { - orientation: Ext.SplitBar.HORIZONTAL, - getBox : function(){ - if(this.collapsed){ - return this.collapsedEl.getBox(); - } - var box = this.el.getBox(); - if(this.split){ - box.width += this.split.el.getWidth(); - } - return box; - }, - - updateBox : function(box){ - if(this.split && !this.collapsed){ - var sw = this.split.el.getWidth(); - box.width -= sw; - this.split.el.setLeft(box.x+box.width); - this.split.el.setTop(box.y); - this.split.el.setHeight(box.height); - } - if(this.collapsed){ - this.updateBody(null, box.height); - } - Ext.WestLayoutRegion.superclass.updateBox.call(this, box); - } -}); - - -Ext.LayoutStateManager = function(layout){ - // default empty state - this.state = { - north: {}, - south: {}, - east: {}, - west: {} - }; -}; - -Ext.LayoutStateManager.prototype = { - init : function(layout, provider){ - this.provider = provider; - var state = provider.get(layout.id+"-layout-state"); - if(state){ - var wasUpdating = layout.isUpdating(); - if(!wasUpdating){ - layout.beginUpdate(); - } - for(var key in state){ - if(typeof state[key] != "function"){ - var rstate = state[key]; - var r = layout.getRegion(key); - if(r && rstate){ - if(rstate.size){ - r.resizeTo(rstate.size); - } - if(rstate.collapsed == true){ - r.collapse(true); - }else{ - r.expand(null, true); - } - } - } - } - if(!wasUpdating){ - layout.endUpdate(); - } - this.state = state; - } - this.layout = layout; - layout.on("regionresized", this.onRegionResized, this); - layout.on("regioncollapsed", this.onRegionCollapsed, this); - layout.on("regionexpanded", this.onRegionExpanded, this); - }, - - storeState : function(){ - this.provider.set(this.layout.id+"-layout-state", this.state); - }, - - onRegionResized : function(region, newSize){ - this.state[region.getPosition()].size = newSize; - this.storeState(); - }, - - onRegionCollapsed : function(region){ - this.state[region.getPosition()].collapsed = true; - this.storeState(); - }, - - onRegionExpanded : function(region){ - this.state[region.getPosition()].collapsed = false; - this.storeState(); - } -}; - -Ext.ContentPanel = function(el, config, content){ - if(el.autoCreate){ - config = el; - el = Ext.id(); - } - this.el = Ext.get(el); - if(!this.el && config && config.autoCreate){ - if(typeof config.autoCreate == "object"){ - if(!config.autoCreate.id){ - config.autoCreate.id = config.id||el; - } - this.el = Ext.DomHelper.append(document.body, - config.autoCreate, true); - }else{ - this.el = Ext.DomHelper.append(document.body, - {tag: "div", cls: "x-layout-inactive-content", id: config.id||el}, true); - } - } - this.closable = false; - this.loaded = false; - this.active = false; - if(typeof config == "string"){ - this.title = config; - }else{ - Ext.apply(this, config); - } - if(this.resizeEl){ - this.resizeEl = Ext.get(this.resizeEl, true); - }else{ - this.resizeEl = this.el; - } - this.addEvents({ - - "activate" : true, - - "deactivate" : true, - - - "resize" : true - }); - if(this.autoScroll){ - this.resizeEl.setStyle("overflow", "auto"); - } - content = content || this.content; - if(content){ - this.setContent(content); - } - if(config && config.url){ - this.setUrl(this.url, this.params, this.loadOnce); - } - Ext.ContentPanel.superclass.constructor.call(this); -}; - -Ext.extend(Ext.ContentPanel, Ext.util.Observable, { - tabTip:'', - setRegion : function(region){ - this.region = region; - if(region){ - this.el.replaceClass("x-layout-inactive-content", "x-layout-active-content"); - }else{ - this.el.replaceClass("x-layout-active-content", "x-layout-inactive-content"); - } - }, - - - getToolbar : function(){ - return this.toolbar; - }, - - setActiveState : function(active){ - this.active = active; - if(!active){ - this.fireEvent("deactivate", this); - }else{ - this.fireEvent("activate", this); - } - }, - - setContent : function(content, loadScripts){ - this.el.update(content, loadScripts); - }, - - ignoreResize : function(w, h){ - if(this.lastSize && this.lastSize.width == w && this.lastSize.height == h){ - return true; - }else{ - this.lastSize = {width: w, height: h}; - return false; - } - }, - - getUpdateManager : function(){ - return this.el.getUpdateManager(); - }, - - load : function(){ - var um = this.el.getUpdateManager(); - um.update.apply(um, arguments); - return this; - }, - - - - setUrl : function(url, params, loadOnce){ - if(this.refreshDelegate){ - this.removeListener("activate", this.refreshDelegate); - } - this.refreshDelegate = this._handleRefresh.createDelegate(this, [url, params, loadOnce]); - this.on("activate", this.refreshDelegate); - return this.el.getUpdateManager(); - }, - - _handleRefresh : function(url, params, loadOnce){ - if(!loadOnce || !this.loaded){ - var updater = this.el.getUpdateManager(); - updater.update(url, params, this._setLoaded.createDelegate(this)); - } - }, - - _setLoaded : function(){ - this.loaded = true; - }, - - - getId : function(){ - return this.el.id; - }, - - - getEl : function(){ - return this.el; - }, - - adjustForComponents : function(width, height){ - if(this.resizeEl != this.el){ - width -= this.el.getFrameWidth('lr'); - height -= this.el.getFrameWidth('tb'); - } - if(this.toolbar){ - var te = this.toolbar.getEl(); - height -= te.getHeight(); - te.setWidth(width); - } - if(this.adjustments){ - width += this.adjustments[0]; - height += this.adjustments[1]; - } - return {"width": width, "height": height}; - }, - - setSize : function(width, height){ - if(this.fitToFrame && !this.ignoreResize(width, height)){ - if(this.fitContainer && this.resizeEl != this.el){ - this.el.setSize(width, height); - } - var size = this.adjustForComponents(width, height); - this.resizeEl.setSize(this.autoWidth ? "auto" : size.width, this.autoHeight ? "auto" : size.height); - this.fireEvent('resize', this, size.width, size.height); - } - }, - - - getTitle : function(){ - return this.title; - }, - - - setTitle : function(title){ - this.title = title; - if(this.region){ - this.region.updatePanelTitle(this, title); - } - }, - - - isClosable : function(){ - return this.closable; - }, - - beforeSlide : function(){ - this.el.clip(); - this.resizeEl.clip(); - }, - - afterSlide : function(){ - this.el.unclip(); - this.resizeEl.unclip(); - }, - - - refresh : function(){ - if(this.refreshDelegate){ - this.loaded = false; - this.refreshDelegate(); - } - }, - - - destroy : function(){ - this.el.removeAllListeners(); - var tempEl = document.createElement("span"); - tempEl.appendChild(this.el.dom); - tempEl.innerHTML = ""; - this.el.remove(); - this.el = null; - } -}); - - -Ext.GridPanel = function(grid, config){ - this.wrapper = Ext.DomHelper.append(document.body, // wrapper for IE7 strict & safari scroll issue - {tag: "div", cls: "x-layout-grid-wrapper x-layout-inactive-content"}, true); - this.wrapper.dom.appendChild(grid.getGridEl().dom); - Ext.GridPanel.superclass.constructor.call(this, this.wrapper, config); - if(this.toolbar){ - this.toolbar.el.insertBefore(this.wrapper.dom.firstChild); - } - grid.monitorWindowResize = false; // turn off autosizing - grid.autoHeight = false; - grid.autoWidth = false; - this.grid = grid; - this.grid.getGridEl().replaceClass("x-layout-inactive-content", "x-layout-component-panel"); -}; - -Ext.extend(Ext.GridPanel, Ext.ContentPanel, { - getId : function(){ - return this.grid.id; - }, - - - getGrid : function(){ - return this.grid; - }, - - setSize : function(width, height){ - if(!this.ignoreResize(width, height)){ - var grid = this.grid; - var size = this.adjustForComponents(width, height); - grid.getGridEl().setSize(size.width, size.height); - grid.autoSize(); - } - }, - - beforeSlide : function(){ - this.grid.getView().scroller.clip(); - }, - - afterSlide : function(){ - this.grid.getView().scroller.unclip(); - }, - - destroy : function(){ - this.grid.destroy(); - delete this.grid; - Ext.GridPanel.superclass.destroy.call(this); - } -}); - - - -Ext.NestedLayoutPanel = function(layout, config){ - Ext.NestedLayoutPanel.superclass.constructor.call(this, layout.getEl(), config); - layout.monitorWindowResize = false; // turn off autosizing - this.layout = layout; - this.layout.getEl().addClass("x-layout-nested-layout"); -}; - -Ext.extend(Ext.NestedLayoutPanel, Ext.ContentPanel, { - - setSize : function(width, height){ - if(!this.ignoreResize(width, height)){ - var size = this.adjustForComponents(width, height); - var el = this.layout.getEl(); - el.setSize(size.width, size.height); - var touch = el.dom.offsetWidth; - this.layout.layout(); - // ie requires a double layout on the first pass - if(Ext.isIE && !this.initialized){ - this.initialized = true; - this.layout.layout(); - } - } - }, - - - getLayout : function(){ - return this.layout; - } -}); - -Ext.ScrollPanel = function(el, config, content){ - config = config || {}; - config.fitToFrame = true; - Ext.ScrollPanel.superclass.constructor.call(this, el, config, content); - - this.el.dom.style.overflow = "hidden"; - var wrap = this.el.wrap({cls: "x-scroller x-layout-inactive-content"}); - this.el.removeClass("x-layout-inactive-content"); - this.el.on("mousewheel", this.onWheel, this); - - var up = wrap.createChild({cls: "x-scroller-up", html: " "}, this.el.dom); - var down = wrap.createChild({cls: "x-scroller-down", html: " "}); - up.unselectable(); down.unselectable(); - up.on("click", this.scrollUp, this); - down.on("click", this.scrollDown, this); - up.addClassOnOver("x-scroller-btn-over"); - down.addClassOnOver("x-scroller-btn-over"); - up.addClassOnClick("x-scroller-btn-click"); - down.addClassOnClick("x-scroller-btn-click"); - this.adjustments = [0, -(up.getHeight() + down.getHeight())]; - - this.resizeEl = this.el; - this.el = wrap; this.up = up; this.down = down; -}; - -Ext.extend(Ext.ScrollPanel, Ext.ContentPanel, { - increment : 100, - wheelIncrement : 5, - scrollUp : function(){ - this.resizeEl.scroll("up", this.increment, {callback: this.afterScroll, scope: this}); - }, - - scrollDown : function(){ - this.resizeEl.scroll("down", this.increment, {callback: this.afterScroll, scope: this}); - }, - - afterScroll : function(){ - var el = this.resizeEl; - var t = el.dom.scrollTop, h = el.dom.scrollHeight, ch = el.dom.clientHeight; - this.up[t == 0 ? "addClass" : "removeClass"]("x-scroller-btn-disabled"); - this.down[h - t <= ch ? "addClass" : "removeClass"]("x-scroller-btn-disabled"); - }, - - setSize : function(){ - Ext.ScrollPanel.superclass.setSize.apply(this, arguments); - this.afterScroll(); - }, - - onWheel : function(e){ - var d = e.getWheelDelta(); - this.resizeEl.dom.scrollTop -= (d*this.wheelIncrement); - this.afterScroll(); - e.stopEvent(); - }, - - setContent : function(content, loadScripts){ - this.resizeEl.update(content, loadScripts); - } - -}); - -Ext.ReaderLayout = function(config, renderTo){ - var c = config || {size:{}}; - Ext.ReaderLayout.superclass.constructor.call(this, renderTo || document.body, { - north: c.north !== false ? Ext.apply({ - split:false, - initialSize: 32, - titlebar: false - }, c.north) : false, - west: c.west !== false ? Ext.apply({ - split:true, - initialSize: 200, - minSize: 175, - maxSize: 400, - titlebar: true, - collapsible: true, - animate: true, - margins:{left:5,right:0,bottom:5,top:5}, - cmargins:{left:5,right:5,bottom:5,top:5} - }, c.west) : false, - east: c.east !== false ? Ext.apply({ - split:true, - initialSize: 200, - minSize: 175, - maxSize: 400, - titlebar: true, - collapsible: true, - animate: true, - margins:{left:0,right:5,bottom:5,top:5}, - cmargins:{left:5,right:5,bottom:5,top:5} - }, c.east) : false, - center: Ext.apply({ - tabPosition: 'top', - autoScroll:false, - closeOnTab: true, - titlebar:false, - margins:{left:c.west!==false ? 0 : 5,right:c.east!==false ? 0 : 5,bottom:5,top:2} - }, c.center) - }); - - this.el.addClass('x-reader'); - - this.beginUpdate(); - - var inner = new Ext.BorderLayout(Ext.get(document.body).createChild(), { - south: c.preview !== false ? Ext.apply({ - split:true, - initialSize: 200, - minSize: 100, - autoScroll:true, - collapsible:true, - titlebar: true, - cmargins:{top:5,left:0, right:0, bottom:0} - }, c.preview) : false, - center: Ext.apply({ - autoScroll:false, - titlebar:false, - minHeight:200 - }, c.listView) - }); - this.add('center', new Ext.NestedLayoutPanel(inner, - Ext.apply({title: c.mainTitle || '',tabTip:''},c.innerPanelCfg))); - - this.endUpdate(); - - this.regions.preview = inner.getRegion('south'); - this.regions.listView = inner.getRegion('center'); -}; - -Ext.extend(Ext.ReaderLayout, Ext.BorderLayout); diff --git a/lib/web/extjs/package/layout/layout.js b/lib/web/extjs/package/layout/layout.js deleted file mode 100644 index 8d50052dbe60170df0e0d2858c680276d4455860..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/layout/layout.js +++ /dev/null @@ -1,154 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.LayoutManager=function(container,config){Ext.LayoutManager.superclass.constructor.call(this);this.el=Ext.get(container);if(this.el.dom==document.body&&Ext.isIE&&!config.allowScroll){document.body.scroll="no";}else if(this.el.dom!=document.body&&this.el.getStyle('position')=='static'){this.el.position('relative');} -this.id=this.el.id;this.el.addClass("x-layout-container");this.monitorWindowResize=true;this.regions={};this.addEvents({"layout":true,"regionresized":true,"regioncollapsed":true,"regionexpanded":true});this.updating=false;Ext.EventManager.onWindowResize(this.onWindowResize,this,true);};Ext.extend(Ext.LayoutManager,Ext.util.Observable,{isUpdating:function(){return this.updating;},beginUpdate:function(){this.updating=true;},endUpdate:function(noLayout){this.updating=false;if(!noLayout){this.layout();}},layout:function(){},onRegionResized:function(region,newSize){this.fireEvent("regionresized",region,newSize);this.layout();},onRegionCollapsed:function(region){this.fireEvent("regioncollapsed",region);},onRegionExpanded:function(region){this.fireEvent("regionexpanded",region);},getViewSize:function(){var size;if(this.el.dom!=document.body){size=this.el.getSize();}else{size={width:Ext.lib.Dom.getViewWidth(),height:Ext.lib.Dom.getViewHeight()};} -size.width-=this.el.getBorderWidth("lr")-this.el.getPadding("lr");size.height-=this.el.getBorderWidth("tb")-this.el.getPadding("tb");return size;},getEl:function(){return this.el;},getRegion:function(target){return this.regions[target.toLowerCase()];},onWindowResize:function(){if(this.monitorWindowResize){this.layout();}}}); - -Ext.BorderLayout=function(container,config){config=config||{};Ext.BorderLayout.superclass.constructor.call(this,container,config);this.factory=config.factory||Ext.BorderLayout.RegionFactory;for(var i=0,len=this.factory.validRegions.length;i<len;i++){var target=this.factory.validRegions[i];if(config[target]){this.addRegion(target,config[target]);}}};Ext.extend(Ext.BorderLayout,Ext.LayoutManager,{addRegion:function(target,config){if(!this.regions[target]){var r=this.factory.create(target,this,config);this.bindRegion(target,r);} -return this.regions[target];},bindRegion:function(name,r){this.regions[name]=r;r.on("visibilitychange",this.layout,this);r.on("paneladded",this.layout,this);r.on("panelremoved",this.layout,this);r.on("invalidated",this.layout,this);r.on("resized",this.onRegionResized,this);r.on("collapsed",this.onRegionCollapsed,this);r.on("expanded",this.onRegionExpanded,this);},layout:function(){if(this.updating)return;var size=this.getViewSize();var w=size.width,h=size.height;var centerW=w,centerH=h,centerY=0,centerX=0;var rs=this.regions;var n=rs["north"],s=rs["south"],west=rs["west"],e=rs["east"],c=rs["center"];if(n&&n.isVisible()){var b=n.getBox();var m=n.getMargins();b.width=w-(m.left+m.right);b.x=m.left;b.y=m.top;centerY=b.height+b.y+m.bottom;centerH-=centerY;n.updateBox(this.safeBox(b));} -if(s&&s.isVisible()){var b=s.getBox();var m=s.getMargins();b.width=w-(m.left+m.right);b.x=m.left;var totalHeight=(b.height+m.top+m.bottom);b.y=h-totalHeight+m.top;centerH-=totalHeight;s.updateBox(this.safeBox(b));} -if(west&&west.isVisible()){var b=west.getBox();var m=west.getMargins();b.height=centerH-(m.top+m.bottom);b.x=m.left;b.y=centerY+m.top;var totalWidth=(b.width+m.left+m.right);centerX+=totalWidth;centerW-=totalWidth;west.updateBox(this.safeBox(b));} -if(e&&e.isVisible()){var b=e.getBox();var m=e.getMargins();b.height=centerH-(m.top+m.bottom);var totalWidth=(b.width+m.left+m.right);b.x=w-totalWidth+m.left;b.y=centerY+m.top;centerW-=totalWidth;e.updateBox(this.safeBox(b));} -if(c){var m=c.getMargins();var centerBox={x:centerX+m.left,y:centerY+m.top,width:centerW-(m.left+m.right),height:centerH-(m.top+m.bottom)};c.updateBox(this.safeBox(centerBox));} -this.el.repaint();this.fireEvent("layout",this);},safeBox:function(box){box.width=Math.max(0,box.width);box.height=Math.max(0,box.height);return box;},add:function(target,panel){target=target.toLowerCase();return this.regions[target].add(panel);},remove:function(target,panel){target=target.toLowerCase();return this.regions[target].remove(panel);},findPanel:function(panelId){var rs=this.regions;for(var target in rs){if(typeof rs[target]!="function"){var p=rs[target].getPanel(panelId);if(p){return p;}}} -return null;},showPanel:function(panelId){var rs=this.regions;for(var target in rs){var r=rs[target];if(typeof r!="function"){if(r.hasPanel(panelId)){return r.showPanel(panelId);}}} -return null;},restoreState:function(provider){if(!provider){provider=Ext.state.Manager;} -var sm=new Ext.LayoutStateManager();sm.init(this,provider);},batchAdd:function(regions){this.beginUpdate();for(var rname in regions){var lr=this.regions[rname];if(lr){this.addTypedPanels(lr,regions[rname]);}} -this.endUpdate();},addTypedPanels:function(lr,ps){if(typeof ps=='string'){lr.add(new Ext.ContentPanel(ps));} -else if(ps instanceof Array){for(var i=0,len=ps.length;i<len;i++){this.addTypedPanels(lr,ps[i]);}} -else if(!ps.events){var el=ps.el;delete ps.el;lr.add(new Ext.ContentPanel(el||Ext.id(),ps));} -else{lr.add(ps);}}});Ext.BorderLayout.create=function(config,targetEl){var layout=new Ext.BorderLayout(targetEl||document.body,config);layout.beginUpdate();var regions=Ext.BorderLayout.RegionFactory.validRegions;for(var j=0,jlen=regions.length;j<jlen;j++){var lr=regions[j];if(layout.regions[lr]&&config[lr].panels){var r=layout.regions[lr];var ps=config[lr].panels;layout.addTypedPanels(r,ps);}} -layout.endUpdate();return layout;};Ext.BorderLayout.RegionFactory={validRegions:["north","south","east","west","center"],create:function(target,mgr,config){target=target.toLowerCase();if(config.lightweight||config.basic){return new Ext.BasicLayoutRegion(mgr,config,target);} -switch(target){case"north":return new Ext.NorthLayoutRegion(mgr,config);case"south":return new Ext.SouthLayoutRegion(mgr,config);case"east":return new Ext.EastLayoutRegion(mgr,config);case"west":return new Ext.WestLayoutRegion(mgr,config);case"center":return new Ext.CenterLayoutRegion(mgr,config);} -throw'Layout region "'+target+'" not supported.';}}; - -Ext.BasicLayoutRegion=function(mgr,config,pos,skipConfig){this.mgr=mgr;this.position=pos;this.events={"beforeremove":true,"invalidated":true,"visibilitychange":true,"paneladded":true,"panelremoved":true,"collapsed":true,"expanded":true,"slideshow":true,"slidehide":true,"panelactivated":true,"resized":true};this.panels=new Ext.util.MixedCollection();this.panels.getKey=this.getPanelId.createDelegate(this);this.box=null;this.activePanel=null;if(skipConfig!==true){this.applyConfig(config);}};Ext.extend(Ext.BasicLayoutRegion,Ext.util.Observable,{getPanelId:function(p){return p.getId();},applyConfig:function(config){this.margins=config.margins||this.margins||{top:0,left:0,right:0,bottom:0};this.config=config;},resizeTo:function(newSize){var el=this.el?this.el:(this.activePanel?this.activePanel.getEl():null);if(el){switch(this.position){case"east":case"west":el.setWidth(newSize);this.fireEvent("resized",this,newSize);break;case"north":case"south":el.setHeight(newSize);this.fireEvent("resized",this,newSize);break;}}},getBox:function(){return this.activePanel?this.activePanel.getEl().getBox(false,true):null;},getMargins:function(){return this.margins;},updateBox:function(box){this.box=box;var el=this.activePanel.getEl();el.dom.style.left=box.x+"px";el.dom.style.top=box.y+"px";this.activePanel.setSize(box.width,box.height);},getEl:function(){return this.activePanel;},isVisible:function(){return this.activePanel?true:false;},setActivePanel:function(panel){panel=this.getPanel(panel);if(this.activePanel&&this.activePanel!=panel){this.activePanel.setActiveState(false);this.activePanel.getEl().setLeftTop(-10000,-10000);} -this.activePanel=panel;panel.setActiveState(true);if(this.box){panel.setSize(this.box.width,this.box.height);} -this.fireEvent("panelactivated",this,panel);this.fireEvent("invalidated");},showPanel:function(panel){if(panel=this.getPanel(panel)){this.setActivePanel(panel);} -return panel;},getActivePanel:function(){return this.activePanel;},add:function(panel){if(arguments.length>1){for(var i=0,len=arguments.length;i<len;i++){this.add(arguments[i]);} -return null;} -if(this.hasPanel(panel)){this.showPanel(panel);return panel;} -var el=panel.getEl();if(el.dom.parentNode!=this.mgr.el.dom){this.mgr.el.dom.appendChild(el.dom);} -if(panel.setRegion){panel.setRegion(this);} -this.panels.add(panel);el.setStyle("position","absolute");if(!panel.background){this.setActivePanel(panel);if(this.config.initialSize&&this.panels.getCount()==1){this.resizeTo(this.config.initialSize);}} -this.fireEvent("paneladded",this,panel);return panel;},hasPanel:function(panel){if(typeof panel=="object"){panel=panel.getId();} -return this.getPanel(panel)?true:false;},remove:function(panel,preservePanel){panel=this.getPanel(panel);if(!panel){return null;} -var e={};this.fireEvent("beforeremove",this,panel,e);if(e.cancel===true){return null;} -var panelId=panel.getId();this.panels.removeKey(panelId);return panel;},getPanel:function(id){if(typeof id=="object"){return id;} -return this.panels.get(id);},getPosition:function(){return this.position;}}); - -Ext.LayoutRegion=function(mgr,config,pos){Ext.LayoutRegion.superclass.constructor.call(this,mgr,config,pos,true);var dh=Ext.DomHelper;this.el=dh.append(mgr.el.dom,{tag:"div",cls:"x-layout-panel x-layout-panel-"+this.position},true);this.titleEl=dh.append(this.el.dom,{tag:"div",unselectable:"on",cls:"x-unselectable x-layout-panel-hd x-layout-title-"+this.position,children:[{tag:"span",cls:"x-unselectable x-layout-panel-hd-text",unselectable:"on",html:" "},{tag:"div",cls:"x-unselectable x-layout-panel-hd-tools",unselectable:"on"}]},true);this.titleEl.enableDisplayMode();this.titleTextEl=this.titleEl.dom.firstChild;this.tools=Ext.get(this.titleEl.dom.childNodes[1],true);this.closeBtn=this.createTool(this.tools.dom,"x-layout-close");this.closeBtn.enableDisplayMode();this.closeBtn.on("click",this.closeClicked,this);this.closeBtn.hide();this.createBody(config);this.visible=true;this.collapsed=false;if(config.hideWhenEmpty){this.hide();this.on("paneladded",this.validateVisibility,this);this.on("panelremoved",this.validateVisibility,this);} -this.applyConfig(config);};Ext.extend(Ext.LayoutRegion,Ext.BasicLayoutRegion,{createBody:function(){this.bodyEl=this.el.createChild({tag:"div",cls:"x-layout-panel-body"});},applyConfig:function(c){if(c.collapsible&&this.position!="center"&&!this.collapsedEl){var dh=Ext.DomHelper;if(c.titlebar!==false){this.collapseBtn=this.createTool(this.tools.dom,"x-layout-collapse-"+this.position);this.collapseBtn.on("click",this.collapse,this);this.collapseBtn.enableDisplayMode();if(c.showPin===true||this.showPin){this.stickBtn=this.createTool(this.tools.dom,"x-layout-stick");this.stickBtn.enableDisplayMode();this.stickBtn.on("click",this.expand,this);this.stickBtn.hide();}} -this.collapsedEl=dh.append(this.mgr.el.dom,{cls:"x-layout-collapsed x-layout-collapsed-"+this.position,children:[{cls:"x-layout-collapsed-tools",children:[{cls:"x-layout-ctools-inner"}]}]},true);if(c.floatable!==false){this.collapsedEl.addClassOnOver("x-layout-collapsed-over");this.collapsedEl.on("click",this.collapseClick,this);} -if(c.collapsedTitle&&(this.position=="north"||this.position=="south")){this.collapsedTitleTextEl=dh.append(this.collapsedEl.dom,{tag:"div",cls:"x-unselectable x-layout-panel-hd-text",id:"message",unselectable:"on",style:{"float":"left"}});this.collapsedTitleTextEl.innerHTML=c.collapsedTitle;} -this.expandBtn=this.createTool(this.collapsedEl.dom.firstChild.firstChild,"x-layout-expand-"+this.position);this.expandBtn.on("click",this.expand,this);} -if(this.collapseBtn){this.collapseBtn.setVisible(c.collapsible==true);} -this.cmargins=c.cmargins||this.cmargins||(this.position=="west"||this.position=="east"?{top:0,left:2,right:2,bottom:0}:{top:2,left:0,right:0,bottom:2});this.margins=c.margins||this.margins||{top:0,left:0,right:0,bottom:0};this.bottomTabs=c.tabPosition!="top";this.autoScroll=c.autoScroll||false;if(this.autoScroll){this.bodyEl.setStyle("overflow","auto");}else{this.bodyEl.setStyle("overflow","hidden");} -if((!c.titlebar&&!c.title)||c.titlebar===false){this.titleEl.hide();}else{this.titleEl.show();if(c.title){this.titleTextEl.innerHTML=c.title;}} -this.duration=c.duration||.30;this.slideDuration=c.slideDuration||.45;this.config=c;if(c.collapsed){this.collapse(true);} -if(c.hidden){this.hide();}},isVisible:function(){return this.visible;},setCollapsedTitle:function(title){title=title||" ";if(this.collapsedTitleTextEl){this.collapsedTitleTextEl.innerHTML=title;}},getBox:function(){var b;if(!this.collapsed){b=this.el.getBox(false,true);}else{b=this.collapsedEl.getBox(false,true);} -return b;},getMargins:function(){return this.collapsed?this.cmargins:this.margins;},highlight:function(){this.el.addClass("x-layout-panel-dragover");},unhighlight:function(){this.el.removeClass("x-layout-panel-dragover");},updateBox:function(box){this.box=box;if(!this.collapsed){this.el.dom.style.left=box.x+"px";this.el.dom.style.top=box.y+"px";this.updateBody(box.width,box.height);}else{this.collapsedEl.dom.style.left=box.x+"px";this.collapsedEl.dom.style.top=box.y+"px";this.collapsedEl.setSize(box.width,box.height);} -if(this.tabs){this.tabs.autoSizeTabs();}},updateBody:function(w,h){if(w!==null){this.el.setWidth(w);w-=this.el.getBorderWidth("rl");if(this.config.adjustments){w+=this.config.adjustments[0];}} -if(h!==null){this.el.setHeight(h);h=this.titleEl&&this.titleEl.isDisplayed()?h-(this.titleEl.getHeight()||0):h;h-=this.el.getBorderWidth("tb");if(this.config.adjustments){h+=this.config.adjustments[1];} -this.bodyEl.setHeight(h);if(this.tabs){h=this.tabs.syncHeight(h);}} -if(this.panelSize){w=w!==null?w:this.panelSize.width;h=h!==null?h:this.panelSize.height;} -if(this.activePanel){var el=this.activePanel.getEl();w=w!==null?w:el.getWidth();h=h!==null?h:el.getHeight();this.panelSize={width:w,height:h};this.activePanel.setSize(w,h);} -if(Ext.isIE&&this.tabs){this.tabs.el.repaint();}},getEl:function(){return this.el;},hide:function(){if(!this.collapsed){this.el.dom.style.left="-2000px";this.el.hide();}else{this.collapsedEl.dom.style.left="-2000px";this.collapsedEl.hide();} -this.visible=false;this.fireEvent("visibilitychange",this,false);},show:function(){if(!this.collapsed){this.el.show();}else{this.collapsedEl.show();} -this.visible=true;this.fireEvent("visibilitychange",this,true);},closeClicked:function(){if(this.activePanel){this.remove(this.activePanel);}},collapseClick:function(e){if(this.isSlid){e.stopPropagation();this.slideIn();}else{e.stopPropagation();this.slideOut();}},collapse:function(skipAnim){if(this.collapsed)return;this.collapsed=true;if(this.split){this.split.el.hide();} -if(this.config.animate&&skipAnim!==true){this.fireEvent("invalidated",this);this.animateCollapse();}else{this.el.setLocation(-20000,-20000);this.el.hide();this.collapsedEl.show();this.fireEvent("collapsed",this);this.fireEvent("invalidated",this);}},animateCollapse:function(){},expand:function(e,skipAnim){if(e)e.stopPropagation();if(!this.collapsed||this.el.hasActiveFx())return;if(this.isSlid){this.afterSlideIn();skipAnim=true;} -this.collapsed=false;if(this.config.animate&&skipAnim!==true){this.animateExpand();}else{this.el.show();if(this.split){this.split.el.show();} -this.collapsedEl.setLocation(-2000,-2000);this.collapsedEl.hide();this.fireEvent("invalidated",this);this.fireEvent("expanded",this);}},animateExpand:function(){},initTabs:function(){this.bodyEl.setStyle("overflow","hidden");var ts=new Ext.TabPanel(this.bodyEl.dom,{tabPosition:this.bottomTabs?'bottom':'top',disableTooltips:this.config.disableTabTips});if(this.config.hideTabs){ts.stripWrap.setDisplayed(false);} -this.tabs=ts;ts.resizeTabs=this.config.resizeTabs===true;ts.minTabWidth=this.config.minTabWidth||40;ts.maxTabWidth=this.config.maxTabWidth||250;ts.preferredTabWidth=this.config.preferredTabWidth||150;ts.monitorResize=false;ts.bodyEl.setStyle("overflow",this.config.autoScroll?"auto":"hidden");ts.bodyEl.addClass('x-layout-tabs-body');this.panels.each(this.initPanelAsTab,this);},initPanelAsTab:function(panel){var ti=this.tabs.addTab(panel.getEl().id,panel.getTitle(),null,this.config.closeOnTab&&panel.isClosable());if(panel.tabTip!==undefined){ti.setTooltip(panel.tabTip);} -ti.on("activate",function(){this.setActivePanel(panel);},this);if(this.config.closeOnTab){ti.on("beforeclose",function(t,e){e.cancel=true;this.remove(panel);},this);} -return ti;},updatePanelTitle:function(panel,title){if(this.activePanel==panel){this.updateTitle(title);} -if(this.tabs){var ti=this.tabs.getTab(panel.getEl().id);ti.setText(title);if(panel.tabTip!==undefined){ti.setTooltip(panel.tabTip);}}},updateTitle:function(title){if(this.titleTextEl&&!this.config.title){this.titleTextEl.innerHTML=(typeof title!="undefined"&&title.length>0?title:" ");}},setActivePanel:function(panel){panel=this.getPanel(panel);if(this.activePanel&&this.activePanel!=panel){this.activePanel.setActiveState(false);} -this.activePanel=panel;panel.setActiveState(true);if(this.panelSize){panel.setSize(this.panelSize.width,this.panelSize.height);} -if(this.closeBtn){this.closeBtn.setVisible(!this.config.closeOnTab&&!this.isSlid&&panel.isClosable());} -this.updateTitle(panel.getTitle());if(this.tabs){this.fireEvent("invalidated",this);} -this.fireEvent("panelactivated",this,panel);},showPanel:function(panel){if(panel=this.getPanel(panel)){if(this.tabs){var tab=this.tabs.getTab(panel.getEl().id);if(tab.isHidden()){this.tabs.unhideTab(tab.id);} -tab.activate();}else{this.setActivePanel(panel);}} -return panel;},getActivePanel:function(){return this.activePanel;},validateVisibility:function(){if(this.panels.getCount()<1){this.updateTitle(" ");this.closeBtn.hide();this.hide();}else{if(!this.isVisible()){this.show();}}},add:function(panel){if(arguments.length>1){for(var i=0,len=arguments.length;i<len;i++){this.add(arguments[i]);} -return null;} -if(this.hasPanel(panel)){this.showPanel(panel);return panel;} -panel.setRegion(this);this.panels.add(panel);if(this.panels.getCount()==1&&!this.config.alwaysShowTabs){this.bodyEl.dom.appendChild(panel.getEl().dom);if(panel.background!==true){this.setActivePanel(panel);} -this.fireEvent("paneladded",this,panel);return panel;} -if(!this.tabs){this.initTabs();}else{this.initPanelAsTab(panel);} -if(panel.background!==true){this.tabs.activate(panel.getEl().id);} -this.fireEvent("paneladded",this,panel);return panel;},hidePanel:function(panel){if(this.tabs&&(panel=this.getPanel(panel))){this.tabs.hideTab(panel.getEl().id);}},unhidePanel:function(panel){if(this.tabs&&(panel=this.getPanel(panel))){this.tabs.unhideTab(panel.getEl().id);}},clearPanels:function(){while(this.panels.getCount()>0){this.remove(this.panels.first());}},remove:function(panel,preservePanel){panel=this.getPanel(panel);if(!panel){return null;} -var e={};this.fireEvent("beforeremove",this,panel,e);if(e.cancel===true){return null;} -preservePanel=(typeof preservePanel!="undefined"?preservePanel:(this.config.preservePanels===true||panel.preserve===true));var panelId=panel.getId();this.panels.removeKey(panelId);if(preservePanel){document.body.appendChild(panel.getEl().dom);} -if(this.tabs){this.tabs.removeTab(panel.getEl().id);}else if(!preservePanel){this.bodyEl.dom.removeChild(panel.getEl().dom);} -if(this.panels.getCount()==1&&this.tabs&&!this.config.alwaysShowTabs){var p=this.panels.first();var tempEl=document.createElement("div");tempEl.appendChild(p.getEl().dom);this.bodyEl.update("");this.bodyEl.dom.appendChild(p.getEl().dom);tempEl=null;this.updateTitle(p.getTitle());this.tabs=null;this.bodyEl.setStyle("overflow",this.config.autoScroll?"auto":"hidden");this.setActivePanel(p);} -panel.setRegion(null);if(this.activePanel==panel){this.activePanel=null;} -if(this.config.autoDestroy!==false&&preservePanel!==true){try{panel.destroy();}catch(e){}} -this.fireEvent("panelremoved",this,panel);return panel;},getTabs:function(){return this.tabs;},createTool:function(parentEl,className){var btn=Ext.DomHelper.append(parentEl,{tag:"div",cls:"x-layout-tools-button",children:[{tag:"div",cls:"x-layout-tools-button-inner "+className,html:" "}]},true);btn.addClassOnOver("x-layout-tools-button-over");return btn;}}); - -Ext.SplitLayoutRegion=function(mgr,config,pos,cursor){this.cursor=cursor;Ext.SplitLayoutRegion.superclass.constructor.call(this,mgr,config,pos);};Ext.extend(Ext.SplitLayoutRegion,Ext.LayoutRegion,{splitTip:"Drag to resize.",collapsibleSplitTip:"Drag to resize. Double click to hide.",useSplitTips:false,applyConfig:function(config){Ext.SplitLayoutRegion.superclass.applyConfig.call(this,config);if(config.split){if(!this.split){var splitEl=Ext.DomHelper.append(this.mgr.el.dom,{tag:"div",id:this.el.id+"-split",cls:"x-layout-split x-layout-split-"+this.position,html:" "});this.split=new Ext.SplitBar(splitEl,this.el,this.orientation);this.split.on("moved",this.onSplitMove,this);this.split.useShim=config.useShim===true;this.split.getMaximumSize=this[this.position=='north'||this.position=='south'?'getVMaxSize':'getHMaxSize'].createDelegate(this);if(this.useSplitTips){this.split.el.dom.title=config.collapsible?this.collapsibleSplitTip:this.splitTip;} -if(config.collapsible){this.split.el.on("dblclick",this.collapse,this);}} -if(typeof config.minSize!="undefined"){this.split.minSize=config.minSize;} -if(typeof config.maxSize!="undefined"){this.split.maxSize=config.maxSize;} -if(config.hideWhenEmpty||config.hidden){this.hideSplitter();}}},getHMaxSize:function(){var cmax=this.config.maxSize||10000;var center=this.mgr.getRegion("center");return Math.min(cmax,(this.el.getWidth()+center.getEl().getWidth())-center.getMinWidth());},getVMaxSize:function(){var cmax=this.config.maxSize||10000;var center=this.mgr.getRegion("center");return Math.min(cmax,(this.el.getHeight()+center.getEl().getHeight())-center.getMinHeight());},onSplitMove:function(split,newSize){this.fireEvent("resized",this,newSize);},getSplitBar:function(){return this.split;},hide:function(){this.hideSplitter();Ext.SplitLayoutRegion.superclass.hide.call(this);},hideSplitter:function(){if(this.split){this.split.el.setLocation(-2000,-2000);this.split.el.hide();}},show:function(){if(this.split){this.split.el.show();} -Ext.SplitLayoutRegion.superclass.show.call(this);},beforeSlide:function(){if(Ext.isGecko){this.bodyEl.clip();if(this.tabs)this.tabs.bodyEl.clip();if(this.activePanel){this.activePanel.getEl().clip();if(this.activePanel.beforeSlide){this.activePanel.beforeSlide();}}}},afterSlide:function(){if(Ext.isGecko){this.bodyEl.unclip();if(this.tabs)this.tabs.bodyEl.unclip();if(this.activePanel){this.activePanel.getEl().unclip();if(this.activePanel.afterSlide){this.activePanel.afterSlide();}}}},initAutoHide:function(){if(this.autoHide!==false){if(!this.autoHideHd){var st=new Ext.util.DelayedTask(this.slideIn,this);this.autoHideHd={"mouseout":function(e){if(!e.within(this.el,true)){st.delay(500);}},"mouseover":function(e){st.cancel();},scope:this};} -this.el.on(this.autoHideHd);}},clearAutoHide:function(){if(this.autoHide!==false){this.el.un("mouseout",this.autoHideHd.mouseout);this.el.un("mouseover",this.autoHideHd.mouseover);}},clearMonitor:function(){Ext.get(document).un("click",this.slideInIf,this);},slideOut:function(){if(this.isSlid||this.el.hasActiveFx()){return;} -this.isSlid=true;if(this.collapseBtn){this.collapseBtn.hide();} -this.closeBtnState=this.closeBtn.getStyle('display');this.closeBtn.hide();if(this.stickBtn){this.stickBtn.show();} -this.el.show();this.el.alignTo(this.collapsedEl,this.getCollapseAnchor());this.beforeSlide();this.el.setStyle("z-index",10001);this.el.slideIn(this.getSlideAnchor(),{callback:function(){this.afterSlide();this.initAutoHide();Ext.get(document).on("click",this.slideInIf,this);this.fireEvent("slideshow",this);},scope:this,block:true});},afterSlideIn:function(){this.clearAutoHide();this.isSlid=false;this.clearMonitor();this.el.setStyle("z-index","");if(this.collapseBtn){this.collapseBtn.show();} -this.closeBtn.setStyle('display',this.closeBtnState);if(this.stickBtn){this.stickBtn.hide();} -this.fireEvent("slidehide",this);},slideIn:function(cb){if(!this.isSlid||this.el.hasActiveFx()){Ext.callback(cb);return;} -this.isSlid=false;this.beforeSlide();this.el.slideOut(this.getSlideAnchor(),{callback:function(){this.el.setLeftTop(-10000,-10000);this.afterSlide();this.afterSlideIn();Ext.callback(cb);},scope:this,block:true});},slideInIf:function(e){if(!e.within(this.el)){this.slideIn();}},animateCollapse:function(){this.beforeSlide();this.el.setStyle("z-index",20000);var anchor=this.getSlideAnchor();this.el.slideOut(anchor,{callback:function(){this.el.setStyle("z-index","");this.collapsedEl.slideIn(anchor,{duration:.3});this.afterSlide();this.el.setLocation(-10000,-10000);this.el.hide();this.fireEvent("collapsed",this);},scope:this,block:true});},animateExpand:function(){this.beforeSlide();this.el.alignTo(this.collapsedEl,this.getCollapseAnchor(),this.getExpandAdj());this.el.setStyle("z-index",20000);this.collapsedEl.hide({duration:.1});this.el.slideIn(this.getSlideAnchor(),{callback:function(){this.el.setStyle("z-index","");this.afterSlide();if(this.split){this.split.el.show();} -this.fireEvent("invalidated",this);this.fireEvent("expanded",this);},scope:this,block:true});},anchors:{"west":"left","east":"right","north":"top","south":"bottom"},sanchors:{"west":"l","east":"r","north":"t","south":"b"},canchors:{"west":"tl-tr","east":"tr-tl","north":"tl-bl","south":"bl-tl"},getAnchor:function(){return this.anchors[this.position];},getCollapseAnchor:function(){return this.canchors[this.position];},getSlideAnchor:function(){return this.sanchors[this.position];},getAlignAdj:function(){var cm=this.cmargins;switch(this.position){case"west":return[0,0];break;case"east":return[0,0];break;case"north":return[0,0];break;case"south":return[0,0];break;}},getExpandAdj:function(){var c=this.collapsedEl,cm=this.cmargins;switch(this.position){case"west":return[-(cm.right+c.getWidth()+cm.left),0];break;case"east":return[cm.right+c.getWidth()+cm.left,0];break;case"north":return[0,-(cm.top+cm.bottom+c.getHeight())];break;case"south":return[0,cm.top+cm.bottom+c.getHeight()];break;}}}); - -Ext.CenterLayoutRegion=function(mgr,config){Ext.CenterLayoutRegion.superclass.constructor.call(this,mgr,config,"center");this.visible=true;this.minWidth=config.minWidth||20;this.minHeight=config.minHeight||20;};Ext.extend(Ext.CenterLayoutRegion,Ext.LayoutRegion,{hide:function(){},show:function(){},getMinWidth:function(){return this.minWidth;},getMinHeight:function(){return this.minHeight;}});Ext.NorthLayoutRegion=function(mgr,config){Ext.NorthLayoutRegion.superclass.constructor.call(this,mgr,config,"north","n-resize");if(this.split){this.split.placement=Ext.SplitBar.TOP;this.split.orientation=Ext.SplitBar.VERTICAL;this.split.el.addClass("x-layout-split-v");} -var size=config.initialSize||config.height;if(typeof size!="undefined"){this.el.setHeight(size);}};Ext.extend(Ext.NorthLayoutRegion,Ext.SplitLayoutRegion,{orientation:Ext.SplitBar.VERTICAL,getBox:function(){if(this.collapsed){return this.collapsedEl.getBox();} -var box=this.el.getBox();if(this.split){box.height+=this.split.el.getHeight();} -return box;},updateBox:function(box){if(this.split&&!this.collapsed){box.height-=this.split.el.getHeight();this.split.el.setLeft(box.x);this.split.el.setTop(box.y+box.height);this.split.el.setWidth(box.width);} -if(this.collapsed){this.updateBody(box.width,null);} -Ext.NorthLayoutRegion.superclass.updateBox.call(this,box);}});Ext.SouthLayoutRegion=function(mgr,config){Ext.SouthLayoutRegion.superclass.constructor.call(this,mgr,config,"south","s-resize");if(this.split){this.split.placement=Ext.SplitBar.BOTTOM;this.split.orientation=Ext.SplitBar.VERTICAL;this.split.el.addClass("x-layout-split-v");} -var size=config.initialSize||config.height;if(typeof size!="undefined"){this.el.setHeight(size);}};Ext.extend(Ext.SouthLayoutRegion,Ext.SplitLayoutRegion,{orientation:Ext.SplitBar.VERTICAL,getBox:function(){if(this.collapsed){return this.collapsedEl.getBox();} -var box=this.el.getBox();if(this.split){var sh=this.split.el.getHeight();box.height+=sh;box.y-=sh;} -return box;},updateBox:function(box){if(this.split&&!this.collapsed){var sh=this.split.el.getHeight();box.height-=sh;box.y+=sh;this.split.el.setLeft(box.x);this.split.el.setTop(box.y-sh);this.split.el.setWidth(box.width);} -if(this.collapsed){this.updateBody(box.width,null);} -Ext.SouthLayoutRegion.superclass.updateBox.call(this,box);}});Ext.EastLayoutRegion=function(mgr,config){Ext.EastLayoutRegion.superclass.constructor.call(this,mgr,config,"east","e-resize");if(this.split){this.split.placement=Ext.SplitBar.RIGHT;this.split.orientation=Ext.SplitBar.HORIZONTAL;this.split.el.addClass("x-layout-split-h");} -var size=config.initialSize||config.width;if(typeof size!="undefined"){this.el.setWidth(size);}};Ext.extend(Ext.EastLayoutRegion,Ext.SplitLayoutRegion,{orientation:Ext.SplitBar.HORIZONTAL,getBox:function(){if(this.collapsed){return this.collapsedEl.getBox();} -var box=this.el.getBox();if(this.split){var sw=this.split.el.getWidth();box.width+=sw;box.x-=sw;} -return box;},updateBox:function(box){if(this.split&&!this.collapsed){var sw=this.split.el.getWidth();box.width-=sw;this.split.el.setLeft(box.x);this.split.el.setTop(box.y);this.split.el.setHeight(box.height);box.x+=sw;} -if(this.collapsed){this.updateBody(null,box.height);} -Ext.EastLayoutRegion.superclass.updateBox.call(this,box);}});Ext.WestLayoutRegion=function(mgr,config){Ext.WestLayoutRegion.superclass.constructor.call(this,mgr,config,"west","w-resize");if(this.split){this.split.placement=Ext.SplitBar.LEFT;this.split.orientation=Ext.SplitBar.HORIZONTAL;this.split.el.addClass("x-layout-split-h");} -var size=config.initialSize||config.width;if(typeof size!="undefined"){this.el.setWidth(size);}};Ext.extend(Ext.WestLayoutRegion,Ext.SplitLayoutRegion,{orientation:Ext.SplitBar.HORIZONTAL,getBox:function(){if(this.collapsed){return this.collapsedEl.getBox();} -var box=this.el.getBox();if(this.split){box.width+=this.split.el.getWidth();} -return box;},updateBox:function(box){if(this.split&&!this.collapsed){var sw=this.split.el.getWidth();box.width-=sw;this.split.el.setLeft(box.x+box.width);this.split.el.setTop(box.y);this.split.el.setHeight(box.height);} -if(this.collapsed){this.updateBody(null,box.height);} -Ext.WestLayoutRegion.superclass.updateBox.call(this,box);}}); - -Ext.LayoutStateManager=function(layout){this.state={north:{},south:{},east:{},west:{}};};Ext.LayoutStateManager.prototype={init:function(layout,provider){this.provider=provider;var state=provider.get(layout.id+"-layout-state");if(state){var wasUpdating=layout.isUpdating();if(!wasUpdating){layout.beginUpdate();} -for(var key in state){if(typeof state[key]!="function"){var rstate=state[key];var r=layout.getRegion(key);if(r&&rstate){if(rstate.size){r.resizeTo(rstate.size);} -if(rstate.collapsed==true){r.collapse(true);}else{r.expand(null,true);}}}} -if(!wasUpdating){layout.endUpdate();} -this.state=state;} -this.layout=layout;layout.on("regionresized",this.onRegionResized,this);layout.on("regioncollapsed",this.onRegionCollapsed,this);layout.on("regionexpanded",this.onRegionExpanded,this);},storeState:function(){this.provider.set(this.layout.id+"-layout-state",this.state);},onRegionResized:function(region,newSize){this.state[region.getPosition()].size=newSize;this.storeState();},onRegionCollapsed:function(region){this.state[region.getPosition()].collapsed=true;this.storeState();},onRegionExpanded:function(region){this.state[region.getPosition()].collapsed=false;this.storeState();}}; - -Ext.ContentPanel=function(el,config,content){if(el.autoCreate){config=el;el=Ext.id();} -this.el=Ext.get(el);if(!this.el&&config&&config.autoCreate){if(typeof config.autoCreate=="object"){if(!config.autoCreate.id){config.autoCreate.id=config.id||el;} -this.el=Ext.DomHelper.append(document.body,config.autoCreate,true);}else{this.el=Ext.DomHelper.append(document.body,{tag:"div",cls:"x-layout-inactive-content",id:config.id||el},true);}} -this.closable=false;this.loaded=false;this.active=false;if(typeof config=="string"){this.title=config;}else{Ext.apply(this,config);} -if(this.resizeEl){this.resizeEl=Ext.get(this.resizeEl,true);}else{this.resizeEl=this.el;} -this.addEvents({"activate":true,"deactivate":true,"resize":true});if(this.autoScroll){this.resizeEl.setStyle("overflow","auto");} -content=content||this.content;if(content){this.setContent(content);} -if(config&&config.url){this.setUrl(this.url,this.params,this.loadOnce);} -Ext.ContentPanel.superclass.constructor.call(this);};Ext.extend(Ext.ContentPanel,Ext.util.Observable,{tabTip:'',setRegion:function(region){this.region=region;if(region){this.el.replaceClass("x-layout-inactive-content","x-layout-active-content");}else{this.el.replaceClass("x-layout-active-content","x-layout-inactive-content");}},getToolbar:function(){return this.toolbar;},setActiveState:function(active){this.active=active;if(!active){this.fireEvent("deactivate",this);}else{this.fireEvent("activate",this);}},setContent:function(content,loadScripts){this.el.update(content,loadScripts);},ignoreResize:function(w,h){if(this.lastSize&&this.lastSize.width==w&&this.lastSize.height==h){return true;}else{this.lastSize={width:w,height:h};return false;}},getUpdateManager:function(){return this.el.getUpdateManager();},load:function(){var um=this.el.getUpdateManager();um.update.apply(um,arguments);return this;},setUrl:function(url,params,loadOnce){if(this.refreshDelegate){this.removeListener("activate",this.refreshDelegate);} -this.refreshDelegate=this._handleRefresh.createDelegate(this,[url,params,loadOnce]);this.on("activate",this.refreshDelegate);return this.el.getUpdateManager();},_handleRefresh:function(url,params,loadOnce){if(!loadOnce||!this.loaded){var updater=this.el.getUpdateManager();updater.update(url,params,this._setLoaded.createDelegate(this));}},_setLoaded:function(){this.loaded=true;},getId:function(){return this.el.id;},getEl:function(){return this.el;},adjustForComponents:function(width,height){if(this.resizeEl!=this.el){width-=this.el.getFrameWidth('lr');height-=this.el.getFrameWidth('tb');} -if(this.toolbar){var te=this.toolbar.getEl();height-=te.getHeight();te.setWidth(width);} -if(this.adjustments){width+=this.adjustments[0];height+=this.adjustments[1];} -return{"width":width,"height":height};},setSize:function(width,height){if(this.fitToFrame&&!this.ignoreResize(width,height)){if(this.fitContainer&&this.resizeEl!=this.el){this.el.setSize(width,height);} -var size=this.adjustForComponents(width,height);this.resizeEl.setSize(this.autoWidth?"auto":size.width,this.autoHeight?"auto":size.height);this.fireEvent('resize',this,size.width,size.height);}},getTitle:function(){return this.title;},setTitle:function(title){this.title=title;if(this.region){this.region.updatePanelTitle(this,title);}},isClosable:function(){return this.closable;},beforeSlide:function(){this.el.clip();this.resizeEl.clip();},afterSlide:function(){this.el.unclip();this.resizeEl.unclip();},refresh:function(){if(this.refreshDelegate){this.loaded=false;this.refreshDelegate();}},destroy:function(){this.el.removeAllListeners();var tempEl=document.createElement("span");tempEl.appendChild(this.el.dom);tempEl.innerHTML="";this.el.remove();this.el=null;}});Ext.GridPanel=function(grid,config){this.wrapper=Ext.DomHelper.append(document.body,{tag:"div",cls:"x-layout-grid-wrapper x-layout-inactive-content"},true);this.wrapper.dom.appendChild(grid.getGridEl().dom);Ext.GridPanel.superclass.constructor.call(this,this.wrapper,config);if(this.toolbar){this.toolbar.el.insertBefore(this.wrapper.dom.firstChild);} -grid.monitorWindowResize=false;grid.autoHeight=false;grid.autoWidth=false;this.grid=grid;this.grid.getGridEl().replaceClass("x-layout-inactive-content","x-layout-component-panel");};Ext.extend(Ext.GridPanel,Ext.ContentPanel,{getId:function(){return this.grid.id;},getGrid:function(){return this.grid;},setSize:function(width,height){if(!this.ignoreResize(width,height)){var grid=this.grid;var size=this.adjustForComponents(width,height);grid.getGridEl().setSize(size.width,size.height);grid.autoSize();}},beforeSlide:function(){this.grid.getView().scroller.clip();},afterSlide:function(){this.grid.getView().scroller.unclip();},destroy:function(){this.grid.destroy();delete this.grid;Ext.GridPanel.superclass.destroy.call(this);}});Ext.NestedLayoutPanel=function(layout,config){Ext.NestedLayoutPanel.superclass.constructor.call(this,layout.getEl(),config);layout.monitorWindowResize=false;this.layout=layout;this.layout.getEl().addClass("x-layout-nested-layout");};Ext.extend(Ext.NestedLayoutPanel,Ext.ContentPanel,{setSize:function(width,height){if(!this.ignoreResize(width,height)){var size=this.adjustForComponents(width,height);var el=this.layout.getEl();el.setSize(size.width,size.height);var touch=el.dom.offsetWidth;this.layout.layout();if(Ext.isIE&&!this.initialized){this.initialized=true;this.layout.layout();}}},getLayout:function(){return this.layout;}});Ext.ScrollPanel=function(el,config,content){config=config||{};config.fitToFrame=true;Ext.ScrollPanel.superclass.constructor.call(this,el,config,content);this.el.dom.style.overflow="hidden";var wrap=this.el.wrap({cls:"x-scroller x-layout-inactive-content"});this.el.removeClass("x-layout-inactive-content");this.el.on("mousewheel",this.onWheel,this);var up=wrap.createChild({cls:"x-scroller-up",html:" "},this.el.dom);var down=wrap.createChild({cls:"x-scroller-down",html:" "});up.unselectable();down.unselectable();up.on("click",this.scrollUp,this);down.on("click",this.scrollDown,this);up.addClassOnOver("x-scroller-btn-over");down.addClassOnOver("x-scroller-btn-over");up.addClassOnClick("x-scroller-btn-click");down.addClassOnClick("x-scroller-btn-click");this.adjustments=[0,-(up.getHeight()+down.getHeight())];this.resizeEl=this.el;this.el=wrap;this.up=up;this.down=down;};Ext.extend(Ext.ScrollPanel,Ext.ContentPanel,{increment:100,wheelIncrement:5,scrollUp:function(){this.resizeEl.scroll("up",this.increment,{callback:this.afterScroll,scope:this});},scrollDown:function(){this.resizeEl.scroll("down",this.increment,{callback:this.afterScroll,scope:this});},afterScroll:function(){var el=this.resizeEl;var t=el.dom.scrollTop,h=el.dom.scrollHeight,ch=el.dom.clientHeight;this.up[t==0?"addClass":"removeClass"]("x-scroller-btn-disabled");this.down[h-t<=ch?"addClass":"removeClass"]("x-scroller-btn-disabled");},setSize:function(){Ext.ScrollPanel.superclass.setSize.apply(this,arguments);this.afterScroll();},onWheel:function(e){var d=e.getWheelDelta();this.resizeEl.dom.scrollTop-=(d*this.wheelIncrement);this.afterScroll();e.stopEvent();},setContent:function(content,loadScripts){this.resizeEl.update(content,loadScripts);}}); - -Ext.ReaderLayout=function(config,renderTo){var c=config||{size:{}};Ext.ReaderLayout.superclass.constructor.call(this,renderTo||document.body,{north:c.north!==false?Ext.apply({split:false,initialSize:32,titlebar:false},c.north):false,west:c.west!==false?Ext.apply({split:true,initialSize:200,minSize:175,maxSize:400,titlebar:true,collapsible:true,animate:true,margins:{left:5,right:0,bottom:5,top:5},cmargins:{left:5,right:5,bottom:5,top:5}},c.west):false,east:c.east!==false?Ext.apply({split:true,initialSize:200,minSize:175,maxSize:400,titlebar:true,collapsible:true,animate:true,margins:{left:0,right:5,bottom:5,top:5},cmargins:{left:5,right:5,bottom:5,top:5}},c.east):false,center:Ext.apply({tabPosition:'top',autoScroll:false,closeOnTab:true,titlebar:false,margins:{left:c.west!==false?0:5,right:c.east!==false?0:5,bottom:5,top:2}},c.center)});this.el.addClass('x-reader');this.beginUpdate();var inner=new Ext.BorderLayout(Ext.get(document.body).createChild(),{south:c.preview!==false?Ext.apply({split:true,initialSize:200,minSize:100,autoScroll:true,collapsible:true,titlebar:true,cmargins:{top:5,left:0,right:0,bottom:0}},c.preview):false,center:Ext.apply({autoScroll:false,titlebar:false,minHeight:200},c.listView)});this.add('center',new Ext.NestedLayoutPanel(inner,Ext.apply({title:c.mainTitle||'',tabTip:''},c.innerPanelCfg)));this.endUpdate();this.regions.preview=inner.getRegion('south');this.regions.listView=inner.getRegion('center');};Ext.extend(Ext.ReaderLayout,Ext.BorderLayout); diff --git a/lib/web/extjs/package/menu/menus.js b/lib/web/extjs/package/menu/menus.js deleted file mode 100644 index 62849087ff8ff7d809f200d7416ec23ee9e7b97d..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/menu/menus.js +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.menu.Menu=function(config){Ext.apply(this,config);this.id=this.id||Ext.id();this.addEvents({beforeshow:true,beforehide:true,show:true,hide:true,click:true,mouseover:true,mouseout:true,itemclick:true});Ext.menu.MenuMgr.register(this);var mis=this.items;this.items=new Ext.util.MixedCollection();if(mis){this.add.apply(this,mis);}};Ext.extend(Ext.menu.Menu,Ext.util.Observable,{minWidth:120,shadow:"sides",subMenuAlign:"tl-tr?",defaultAlign:"tl-bl?",allowOtherMenus:false,hidden:true,render:function(){if(this.el){return;} -var el=this.el=new Ext.Layer({cls:"x-menu",shadow:this.shadow,constrain:false,parentEl:this.parentEl||document.body,zindex:15000});this.keyNav=new Ext.menu.MenuNav(this);if(this.plain){el.addClass("x-menu-plain");} -if(this.cls){el.addClass(this.cls);} -this.focusEl=el.createChild({tag:"a",cls:"x-menu-focus",href:"#",onclick:"return false;",tabIndex:"-1"});var ul=el.createChild({tag:"ul",cls:"x-menu-list"});ul.on("click",this.onClick,this);ul.on("mouseover",this.onMouseOver,this);ul.on("mouseout",this.onMouseOut,this);this.items.each(function(item){var li=document.createElement("li");li.className="x-menu-list-item";ul.dom.appendChild(li);item.render(li,this);},this);this.ul=ul;this.autoWidth();},autoWidth:function(){var el=this.el,ul=this.ul;if(!el){return;} -var w=this.width;if(w){el.setWidth(w);}else if(Ext.isIE){el.setWidth(this.minWidth);var t=el.dom.offsetWidth;el.setWidth(ul.getWidth()+el.getFrameWidth("lr"));}},delayAutoWidth:function(){if(this.rendered){if(!this.awTask){this.awTask=new Ext.util.DelayedTask(this.autoWidth,this);} -this.awTask.delay(20);}},findTargetItem:function(e){var t=e.getTarget(".x-menu-list-item",this.ul,true);if(t&&t.menuItemId){return this.items.get(t.menuItemId);}},onClick:function(e){var t;if(t=this.findTargetItem(e)){t.onClick(e);this.fireEvent("click",this,t,e);}},setActiveItem:function(item,autoExpand){if(item!=this.activeItem){if(this.activeItem){this.activeItem.deactivate();} -this.activeItem=item;item.activate(autoExpand);}else if(autoExpand){item.expandMenu();}},tryActivate:function(start,step){var items=this.items;for(var i=start,len=items.length;i>=0&&i<len;i+=step){var item=items.get(i);if(!item.disabled&&item.canActivate){this.setActiveItem(item,false);return item;}} -return false;},onMouseOver:function(e){var t;if(t=this.findTargetItem(e)){if(t.canActivate&&!t.disabled){this.setActiveItem(t,true);}} -this.fireEvent("mouseover",this,e,t);},onMouseOut:function(e){var t;if(t=this.findTargetItem(e)){if(t==this.activeItem&&t.shouldDeactivate(e)){this.activeItem.deactivate();delete this.activeItem;}} -this.fireEvent("mouseout",this,e,t);},isVisible:function(){return this.el&&!this.hidden;},show:function(el,pos,parentMenu){this.parentMenu=parentMenu;if(!this.el){this.render();} -this.fireEvent("beforeshow",this);this.showAt(this.el.getAlignToXY(el,pos||this.defaultAlign),parentMenu,false);},showAt:function(xy,parentMenu,_fireBefore){this.parentMenu=parentMenu;if(!this.el){this.render();} -if(_fireBefore!==false){this.fireEvent("beforeshow",this);} -this.el.setXY(xy);this.el.show();this.hidden=false;this.focus();this.fireEvent("show",this);},focus:function(){if(!this.hidden){this.doFocus.defer(50,this);}},doFocus:function(){if(!this.hidden){this.focusEl.focus();}},hide:function(deep){if(this.el&&this.isVisible()){this.fireEvent("beforehide",this);if(this.activeItem){this.activeItem.deactivate();this.activeItem=null;} -this.el.hide();this.hidden=true;this.fireEvent("hide",this);} -if(deep===true&&this.parentMenu){this.parentMenu.hide(true);}},add:function(){var a=arguments,l=a.length,item;for(var i=0;i<l;i++){var el=a[i];if(el.render){item=this.addItem(el);}else if(typeof el=="string"){if(el=="separator"||el=="-"){item=this.addSeparator();}else{item=this.addText(el);}}else if(el.tagName||el.el){item=this.addElement(el);}else if(typeof el=="object"){item=this.addMenuItem(el);}} -return item;},getEl:function(){if(!this.el){this.render();} -return this.el;},addSeparator:function(){return this.addItem(new Ext.menu.Separator());},addElement:function(el){return this.addItem(new Ext.menu.BaseItem(el));},addItem:function(item){this.items.add(item);if(this.ul){var li=document.createElement("li");li.className="x-menu-list-item";this.ul.dom.appendChild(li);item.render(li,this);this.delayAutoWidth();} -return item;},addMenuItem:function(config){if(!(config instanceof Ext.menu.Item)){if(typeof config.checked=="boolean"){config=new Ext.menu.CheckItem(config);}else{config=new Ext.menu.Item(config);}} -return this.addItem(config);},addText:function(text){return this.addItem(new Ext.menu.TextItem(text));},insert:function(index,item){this.items.insert(index,item);if(this.ul){var li=document.createElement("li");li.className="x-menu-list-item";this.ul.dom.insertBefore(li,this.ul.dom.childNodes[index]);item.render(li,this);this.delayAutoWidth();} -return item;},remove:function(item){this.items.removeKey(item.id);item.destroy();},removeAll:function(){var f;while(f=this.items.first()){this.remove(f);}}});Ext.menu.MenuNav=function(menu){Ext.menu.MenuNav.superclass.constructor.call(this,menu.el);this.scope=this.menu=menu;};Ext.extend(Ext.menu.MenuNav,Ext.KeyNav,{doRelay:function(e,h){var k=e.getKey();if(!this.menu.activeItem&&e.isNavKeyPress()&&k!=e.SPACE&&k!=e.RETURN){this.menu.tryActivate(0,1);return false;} -return h.call(this.scope||this,e,this.menu);},up:function(e,m){if(!m.tryActivate(m.items.indexOf(m.activeItem)-1,-1)){m.tryActivate(m.items.length-1,-1);}},down:function(e,m){if(!m.tryActivate(m.items.indexOf(m.activeItem)+1,1)){m.tryActivate(0,1);}},right:function(e,m){if(m.activeItem){m.activeItem.expandMenu(true);}},left:function(e,m){m.hide();if(m.parentMenu&&m.parentMenu.activeItem){m.parentMenu.activeItem.activate();}},enter:function(e,m){if(m.activeItem){e.stopPropagation();m.activeItem.onClick(e);m.fireEvent("click",this,m.activeItem);return true;}}}); - -Ext.menu.MenuMgr=function(){var menus,active,groups={},attached=false,lastShow=new Date();function init(){menus={},active=new Ext.util.MixedCollection();Ext.get(document).addKeyListener(27,function(){if(active.length>0){hideAll();}});} -function hideAll(){if(active.length>0){var c=active.clone();c.each(function(m){m.hide();});}} -function onHide(m){active.remove(m);if(active.length<1){Ext.get(document).un("mousedown",onMouseDown);attached=false;}} -function onShow(m){var last=active.last();lastShow=new Date();active.add(m);if(!attached){Ext.get(document).on("mousedown",onMouseDown);attached=true;} -if(m.parentMenu){m.getEl().setZIndex(parseInt(m.parentMenu.getEl().getStyle("z-index"),10)+3);m.parentMenu.activeChild=m;}else if(last&&last.isVisible()){m.getEl().setZIndex(parseInt(last.getEl().getStyle("z-index"),10)+3);}} -function onBeforeHide(m){if(m.activeChild){m.activeChild.hide();} -if(m.autoHideTimer){clearTimeout(m.autoHideTimer);delete m.autoHideTimer;}} -function onBeforeShow(m){var pm=m.parentMenu;if(!pm&&!m.allowOtherMenus){hideAll();}else if(pm&&pm.activeChild){pm.activeChild.hide();}} -function onMouseDown(e){if(lastShow.getElapsed()>50&&active.length>0&&!e.getTarget(".x-menu")){hideAll();}} -function onBeforeCheck(mi,state){if(state){var g=groups[mi.group];for(var i=0,l=g.length;i<l;i++){if(g[i]!=mi){g[i].setChecked(false);}}}} -return{hideAll:function(){hideAll();},register:function(menu){if(!menus){init();} -menus[menu.id]=menu;menu.on("beforehide",onBeforeHide);menu.on("hide",onHide);menu.on("beforeshow",onBeforeShow);menu.on("show",onShow);var g=menu.group;if(g&&menu.events["checkchange"]){if(!groups[g]){groups[g]=[];} -groups[g].push(menu);menu.on("checkchange",onCheck);}},get:function(menu){if(typeof menu=="string"){return menus[menu];}else if(menu.events){return menu;}else if(typeof menu.length=='number'){return new Ext.menu.Menu({items:menu});}else{return new Ext.menu.Menu(menu);}},unregister:function(menu){delete menus[menu.id];menu.un("beforehide",onBeforeHide);menu.un("hide",onHide);menu.un("beforeshow",onBeforeShow);menu.un("show",onShow);var g=menu.group;if(g&&menu.events["checkchange"]){groups[g].remove(menu);menu.un("checkchange",onCheck);}},registerCheckable:function(menuItem){var g=menuItem.group;if(g){if(!groups[g]){groups[g]=[];} -groups[g].push(menuItem);menuItem.on("beforecheckchange",onBeforeCheck);}},unregisterCheckable:function(menuItem){var g=menuItem.group;if(g){groups[g].remove(menuItem);menuItem.un("beforecheckchange",onBeforeCheck);}}};}(); - -Ext.menu.BaseItem=function(config){Ext.menu.BaseItem.superclass.constructor.call(this,config);this.addEvents({click:true,activate:true,deactivate:true});if(this.handler){this.on("click",this.handler,this.scope,true);}};Ext.extend(Ext.menu.BaseItem,Ext.Component,{canActivate:false,activeClass:"x-menu-item-active",hideOnClick:true,hideDelay:100,ctype:"Ext.menu.BaseItem",actionMode:"container",render:function(container,parentMenu){this.parentMenu=parentMenu;Ext.menu.BaseItem.superclass.render.call(this,container);this.container.menuItemId=this.id;},onRender:function(container,position){this.el=Ext.get(this.el);container.dom.appendChild(this.el.dom);},onClick:function(e){if(!this.disabled&&this.fireEvent("click",this,e)!==false&&this.parentMenu.fireEvent("itemclick",this,e)!==false){this.handleClick(e);}else{e.stopEvent();}},activate:function(){if(this.disabled){return false;} -var li=this.container;li.addClass(this.activeClass);this.region=li.getRegion().adjust(2,2,-2,-2);this.fireEvent("activate",this);return true;},deactivate:function(){this.container.removeClass(this.activeClass);this.fireEvent("deactivate",this);},shouldDeactivate:function(e){return!this.region||!this.region.contains(e.getPoint());},handleClick:function(e){if(this.hideOnClick){this.parentMenu.hide.defer(this.hideDelay,this.parentMenu,[true]);}},expandMenu:function(autoActivate){},hideMenu:function(){}}); - -Ext.menu.TextItem=function(text){this.text=text;Ext.menu.TextItem.superclass.constructor.call(this);};Ext.extend(Ext.menu.TextItem,Ext.menu.BaseItem,{hideOnClick:false,itemCls:"x-menu-text",onRender:function(){var s=document.createElement("span");s.className=this.itemCls;s.innerHTML=this.text;this.el=s;Ext.menu.TextItem.superclass.onRender.apply(this,arguments);}}); - -Ext.menu.Separator=function(config){Ext.menu.Separator.superclass.constructor.call(this,config);};Ext.extend(Ext.menu.Separator,Ext.menu.BaseItem,{itemCls:"x-menu-sep",hideOnClick:false,onRender:function(li){var s=document.createElement("span");s.className=this.itemCls;s.innerHTML=" ";this.el=s;li.addClass("x-menu-sep-li");Ext.menu.Separator.superclass.onRender.apply(this,arguments);}}); - -Ext.menu.Item=function(config){Ext.menu.Item.superclass.constructor.call(this,config);if(this.menu){this.menu=Ext.menu.MenuMgr.get(this.menu);}};Ext.extend(Ext.menu.Item,Ext.menu.BaseItem,{itemCls:"x-menu-item",canActivate:true,ctype:"Ext.menu.Item",onRender:function(container,position){var el=document.createElement("a");el.hideFocus=true;el.unselectable="on";el.href=this.href||"#";if(this.hrefTarget){el.target=this.hrefTarget;} -el.className=this.itemCls+(this.menu?" x-menu-item-arrow":"")+(this.cls?" "+this.cls:"");el.innerHTML=String.format('<img src="{0}" class="x-menu-item-icon {2}" />{1}',this.icon||Ext.BLANK_IMAGE_URL,this.text,this.iconCls||'');this.el=el;Ext.menu.Item.superclass.onRender.call(this,container,position);},setText:function(text){this.text=text;if(this.rendered){this.el.update(String.format('<img src="{0}" class="x-menu-item-icon {2}">{1}',this.icon||Ext.BLANK_IMAGE_URL,this.text,this.iconCls||''));this.parentMenu.autoWidth();}},handleClick:function(e){if(!this.href){e.stopEvent();} -Ext.menu.Item.superclass.handleClick.apply(this,arguments);},activate:function(autoExpand){if(Ext.menu.Item.superclass.activate.apply(this,arguments)){this.focus();if(autoExpand){this.expandMenu();}} -return true;},shouldDeactivate:function(e){if(Ext.menu.Item.superclass.shouldDeactivate.call(this,e)){if(this.menu&&this.menu.isVisible()){return!this.menu.getEl().getRegion().contains(e.getPoint());} -return true;} -return false;},deactivate:function(){Ext.menu.Item.superclass.deactivate.apply(this,arguments);this.hideMenu();},expandMenu:function(autoActivate){if(!this.disabled&&this.menu){if(!this.menu.isVisible()){this.menu.show(this.container,this.parentMenu.subMenuAlign||"tl-tr?",this.parentMenu);} -if(autoActivate){this.menu.tryActivate(0,1);}}},hideMenu:function(){if(this.menu&&this.menu.isVisible()){this.menu.hide();}}}); - -Ext.menu.CheckItem=function(config){Ext.menu.CheckItem.superclass.constructor.call(this,config);this.addEvents({"beforecheckchange":true,"checkchange":true});if(this.checkHandler){this.on('checkchange',this.checkHandler,this.scope);}};Ext.extend(Ext.menu.CheckItem,Ext.menu.Item,{itemCls:"x-menu-item x-menu-check-item",groupClass:"x-menu-group-item",checked:false,ctype:"Ext.menu.CheckItem",onRender:function(c){Ext.menu.CheckItem.superclass.onRender.apply(this,arguments);if(this.group){this.el.addClass(this.groupClass);} -Ext.menu.MenuMgr.registerCheckable(this);if(this.checked){this.checked=false;this.setChecked(true,true);}},destroy:function(){if(this.rendered){Ext.menu.MenuMgr.unregisterCheckable(this);} -Ext.menu.CheckItem.superclass.destroy.apply(this,arguments);},setChecked:function(state,suppressEvent){if(this.checked!=state&&this.fireEvent("beforecheckchange",this,state)!==false){if(this.container){this.container[state?"addClass":"removeClass"]("x-menu-item-checked");} -this.checked=state;if(suppressEvent!==true){this.fireEvent("checkchange",this,state);}}},handleClick:function(e){if(!this.disabled&&!(this.checked&&this.group)){this.setChecked(!this.checked);} -Ext.menu.CheckItem.superclass.handleClick.apply(this,arguments);}}); - -Ext.menu.Adapter=function(component,config){Ext.menu.Adapter.superclass.constructor.call(this,config);this.component=component;};Ext.extend(Ext.menu.Adapter,Ext.menu.BaseItem,{canActivate:true,onRender:function(container,position){this.component.render(container);this.el=this.component.getEl();},activate:function(){if(this.disabled){return false;} -this.component.focus();this.fireEvent("activate",this);return true;},deactivate:function(){this.fireEvent("deactivate",this);},disable:function(){this.component.disable();Ext.menu.Adapter.superclass.disable.call(this);},enable:function(){this.component.enable();Ext.menu.Adapter.superclass.enable.call(this);}}); - -Ext.menu.DateItem=function(config){Ext.menu.DateItem.superclass.constructor.call(this,new Ext.DatePicker(config),config);this.picker=this.component;this.addEvents({select:true});this.picker.on("render",function(picker){picker.getEl().swallowEvent("click");picker.container.addClass("x-menu-date-item");});this.picker.on("select",this.onSelect,this);};Ext.extend(Ext.menu.DateItem,Ext.menu.Adapter,{onSelect:function(picker,date){this.fireEvent("select",this,date,picker);Ext.menu.DateItem.superclass.handleClick.call(this);}}); - -Ext.menu.ColorItem=function(config){Ext.menu.ColorItem.superclass.constructor.call(this,new Ext.ColorPalette(config),config);this.palette=this.component;this.relayEvents(this.palette,["select"]);if(this.selectHandler){this.on('select',this.selectHandler,this.scope);}};Ext.extend(Ext.menu.ColorItem,Ext.menu.Adapter); - -Ext.menu.DateMenu=function(config){Ext.menu.DateMenu.superclass.constructor.call(this,config);this.plain=true;var di=new Ext.menu.DateItem(config);this.add(di);this.picker=di.picker;this.relayEvents(di,["select"]);this.on('beforeshow',function(){if(this.picker){this.picker.hideMonthPicker(true);}},this);};Ext.extend(Ext.menu.DateMenu,Ext.menu.Menu,{cls:'x-date-menu'}); - -Ext.menu.ColorMenu=function(config){Ext.menu.ColorMenu.superclass.constructor.call(this,config);this.plain=true;var ci=new Ext.menu.ColorItem(config);this.add(ci);this.palette=ci.palette;this.relayEvents(ci,["select"]);};Ext.extend(Ext.menu.ColorMenu,Ext.menu.Menu); diff --git a/lib/web/extjs/package/qtips/qtips.js b/lib/web/extjs/package/qtips/qtips.js deleted file mode 100644 index 808750220adefe670d347ade976a6b1d57904af2..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/qtips/qtips.js +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.QuickTips=function(){var el,tipBody,tipBodyText,tipTitle,tm,cfg,close,tagEls={},esc,removeCls=null,bdLeft,bdRight;var ce,bd,xy,dd;var visible=false,disabled=true,inited=false;var showProc=1,hideProc=1,dismissProc=1,locks=[];var onOver=function(e){if(disabled){return;} -var t=e.getTarget();if(!t||t.nodeType!==1||t==document||t==document.body){return;} -if(ce&&t==ce.el){clearTimeout(hideProc);return;} -if(t&&tagEls[t.id]){tagEls[t.id].el=t;showProc=show.defer(tm.showDelay,tm,[tagEls[t.id]]);return;} -var ttp,et=Ext.fly(t);var ns=cfg.namespace;if(tm.interceptTitles&&t.title){ttp=t.title;t.qtip=ttp;t.removeAttribute("title");e.preventDefault();}else{ttp=t.qtip||et.getAttributeNS(ns,cfg.attribute);} -if(ttp){showProc=show.defer(tm.showDelay,tm,[{el:t,text:ttp,width:et.getAttributeNS(ns,cfg.width),autoHide:et.getAttributeNS(ns,cfg.hide)!="user",title:et.getAttributeNS(ns,cfg.title),cls:et.getAttributeNS(ns,cfg.cls)}]);}};var onOut=function(e){clearTimeout(showProc);var t=e.getTarget();if(t&&ce&&ce.el==t&&(tm.autoHide&&ce.autoHide!==false)){hideProc=setTimeout(hide,tm.hideDelay);}};var onMove=function(e){if(disabled){return;} -xy=e.getXY();xy[1]+=18;if(tm.trackMouse&&ce){el.setXY(xy);}};var onDown=function(e){clearTimeout(showProc);clearTimeout(hideProc);if(!e.within(el)){if(tm.hideOnClick){hide();tm.disable();}}};var onUp=function(e){tm.enable();};var getPad=function(){return bdLeft.getPadding('l')+bdRight.getPadding('r');};var show=function(o){if(disabled){return;} -clearTimeout(dismissProc);ce=o;if(removeCls){el.removeClass(removeCls);removeCls=null;} -if(ce.cls){el.addClass(ce.cls);removeCls=ce.cls;} -if(ce.title){tipTitle.update(ce.title);tipTitle.show();}else{tipTitle.update('');tipTitle.hide();} -el.dom.style.width=tm.maxWidth+'px';tipBodyText.update(o.text);var p=getPad(),w=ce.width;if(!w){var td=tipBodyText.dom;var aw=Math.max(td.offsetWidth,td.clientWidth,td.scrollWidth);if(aw>tm.maxWidth){w=tm.maxWidth;}else if(aw<tm.minWidth){w=tm.minWidth;}else{w=aw;}} -el.setWidth(parseInt(w,10)+p);if(ce.autoHide===false){close.setDisplayed(true);if(dd){dd.unlock();}}else{close.setDisplayed(false);if(dd){dd.lock();}} -if(xy){el.avoidY=xy[1]-18;el.setXY(xy);} -if(tm.animate){el.setOpacity(.1);el.setStyle("visibility","visible");el.fadeIn({callback:afterShow});}else{afterShow();}};var afterShow=function(){if(ce){el.show();esc.enable();if(tm.autoDismiss&&ce.autoHide!==false){dismissProc=setTimeout(hide,tm.autoDismissDelay);}}};var hide=function(noanim){clearTimeout(dismissProc);clearTimeout(hideProc);ce=null;if(el.isVisible()){esc.disable();if(noanim!==true&&tm.animate){el.fadeOut({callback:afterHide});}else{afterHide();}}};var afterHide=function(){el.hide();if(removeCls){el.removeClass(removeCls);removeCls=null;}};return{minWidth:40,maxWidth:300,interceptTitles:false,trackMouse:false,hideOnClick:true,showDelay:500,hideDelay:200,autoHide:true,autoDismiss:true,autoDismissDelay:5000,animate:false,init:function(){tm=Ext.QuickTips;cfg=tm.tagConfig;if(!inited){if(!Ext.isReady){Ext.onReady(Ext.QuickTips.init,Ext.QuickTips);return;} -el=new Ext.Layer({cls:"x-tip",shadow:"drop",shim:true,constrain:true,shadowOffset:4});el.fxDefaults={stopFx:true};el.update('<div class="x-tip-top-left"><div class="x-tip-top-right"><div class="x-tip-top"></div></div></div><div class="x-tip-bd-left"><div class="x-tip-bd-right"><div class="x-tip-bd"><div class="x-tip-close"></div><h3></h3><div class="x-tip-bd-inner"></div><div class="x-clear"></div></div></div></div><div class="x-tip-ft-left"><div class="x-tip-ft-right"><div class="x-tip-ft"></div></div></div>');tipTitle=el.child('h3');tipTitle.enableDisplayMode("block");tipBody=el.child('div.x-tip-bd');tipBodyText=el.child('div.x-tip-bd-inner');bdLeft=el.child('div.x-tip-bd-left');bdRight=el.child('div.x-tip-bd-right');close=el.child('div.x-tip-close');close.enableDisplayMode("block");close.on("click",hide);var d=Ext.get(document);d.on("mousedown",onDown);d.on("mouseup",onUp);d.on("mouseover",onOver);d.on("mouseout",onOut);d.on("mousemove",onMove);esc=d.addKeyListener(27,hide);esc.disable();if(Ext.dd.DD){dd=el.initDD("default",null,{onDrag:function(){el.sync();}});dd.setHandleElId(tipTitle.id);dd.lock();} -inited=true;} -this.enable();},register:function(config){var cs=config instanceof Array?config:arguments;for(var i=0,len=cs.length;i<len;i++){var c=cs[i];var target=c.target;if(target){if(target instanceof Array){for(var j=0,jlen=target.length;j<jlen;j++){tagEls[target[j]]=c;}}else{tagEls[typeof target=='string'?target:Ext.id(target.id)]=c;}}}},unregister:function(el){delete tagEls[Ext.id(el)];},enable:function(){if(inited){locks.pop();if(locks.length<1){disabled=false;}}},disable:function(){disabled=true;clearTimeout(showProc);clearTimeout(hideProc);clearTimeout(dismissProc);if(ce){hide(true);} -locks.push(1);},isEnabled:function(){return!disabled;},tagConfig:{namespace:"ext",attribute:"qtip",width:"width",target:"target",title:"qtitle",hide:"hide",cls:"qclass"}};}();Ext.QuickTips.tips=Ext.QuickTips.register; diff --git a/lib/web/extjs/package/r/nesizable.js b/lib/web/extjs/package/r/nesizable.js deleted file mode 100644 index b5c28d7091d3bfe77ae6acfd6f0c8c94eea1f9a5..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/r/nesizable.js +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Ext JS Library 1.0 Beta 2 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.Resizable=function(el,config){this.el=Ext.get(el);if(config&&config.wrap){config.resizeChild=this.el;this.el=this.el.wrap(typeof config.wrap=="object"?config.wrap:{cls:"xresizable-wrap"});this.el.id=this.el.dom.id=config.resizeChild.id+"-rzwrap";this.el.setStyle("overflow","hidden");this.el.setPositioning(config.resizeChild.getPositioning());config.resizeChild.clearPositioning();if(!config.width||!config.height){var csize=config.resizeChild.getSize();this.el.setSize(csize.width,csize.height);} -if(config.pinned&&!config.adjustments){config.adjustments="auto";}} -this.proxy=this.el.createProxy({tag:"div",cls:"x-resizable-proxy",id:this.el.id+"-rzproxy"});this.proxy.unselectable();this.overlay=this.el.createProxy({tag:"div",cls:"x-resizable-overlay",html:" "});this.overlay.unselectable();this.overlay.enableDisplayMode("block");this.overlay.on("mousemove",this.onMouseMove,this);this.overlay.on("mouseup",this.onMouseUp,this);Ext.apply(this,config);if(this.pinned){this.disableTrackOver=true;this.el.addClass("x-resizable-pinned");} -var position=this.el.getStyle("position");if(position!="absolute"&&position!="fixed"){this.el.setStyle("position","relative");} -if(!this.handles){this.handles='s,e,se';if(this.multiDirectional){this.handles+=',n,w';}} -if(this.handles=="all"){this.handles="n s e w ne nw se sw";} -var hs=this.handles.split(/\s*?[,;]\s*?| /);var ps=Ext.Resizable.positions;for(var i=0,len=hs.length;i<len;i++){if(hs[i]&&ps[hs[i]]){var pos=ps[hs[i]];this[pos]=new Ext.Resizable.Handle(this,pos,this.disableTrackOver,this.transparent);}} -this.corner=this.southeast;if(this.handles.indexOf("n")!=-1||this.handles.indexOf("w")!=-1){this.updateBox=true;} -this.activeHandle=null;if(this.resizeChild){if(typeof this.resizeChild=="boolean"){this.resizeChild=Ext.get(this.el.dom.firstChild,true);}else{this.resizeChild=Ext.get(this.resizeChild,true);}} -if(this.adjustments=="auto"){var rc=this.resizeChild;var hw=this.west,he=this.east,hn=this.north,hs=this.south;if(rc&&(hw||hn)){rc.position("relative");rc.setLeft(hw?hw.el.getWidth():0);rc.setTop(hn?hn.el.getHeight():0);} -this.adjustments=[(he?-he.el.getWidth():0)+(hw?-hw.el.getWidth():0),(hn?-hn.el.getHeight():0)+(hs?-hs.el.getHeight():0)-1];} -if(this.draggable){this.dd=this.dynamic?this.el.initDD(null):this.el.initDDProxy(null,{dragElId:this.proxy.id});this.dd.setHandleElId(this.resizeChild?this.resizeChild.id:this.el.id);} -this.events={"beforeresize":true,"resize":true};if(this.width!==null&&this.height!==null){this.resizeTo(this.width,this.height);}else{this.updateChildSize();} -Ext.Resizable.superclass.constructor.call(this);};Ext.extend(Ext.Resizable,Ext.util.Observable,{resizeChild:false,adjustments:[0,0],minWidth:5,minHeight:5,maxWidth:10000,maxHeight:10000,enabled:true,animate:false,duration:.35,dynamic:false,handles:false,multiDirectional:false,disableTrackOver:false,easing:'easeOutStrong',widthIncrement:0,heightIncrement:0,pinned:false,width:null,height:null,preserveRatio:false,transparent:false,minX:0,minY:0,draggable:false,resizeTo:function(width,height){this.el.setSize(width,height);this.updateChildSize();this.fireEvent("resize",this,width,height,null);},startSizing:function(e){this.fireEvent("beforeresize",this,e);if(this.enabled){this.resizing=true;this.startBox=this.el.getBox();this.startPoint=e.getXY();this.offsets=[(this.startBox.x+this.startBox.width)-this.startPoint[0],(this.startBox.y+this.startBox.height)-this.startPoint[1]];this.proxy.setBox(this.startBox);this.overlay.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true));this.overlay.show();if(!this.dynamic){this.proxy.show();}}},onMouseDown:function(handle,e){if(this.enabled){e.stopEvent();this.activeHandle=handle;this.overlay.setStyle("cursor",handle.el.getStyle("cursor"));this.startSizing(e);}},onMouseUp:function(e){var size=this.resizeElement();this.resizing=false;this.handleOut();this.overlay.hide();this.fireEvent("resize",this,size.width,size.height,e);},updateChildSize:function(){if(this.resizeChild){var el=this.el;var child=this.resizeChild;var adj=this.adjustments;if(el.dom.offsetWidth){var b=el.getSize(true);child.setSize(b.width+adj[0],b.height+adj[1]);} -if(Ext.isIE){setTimeout(function(){if(el.dom.offsetWidth){var b=el.getSize(true);child.setSize(b.width+adj[0],b.height+adj[1]);}},10);}}},snap:function(value,inc,min){if(!inc||!value)return value;var newValue=value;var m=value%inc;if(m>0){if(m>(inc/2)){newValue=value+(inc-m);}else{newValue=value-m;}} -return Math.max(min,newValue);},resizeElement:function(){var box=this.proxy.getBox();if(this.updateBox){this.el.setBox(box,false,this.animate,this.duration,null,this.easing);}else{this.el.setSize(box.width,box.height,this.animate,this.duration,null,this.easing);} -this.updateChildSize();this.proxy.hide();return box;},constrain:function(v,diff,m,mx){if(v-diff<m){diff=v-m;}else if(v-diff>mx){diff=mx-v;} -return diff;},onMouseMove:function(e){if(this.enabled){try{var curSize=this.curSize||this.startBox;var x=this.startBox.x,y=this.startBox.y;var ox=x,oy=y;var w=curSize.width,h=curSize.height;var ow=w,oh=h;var mw=this.minWidth,mh=this.minHeight;var mxw=this.maxWidth,mxh=this.maxHeight;var wi=this.widthIncrement;var hi=this.heightIncrement;var eventXY=e.getXY();var diffX=-(this.startPoint[0]-Math.max(this.minX,eventXY[0]));var diffY=-(this.startPoint[1]-Math.max(this.minY,eventXY[1]));var pos=this.activeHandle.position;switch(pos){case"east":w+=diffX;w=Math.min(Math.max(mw,w),mxw);break;case"south":h+=diffY;h=Math.min(Math.max(mh,h),mxh);break;case"southeast":w+=diffX;h+=diffY;w=Math.min(Math.max(mw,w),mxw);h=Math.min(Math.max(mh,h),mxh);break;case"north":diffY=this.constrain(h,diffY,mh,mxh);y+=diffY;h-=diffY;break;case"west":diffX=this.constrain(w,diffX,mw,mxw);x+=diffX;w-=diffX;break;case"northeast":w+=diffX;w=Math.min(Math.max(mw,w),mxw);diffY=this.constrain(h,diffY,mh,mxh);y+=diffY;h-=diffY;break;case"northwest":diffX=this.constrain(w,diffX,mw,mxw);diffY=this.constrain(h,diffY,mh,mxh);y+=diffY;h-=diffY;x+=diffX;w-=diffX;break;case"southwest":diffX=this.constrain(w,diffX,mw,mxw);h+=diffY;h=Math.min(Math.max(mh,h),mxh);x+=diffX;w-=diffX;break;} -var sw=this.snap(w,wi,mw);var sh=this.snap(h,hi,mh);if(sw!=w||sh!=h){switch(pos){case"northeast":y-=sh-h;break;case"north":y-=sh-h;break;case"southwest":x-=sw-w;break;case"west":x-=sw-w;break;case"northwest":x-=sw-w;y-=sh-h;break;} -w=sw;h=sh;} -if(this.preserveRatio){switch(pos){case"southeast":case"east":h=oh*(w/ow);h=Math.min(Math.max(mh,h),mxh);w=ow*(h/oh);break;case"south":w=ow*(h/oh);w=Math.min(Math.max(mw,w),mxw);h=oh*(w/ow);break;case"northeast":w=ow*(h/oh);w=Math.min(Math.max(mw,w),mxw);h=oh*(w/ow);break;case"north":var tw=w;w=ow*(h/oh);w=Math.min(Math.max(mw,w),mxw);h=oh*(w/ow);x+=(tw-w)/2;break;case"southwest":h=oh*(w/ow);h=Math.min(Math.max(mh,h),mxh);var tw=w;w=ow*(h/oh);x+=tw-w;break;case"west":var th=h;h=oh*(w/ow);h=Math.min(Math.max(mh,h),mxh);y+=(th-h)/2;var tw=w;w=ow*(h/oh);x+=tw-w;break;case"northwest":var tw=w;var th=h;h=oh*(w/ow);h=Math.min(Math.max(mh,h),mxh);w=ow*(h/oh);y+=th-h;x+=tw-w;break;}} -this.proxy.setBounds(x,y,w,h);if(this.dynamic){this.resizeElement();}}catch(e){}}},handleOver:function(){if(this.enabled){this.el.addClass("x-resizable-over");}},handleOut:function(){if(!this.resizing){this.el.removeClass("x-resizable-over");}},getEl:function(){return this.el;},getResizeChild:function(){return this.resizeChild;},destroy:function(removeEl){this.proxy.remove();this.overlay.removeAllListeners();this.overlay.remove();var ps=Ext.Resizable.positions;for(var k in ps){if(typeof ps[k]!="function"&&this[ps[k]]){var h=this[ps[k]];h.el.removeAllListeners();h.el.remove();}} -if(removeEl){this.el.update("");this.el.remove();}}});Ext.Resizable.positions={n:"north",s:"south",e:"east",w:"west",se:"southeast",sw:"southwest",nw:"northwest",ne:"northeast"};Ext.Resizable.Handle=function(rz,pos,disableTrackOver,transparent){if(!this.tpl){var tpl=Ext.DomHelper.createTemplate({tag:"div",cls:"x-resizable-handle x-resizable-handle-{0}"});tpl.compile();Ext.Resizable.Handle.prototype.tpl=tpl;} -this.position=pos;this.rz=rz;this.el=this.tpl.append(rz.el.dom,[this.position],true);this.el.unselectable();if(transparent){this.el.setOpacity(0);} -this.el.on("mousedown",this.onMouseDown,this);if(!disableTrackOver){this.el.on("mouseover",this.onMouseOver,this);this.el.on("mouseout",this.onMouseOut,this);}};Ext.Resizable.Handle.prototype={afterResize:function(rz){},onMouseDown:function(e){this.rz.onMouseDown(this,e);},onMouseOver:function(e){this.rz.handleOver(this,e);},onMouseOut:function(e){this.rz.handleOut(this,e);}}; diff --git a/lib/web/extjs/package/resizable.js b/lib/web/extjs/package/resizable.js deleted file mode 100644 index 75fd15e1e5d71d401b018d77627d6dc715825df5..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/resizable.js +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.Resizable=function(el,config){this.el=Ext.get(el);if(config&&config.wrap){config.resizeChild=this.el;this.el=this.el.wrap(typeof config.wrap=="object"?config.wrap:{cls:"xresizable-wrap"});this.el.id=this.el.dom.id=config.resizeChild.id+"-rzwrap";this.el.setStyle("overflow","hidden");this.el.setPositioning(config.resizeChild.getPositioning());config.resizeChild.clearPositioning();if(!config.width||!config.height){var csize=config.resizeChild.getSize();this.el.setSize(csize.width,csize.height);} -if(config.pinned&&!config.adjustments){config.adjustments="auto";}} -this.proxy=this.el.createProxy({tag:"div",cls:"x-resizable-proxy",id:this.el.id+"-rzproxy"});this.proxy.unselectable();this.proxy.enableDisplayMode('block');Ext.apply(this,config);if(this.pinned){this.disableTrackOver=true;this.el.addClass("x-resizable-pinned");} -var position=this.el.getStyle("position");if(position!="absolute"&&position!="fixed"){this.el.setStyle("position","relative");} -if(!this.handles){this.handles='s,e,se';if(this.multiDirectional){this.handles+=',n,w';}} -if(this.handles=="all"){this.handles="n s e w ne nw se sw";} -var hs=this.handles.split(/\s*?[,;]\s*?| /);var ps=Ext.Resizable.positions;for(var i=0,len=hs.length;i<len;i++){if(hs[i]&&ps[hs[i]]){var pos=ps[hs[i]];this[pos]=new Ext.Resizable.Handle(this,pos,this.disableTrackOver,this.transparent);}} -this.corner=this.southeast;if(this.handles.indexOf("n")!=-1||this.handles.indexOf("w")!=-1){this.updateBox=true;} -this.activeHandle=null;if(this.resizeChild){if(typeof this.resizeChild=="boolean"){this.resizeChild=Ext.get(this.el.dom.firstChild,true);}else{this.resizeChild=Ext.get(this.resizeChild,true);}} -if(this.adjustments=="auto"){var rc=this.resizeChild;var hw=this.west,he=this.east,hn=this.north,hs=this.south;if(rc&&(hw||hn)){rc.position("relative");rc.setLeft(hw?hw.el.getWidth():0);rc.setTop(hn?hn.el.getHeight():0);} -this.adjustments=[(he?-he.el.getWidth():0)+(hw?-hw.el.getWidth():0),(hn?-hn.el.getHeight():0)+(hs?-hs.el.getHeight():0)-1];} -if(this.draggable){this.dd=this.dynamic?this.el.initDD(null):this.el.initDDProxy(null,{dragElId:this.proxy.id});this.dd.setHandleElId(this.resizeChild?this.resizeChild.id:this.el.id);} -this.addEvents({"beforeresize":true,"resize":true});if(this.width!==null&&this.height!==null){this.resizeTo(this.width,this.height);}else{this.updateChildSize();} -if(Ext.isIE){this.el.dom.style.zoom=1;} -Ext.Resizable.superclass.constructor.call(this);};Ext.extend(Ext.Resizable,Ext.util.Observable,{resizeChild:false,adjustments:[0,0],minWidth:5,minHeight:5,maxWidth:10000,maxHeight:10000,enabled:true,animate:false,duration:.35,dynamic:false,handles:false,multiDirectional:false,disableTrackOver:false,easing:'easeOutStrong',widthIncrement:0,heightIncrement:0,pinned:false,width:null,height:null,preserveRatio:false,transparent:false,minX:0,minY:0,draggable:false,constrainTo:undefined,resizeRegion:undefined,resizeTo:function(width,height){this.el.setSize(width,height);this.updateChildSize();this.fireEvent("resize",this,width,height,null);},startSizing:function(e,handle){this.fireEvent("beforeresize",this,e);if(this.enabled){if(!this.overlay){this.overlay=this.el.createProxy({tag:"div",cls:"x-resizable-overlay",html:" "});this.overlay.unselectable();this.overlay.enableDisplayMode("block");this.overlay.on("mousemove",this.onMouseMove,this);this.overlay.on("mouseup",this.onMouseUp,this);} -this.overlay.setStyle("cursor",handle.el.getStyle("cursor"));this.resizing=true;this.startBox=this.el.getBox();this.startPoint=e.getXY();this.offsets=[(this.startBox.x+this.startBox.width)-this.startPoint[0],(this.startBox.y+this.startBox.height)-this.startPoint[1]];this.overlay.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true));this.overlay.show();if(this.constrainTo){var ct=Ext.get(this.constrainTo);this.resizeRegion=ct.getRegion().adjust(ct.getFrameWidth('t'),ct.getFrameWidth('l'),-ct.getFrameWidth('b'),-ct.getFrameWidth('r'));} -this.proxy.setStyle('visibility','hidden');this.proxy.show();this.proxy.setBox(this.startBox);if(!this.dynamic){this.proxy.setStyle('visibility','visible');}}},onMouseDown:function(handle,e){if(this.enabled){e.stopEvent();this.activeHandle=handle;this.startSizing(e,handle);}},onMouseUp:function(e){var size=this.resizeElement();this.resizing=false;this.handleOut();this.overlay.hide();this.proxy.hide();this.fireEvent("resize",this,size.width,size.height,e);},updateChildSize:function(){if(this.resizeChild){var el=this.el;var child=this.resizeChild;var adj=this.adjustments;if(el.dom.offsetWidth){var b=el.getSize(true);child.setSize(b.width+adj[0],b.height+adj[1]);} -if(Ext.isIE){setTimeout(function(){if(el.dom.offsetWidth){var b=el.getSize(true);child.setSize(b.width+adj[0],b.height+adj[1]);}},10);}}},snap:function(value,inc,min){if(!inc||!value)return value;var newValue=value;var m=value%inc;if(m>0){if(m>(inc/2)){newValue=value+(inc-m);}else{newValue=value-m;}} -return Math.max(min,newValue);},resizeElement:function(){var box=this.proxy.getBox();if(this.updateBox){this.el.setBox(box,false,this.animate,this.duration,null,this.easing);}else{this.el.setSize(box.width,box.height,this.animate,this.duration,null,this.easing);} -this.updateChildSize();if(!this.dynamic){this.proxy.hide();} -return box;},constrain:function(v,diff,m,mx){if(v-diff<m){diff=v-m;}else if(v-diff>mx){diff=mx-v;} -return diff;},onMouseMove:function(e){if(this.enabled){try{if(this.resizeRegion&&!this.resizeRegion.contains(e.getPoint())){return;} -var curSize=this.curSize||this.startBox;var x=this.startBox.x,y=this.startBox.y;var ox=x,oy=y;var w=curSize.width,h=curSize.height;var ow=w,oh=h;var mw=this.minWidth,mh=this.minHeight;var mxw=this.maxWidth,mxh=this.maxHeight;var wi=this.widthIncrement;var hi=this.heightIncrement;var eventXY=e.getXY();var diffX=-(this.startPoint[0]-Math.max(this.minX,eventXY[0]));var diffY=-(this.startPoint[1]-Math.max(this.minY,eventXY[1]));var pos=this.activeHandle.position;switch(pos){case"east":w+=diffX;w=Math.min(Math.max(mw,w),mxw);break;case"south":h+=diffY;h=Math.min(Math.max(mh,h),mxh);break;case"southeast":w+=diffX;h+=diffY;w=Math.min(Math.max(mw,w),mxw);h=Math.min(Math.max(mh,h),mxh);break;case"north":diffY=this.constrain(h,diffY,mh,mxh);y+=diffY;h-=diffY;break;case"west":diffX=this.constrain(w,diffX,mw,mxw);x+=diffX;w-=diffX;break;case"northeast":w+=diffX;w=Math.min(Math.max(mw,w),mxw);diffY=this.constrain(h,diffY,mh,mxh);y+=diffY;h-=diffY;break;case"northwest":diffX=this.constrain(w,diffX,mw,mxw);diffY=this.constrain(h,diffY,mh,mxh);y+=diffY;h-=diffY;x+=diffX;w-=diffX;break;case"southwest":diffX=this.constrain(w,diffX,mw,mxw);h+=diffY;h=Math.min(Math.max(mh,h),mxh);x+=diffX;w-=diffX;break;} -var sw=this.snap(w,wi,mw);var sh=this.snap(h,hi,mh);if(sw!=w||sh!=h){switch(pos){case"northeast":y-=sh-h;break;case"north":y-=sh-h;break;case"southwest":x-=sw-w;break;case"west":x-=sw-w;break;case"northwest":x-=sw-w;y-=sh-h;break;} -w=sw;h=sh;} -if(this.preserveRatio){switch(pos){case"southeast":case"east":h=oh*(w/ow);h=Math.min(Math.max(mh,h),mxh);w=ow*(h/oh);break;case"south":w=ow*(h/oh);w=Math.min(Math.max(mw,w),mxw);h=oh*(w/ow);break;case"northeast":w=ow*(h/oh);w=Math.min(Math.max(mw,w),mxw);h=oh*(w/ow);break;case"north":var tw=w;w=ow*(h/oh);w=Math.min(Math.max(mw,w),mxw);h=oh*(w/ow);x+=(tw-w)/2;break;case"southwest":h=oh*(w/ow);h=Math.min(Math.max(mh,h),mxh);var tw=w;w=ow*(h/oh);x+=tw-w;break;case"west":var th=h;h=oh*(w/ow);h=Math.min(Math.max(mh,h),mxh);y+=(th-h)/2;var tw=w;w=ow*(h/oh);x+=tw-w;break;case"northwest":var tw=w;var th=h;h=oh*(w/ow);h=Math.min(Math.max(mh,h),mxh);w=ow*(h/oh);y+=th-h;x+=tw-w;break;}} -this.proxy.setBounds(x,y,w,h);if(this.dynamic){this.resizeElement();}}catch(e){}}},handleOver:function(){if(this.enabled){this.el.addClass("x-resizable-over");}},handleOut:function(){if(!this.resizing){this.el.removeClass("x-resizable-over");}},getEl:function(){return this.el;},getResizeChild:function(){return this.resizeChild;},destroy:function(removeEl){this.proxy.remove();if(this.overlay){this.overlay.removeAllListeners();this.overlay.remove();} -var ps=Ext.Resizable.positions;for(var k in ps){if(typeof ps[k]!="function"&&this[ps[k]]){var h=this[ps[k]];h.el.removeAllListeners();h.el.remove();}} -if(removeEl){this.el.update("");this.el.remove();}}});Ext.Resizable.positions={n:"north",s:"south",e:"east",w:"west",se:"southeast",sw:"southwest",nw:"northwest",ne:"northeast"};Ext.Resizable.Handle=function(rz,pos,disableTrackOver,transparent){if(!this.tpl){var tpl=Ext.DomHelper.createTemplate({tag:"div",cls:"x-resizable-handle x-resizable-handle-{0}"});tpl.compile();Ext.Resizable.Handle.prototype.tpl=tpl;} -this.position=pos;this.rz=rz;this.el=this.tpl.append(rz.el.dom,[this.position],true);this.el.unselectable();if(transparent){this.el.setOpacity(0);} -this.el.on("mousedown",this.onMouseDown,this);if(!disableTrackOver){this.el.on("mouseover",this.onMouseOver,this);this.el.on("mouseout",this.onMouseOut,this);}};Ext.Resizable.Handle.prototype={afterResize:function(rz){},onMouseDown:function(e){this.rz.onMouseDown(this,e);},onMouseOver:function(e){this.rz.handleOver(this,e);},onMouseOut:function(e){this.rz.handleOut(this,e);}}; diff --git a/lib/web/extjs/package/splitbar.js b/lib/web/extjs/package/splitbar.js deleted file mode 100644 index c2cb495e2de5d6232e33980f82e5a6df1071813e..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/splitbar.js +++ /dev/null @@ -1,19 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.SplitBar=function(dragElement,resizingElement,orientation,placement,existingProxy){this.el=Ext.get(dragElement,true);this.el.dom.unselectable="on";this.resizingEl=Ext.get(resizingElement,true);this.orientation=orientation||Ext.SplitBar.HORIZONTAL;this.minSize=0;this.maxSize=2000;this.animate=false;this.useShim=false;this.shim=null;if(!existingProxy){this.proxy=Ext.SplitBar.createProxy(this.orientation);}else{this.proxy=Ext.get(existingProxy).dom;} -this.dd=new Ext.dd.DDProxy(this.el.dom.id,"XSplitBars",{dragElId:this.proxy.id});this.dd.b4StartDrag=this.onStartProxyDrag.createDelegate(this);this.dd.endDrag=this.onEndProxyDrag.createDelegate(this);this.dragSpecs={};this.adapter=new Ext.SplitBar.BasicLayoutAdapter();this.adapter.init(this);if(this.orientation==Ext.SplitBar.HORIZONTAL){this.placement=placement||(this.el.getX()>this.resizingEl.getX()?Ext.SplitBar.LEFT:Ext.SplitBar.RIGHT);this.el.addClass("x-splitbar-h");}else{this.placement=placement||(this.el.getY()>this.resizingEl.getY()?Ext.SplitBar.TOP:Ext.SplitBar.BOTTOM);this.el.addClass("x-splitbar-v");} -this.addEvents({"resize":true,"moved":true,"beforeresize":true,"beforeapply":true});Ext.SplitBar.superclass.constructor.call(this);};Ext.extend(Ext.SplitBar,Ext.util.Observable,{onStartProxyDrag:function(x,y){this.fireEvent("beforeresize",this);if(!this.overlay){var o=Ext.DomHelper.insertFirst(document.body,{cls:"x-drag-overlay",html:" "},true);o.unselectable();o.enableDisplayMode("block");Ext.SplitBar.prototype.overlay=o;} -this.overlay.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true));this.overlay.show();Ext.get(this.proxy).setDisplayed("block");var size=this.adapter.getElementSize(this);this.activeMinSize=this.getMinimumSize();;this.activeMaxSize=this.getMaximumSize();;var c1=size-this.activeMinSize;var c2=Math.max(this.activeMaxSize-size,0);if(this.orientation==Ext.SplitBar.HORIZONTAL){this.dd.resetConstraints();this.dd.setXConstraint(this.placement==Ext.SplitBar.LEFT?c1:c2,this.placement==Ext.SplitBar.LEFT?c2:c1);this.dd.setYConstraint(0,0);}else{this.dd.resetConstraints();this.dd.setXConstraint(0,0);this.dd.setYConstraint(this.placement==Ext.SplitBar.TOP?c1:c2,this.placement==Ext.SplitBar.TOP?c2:c1);} -this.dragSpecs.startSize=size;this.dragSpecs.startPoint=[x,y];Ext.dd.DDProxy.prototype.b4StartDrag.call(this.dd,x,y);},onEndProxyDrag:function(e){Ext.get(this.proxy).setDisplayed(false);var endPoint=Ext.lib.Event.getXY(e);if(this.overlay){this.overlay.hide();} -var newSize;if(this.orientation==Ext.SplitBar.HORIZONTAL){newSize=this.dragSpecs.startSize+ -(this.placement==Ext.SplitBar.LEFT?endPoint[0]-this.dragSpecs.startPoint[0]:this.dragSpecs.startPoint[0]-endPoint[0]);}else{newSize=this.dragSpecs.startSize+ -(this.placement==Ext.SplitBar.TOP?endPoint[1]-this.dragSpecs.startPoint[1]:this.dragSpecs.startPoint[1]-endPoint[1]);} -newSize=Math.min(Math.max(newSize,this.activeMinSize),this.activeMaxSize);if(newSize!=this.dragSpecs.startSize){if(this.fireEvent('beforeapply',this,newSize)!==false){this.adapter.setElementSize(this,newSize);this.fireEvent("moved",this,newSize);this.fireEvent("resize",this,newSize);}}},getAdapter:function(){return this.adapter;},setAdapter:function(adapter){this.adapter=adapter;this.adapter.init(this);},getMinimumSize:function(){return this.minSize;},setMinimumSize:function(minSize){this.minSize=minSize;},getMaximumSize:function(){return this.maxSize;},setMaximumSize:function(maxSize){this.maxSize=maxSize;},setCurrentSize:function(size){var oldAnimate=this.animate;this.animate=false;this.adapter.setElementSize(this,size);this.animate=oldAnimate;},destroy:function(removeEl){if(this.shim){this.shim.remove();} -this.dd.unreg();this.proxy.parentNode.removeChild(this.proxy);if(removeEl){this.el.remove();}}});Ext.SplitBar.createProxy=function(dir){var proxy=new Ext.Element(document.createElement("div"));proxy.unselectable();var cls='x-splitbar-proxy';proxy.addClass(cls+' '+(dir==Ext.SplitBar.HORIZONTAL?cls+'-h':cls+'-v'));document.body.appendChild(proxy.dom);return proxy.dom;};Ext.SplitBar.BasicLayoutAdapter=function(){};Ext.SplitBar.BasicLayoutAdapter.prototype={init:function(s){},getElementSize:function(s){if(s.orientation==Ext.SplitBar.HORIZONTAL){return s.resizingEl.getWidth();}else{return s.resizingEl.getHeight();}},setElementSize:function(s,newSize,onComplete){if(s.orientation==Ext.SplitBar.HORIZONTAL){if(!s.animate){s.resizingEl.setWidth(newSize);if(onComplete){onComplete(s,newSize);}}else{s.resizingEl.setWidth(newSize,true,.1,onComplete,'easeOut');}}else{if(!s.animate){s.resizingEl.setHeight(newSize);if(onComplete){onComplete(s,newSize);}}else{s.resizingEl.setHeight(newSize,true,.1,onComplete,'easeOut');}}}};Ext.SplitBar.AbsoluteLayoutAdapter=function(container){this.basic=new Ext.SplitBar.BasicLayoutAdapter();this.container=Ext.get(container);};Ext.SplitBar.AbsoluteLayoutAdapter.prototype={init:function(s){this.basic.init(s);},getElementSize:function(s){return this.basic.getElementSize(s);},setElementSize:function(s,newSize,onComplete){this.basic.setElementSize(s,newSize,this.moveSplitter.createDelegate(this,[s]));},moveSplitter:function(s){var yes=Ext.SplitBar;switch(s.placement){case yes.LEFT:s.el.setX(s.resizingEl.getRight());break;case yes.RIGHT:s.el.setStyle("right",(this.container.getWidth()-s.resizingEl.getLeft())+"px");break;case yes.TOP:s.el.setY(s.resizingEl.getBottom());break;case yes.BOTTOM:s.el.setY(s.resizingEl.getTop()-s.el.getHeight());break;}}};Ext.SplitBar.VERTICAL=1;Ext.SplitBar.HORIZONTAL=2;Ext.SplitBar.LEFT=1;Ext.SplitBar.RIGHT=2;Ext.SplitBar.TOP=3;Ext.SplitBar.BOTTOM=4; diff --git a/lib/web/extjs/package/tabs/tabs.js b/lib/web/extjs/package/tabs/tabs.js deleted file mode 100644 index ecae6a4ea3a2920987e14de0ec44e556e0a30c21..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/tabs/tabs.js +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.TabPanel=function(container,config){this.el=Ext.get(container,true);if(config){if(typeof config=="boolean"){this.tabPosition=config?"bottom":"top";}else{Ext.apply(this,config);}} -if(this.tabPosition=="bottom"){this.bodyEl=Ext.get(this.createBody(this.el.dom));this.el.addClass("x-tabs-bottom");} -this.stripWrap=Ext.get(this.createStrip(this.el.dom),true);this.stripEl=Ext.get(this.createStripList(this.stripWrap.dom),true);this.stripBody=Ext.get(this.stripWrap.dom.firstChild.firstChild,true);if(Ext.isIE){Ext.fly(this.stripWrap.dom.firstChild).setStyle("overflow-x","hidden");} -if(this.tabPosition!="bottom"){this.bodyEl=Ext.get(this.createBody(this.el.dom));this.el.addClass("x-tabs-top");} -this.items=[];this.bodyEl.setStyle("position","relative");this.active=null;this.activateDelegate=this.activate.createDelegate(this);this.addEvents({"tabchange":true,"beforetabchange":true});Ext.EventManager.onWindowResize(this.onResize,this);this.cpad=this.el.getPadding("lr");this.hiddenCount=0;Ext.TabPanel.superclass.constructor.call(this);};Ext.extend(Ext.TabPanel,Ext.util.Observable,{tabPosition:"top",currentTabWidth:0,minTabWidth:40,maxTabWidth:250,preferredTabWidth:175,resizeTabs:false,monitorResize:true,addTab:function(id,text,content,closable){var item=new Ext.TabPanelItem(this,id,text,closable);this.addTabItem(item);if(content){item.setContent(content);} -return item;},getTab:function(id){return this.items[id];},hideTab:function(id){var t=this.items[id];if(!t.isHidden()){t.setHidden(true);this.hiddenCount++;this.autoSizeTabs();}},unhideTab:function(id){var t=this.items[id];if(t.isHidden()){t.setHidden(false);this.hiddenCount--;this.autoSizeTabs();}},addTabItem:function(item){this.items[item.id]=item;this.items.push(item);if(this.resizeTabs){item.setWidth(this.currentTabWidth||this.preferredTabWidth);this.autoSizeTabs();}else{item.autoSize();}},removeTab:function(id){var items=this.items;var tab=items[id];if(!tab)return;var index=items.indexOf(tab);if(this.active==tab&&items.length>1){var newTab=this.getNextAvailable(index);if(newTab)newTab.activate();} -this.stripEl.dom.removeChild(tab.pnode.dom);if(tab.bodyEl.dom.parentNode==this.bodyEl.dom){this.bodyEl.dom.removeChild(tab.bodyEl.dom);} -items.splice(index,1);delete this.items[tab.id];tab.fireEvent("close",tab);tab.purgeListeners();this.autoSizeTabs();},getNextAvailable:function(start){var items=this.items;var index=start;while(index<items.length){var item=items[++index];if(item&&!item.isHidden()){return item;}} -index=start;while(index>=0){var item=items[--index];if(item&&!item.isHidden()){return item;}} -return null;},disableTab:function(id){var tab=this.items[id];if(tab&&this.active!=tab){tab.disable();}},enableTab:function(id){var tab=this.items[id];tab.enable();},activate:function(id){var tab=this.items[id];if(!tab){return null;} -if(tab==this.active){return tab;} -var e={};this.fireEvent("beforetabchange",this,e,tab);if(e.cancel!==true&&!tab.disabled){if(this.active){this.active.hide();} -this.active=this.items[id];this.active.show();this.fireEvent("tabchange",this,this.active);} -return tab;},getActiveTab:function(){return this.active;},syncHeight:function(targetHeight){var height=(targetHeight||this.el.getHeight())-this.el.getBorderWidth("tb")-this.el.getPadding("tb");var bm=this.bodyEl.getMargins();var newHeight=height-(this.stripWrap.getHeight()||0)-(bm.top+bm.bottom);this.bodyEl.setHeight(newHeight);return newHeight;},onResize:function(){if(this.monitorResize){this.autoSizeTabs();}},beginUpdate:function(){this.updating=true;},endUpdate:function(){this.updating=false;this.autoSizeTabs();},autoSizeTabs:function(){var count=this.items.length;var vcount=count-this.hiddenCount;if(!this.resizeTabs||count<1||vcount<1||this.updating)return;var w=Math.max(this.el.getWidth()-this.cpad,10);var availWidth=Math.floor(w/vcount);var b=this.stripBody;if(b.getWidth()>w){var tabs=this.items;this.setTabWidth(Math.max(availWidth,this.minTabWidth)-2);if(availWidth<this.minTabWidth){}}else{if(this.currentTabWidth<this.preferredTabWidth){this.setTabWidth(Math.min(availWidth,this.preferredTabWidth)-2);}}},getCount:function(){return this.items.length;},setTabWidth:function(width){this.currentTabWidth=width;for(var i=0,len=this.items.length;i<len;i++){if(!this.items[i].isHidden())this.items[i].setWidth(width);}},destroy:function(removeEl){Ext.EventManager.removeResizeListener(this.onResize,this);for(var i=0,len=this.items.length;i<len;i++){this.items[i].purgeListeners();} -if(removeEl===true){this.el.update("");this.el.remove();}}});Ext.TabPanelItem=function(tabPanel,id,text,closable){this.tabPanel=tabPanel;this.id=id;this.disabled=false;this.text=text;this.loaded=false;this.closable=closable;this.bodyEl=Ext.get(tabPanel.createItemBody(tabPanel.bodyEl.dom,id));this.bodyEl.setVisibilityMode(Ext.Element.VISIBILITY);this.bodyEl.setStyle("display","block");this.bodyEl.setStyle("zoom","1");this.hideAction();var els=tabPanel.createStripElements(tabPanel.stripEl.dom,text,closable);this.el=Ext.get(els.el,true);this.inner=Ext.get(els.inner,true);this.textEl=Ext.get(this.el.dom.firstChild.firstChild.firstChild,true);this.pnode=Ext.get(els.el.parentNode,true);this.el.on("mousedown",this.onTabMouseDown,this);this.el.on("click",this.onTabClick,this);if(closable){var c=Ext.get(els.close,true);c.dom.title=this.closeText;c.addClassOnOver("close-over");c.on("click",this.closeClick,this);} -this.addEvents({"activate":true,"beforeclose":true,"close":true,"deactivate":true});this.hidden=false;Ext.TabPanelItem.superclass.constructor.call(this);};Ext.extend(Ext.TabPanelItem,Ext.util.Observable,{purgeListeners:function(){Ext.util.Observable.prototype.purgeListeners.call(this);this.el.removeAllListeners();},show:function(){this.pnode.addClass("on");this.showAction();if(Ext.isOpera){this.tabPanel.stripWrap.repaint();} -this.fireEvent("activate",this.tabPanel,this);},isActive:function(){return this.tabPanel.getActiveTab()==this;},hide:function(){this.pnode.removeClass("on");this.hideAction();this.fireEvent("deactivate",this.tabPanel,this);},hideAction:function(){this.bodyEl.hide();this.bodyEl.setStyle("position","absolute");this.bodyEl.setLeft("-20000px");this.bodyEl.setTop("-20000px");},showAction:function(){this.bodyEl.setStyle("position","relative");this.bodyEl.setTop("");this.bodyEl.setLeft("");this.bodyEl.show();},setTooltip:function(text){if(Ext.QuickTips&&Ext.QuickTips.isEnabled()){this.textEl.dom.qtip=text;this.textEl.dom.removeAttribute('title');}else{this.textEl.dom.title=text;}},onTabClick:function(e){e.preventDefault();this.tabPanel.activate(this.id);},onTabMouseDown:function(e){e.preventDefault();this.tabPanel.activate(this.id);},getWidth:function(){return this.inner.getWidth();},setWidth:function(width){var iwidth=width-this.pnode.getPadding("lr");this.inner.setWidth(iwidth);this.textEl.setWidth(iwidth-this.inner.getPadding("lr"));this.pnode.setWidth(width);},setHidden:function(hidden){this.hidden=hidden;this.pnode.setStyle("display",hidden?"none":"");},isHidden:function(){return this.hidden;},getText:function(){return this.text;},autoSize:function(){this.textEl.setWidth(1);this.setWidth(this.textEl.dom.scrollWidth+this.pnode.getPadding("lr")+this.inner.getPadding("lr"));},setText:function(text){this.text=text;this.textEl.update(text);this.setTooltip(text);if(!this.tabPanel.resizeTabs){this.autoSize();}},activate:function(){this.tabPanel.activate(this.id);},disable:function(){if(this.tabPanel.active!=this){this.disabled=true;this.pnode.addClass("disabled");}},enable:function(){this.disabled=false;this.pnode.removeClass("disabled");},setContent:function(content,loadScripts){this.bodyEl.update(content,loadScripts);},getUpdateManager:function(){return this.bodyEl.getUpdateManager();},setUrl:function(url,params,loadOnce){if(this.refreshDelegate){this.un('activate',this.refreshDelegate);} -this.refreshDelegate=this._handleRefresh.createDelegate(this,[url,params,loadOnce]);this.on("activate",this.refreshDelegate);return this.bodyEl.getUpdateManager();},_handleRefresh:function(url,params,loadOnce){if(!loadOnce||!this.loaded){var updater=this.bodyEl.getUpdateManager();updater.update(url,params,this._setLoaded.createDelegate(this));}},refresh:function(){if(this.refreshDelegate){this.loaded=false;this.refreshDelegate();}},_setLoaded:function(){this.loaded=true;},closeClick:function(e){var o={};e.stopEvent();this.fireEvent("beforeclose",this,o);if(o.cancel!==true){this.tabPanel.removeTab(this.id);}},closeText:"Close this tab"});Ext.TabPanel.prototype.createStrip=function(container){var strip=document.createElement("div");strip.className="x-tabs-wrap";container.appendChild(strip);return strip;};Ext.TabPanel.prototype.createStripList=function(strip){strip.innerHTML='<div class="x-tabs-strip-wrap"><table class="x-tabs-strip" cellspacing="0" cellpadding="0" border="0"><tbody><tr></tr></tbody></table></div>';return strip.firstChild.firstChild.firstChild.firstChild;};Ext.TabPanel.prototype.createBody=function(container){var body=document.createElement("div");Ext.id(body,"tab-body");Ext.fly(body).addClass("x-tabs-body");container.appendChild(body);return body;};Ext.TabPanel.prototype.createItemBody=function(bodyEl,id){var body=Ext.getDom(id);if(!body){body=document.createElement("div");body.id=id;} -Ext.fly(body).addClass("x-tabs-item-body");bodyEl.insertBefore(body,bodyEl.firstChild);return body;};Ext.TabPanel.prototype.createStripElements=function(stripEl,text,closable){var td=document.createElement("td");stripEl.appendChild(td);if(closable){td.className="x-tabs-closable";if(!this.closeTpl){this.closeTpl=new Ext.Template('<a href="#" class="x-tabs-right"><span class="x-tabs-left"><em class="x-tabs-inner">'+'<span unselectable="on"'+(this.disableTooltips?'':' title="{text}"')+' class="x-tabs-text">{text}</span>'+'<div unselectable="on" class="close-icon"> </div></em></span></a>');} -var el=this.closeTpl.overwrite(td,{"text":text});var close=el.getElementsByTagName("div")[0];var inner=el.getElementsByTagName("em")[0];return{"el":el,"close":close,"inner":inner};}else{if(!this.tabTpl){this.tabTpl=new Ext.Template('<a href="#" class="x-tabs-right"><span class="x-tabs-left"><em class="x-tabs-inner">'+'<span unselectable="on"'+(this.disableTooltips?'':' title="{text}"')+' class="x-tabs-text">{text}</span></em></span></a>');} -var el=this.tabTpl.overwrite(td,{"text":text});var inner=el.getElementsByTagName("em")[0];return{"el":el,"inner":inner};}}; diff --git a/lib/web/extjs/package/toolbar/toolbar.js b/lib/web/extjs/package/toolbar/toolbar.js deleted file mode 100644 index 4bec4eb28dfcfd116472d002475c4fdfa29b5e01..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/toolbar/toolbar.js +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.Toolbar=function(container,buttons,config){if(container instanceof Array){buttons=container;config=buttons;container=null;} -Ext.apply(this,config);this.buttons=buttons;if(container){this.render(container);}};Ext.Toolbar.prototype={render:function(ct){this.el=Ext.get(ct);if(this.cls){this.el.addClass(this.cls);} -this.el.update('<div class="x-toolbar x-small-editor"><table cellspacing="0"><tr></tr></table></div>');this.tr=this.el.child("tr",true);var autoId=0;this.items=new Ext.util.MixedCollection(false,function(o){return o.id||("item"+(++autoId));});if(this.buttons){this.add.apply(this,this.buttons);delete this.buttons;}},add:function(){var a=arguments,l=a.length;for(var i=0;i<l;i++){var el=a[i];if(el.applyTo){this.addField(el);}else if(el.render){this.addItem(el);}else if(typeof el=="string"){if(el=="separator"||el=="-"){this.addSeparator();}else if(el==" "){this.addSpacer();}else if(el=="->"){this.addFill();}else{this.addText(el);}}else if(el.tagName){this.addElement(el);}else if(typeof el=="object"){this.addButton(el);}}},getEl:function(){return this.el;},addSeparator:function(){return this.addItem(new Ext.Toolbar.Separator());},addSpacer:function(){return this.addItem(new Ext.Toolbar.Spacer());},addFill:function(){return this.addItem(new Ext.Toolbar.Fill());},addElement:function(el){return this.addItem(new Ext.Toolbar.Item(el));},addItem:function(item){var td=this.nextBlock();item.render(td);this.items.add(item);return item;},addButton:function(config){if(config instanceof Array){var buttons=[];for(var i=0,len=config.length;i<len;i++){buttons.push(this.addButton(config[i]));} -return buttons;} -var b=config;if(!(config instanceof Ext.Toolbar.Button)){b=new Ext.Toolbar.Button(config);} -var td=this.nextBlock();b.render(td);this.items.add(b);return b;},addText:function(text){return this.addItem(new Ext.Toolbar.TextItem(text));},insertButton:function(index,item){if(item instanceof Array){var buttons=[];for(var i=0,len=item.length;i<len;i++){buttons.push(this.insertButton(index+i,item[i]));} -return buttons;} -if(!(item instanceof Ext.Toolbar.Button)){item=new Ext.Toolbar.Button(item);} -var td=document.createElement("td");this.tr.insertBefore(td,this.tr.childNodes[index]);item.render(td);this.items.insert(index,item);return item;},addDom:function(config,returnEl){var td=this.nextBlock();Ext.DomHelper.overwrite(td,config);var ti=new Ext.Toolbar.Item(td.firstChild);ti.render(td);this.items.add(ti);return ti;},addField:function(field){var td=this.nextBlock();field.render(td);var ti=new Ext.Toolbar.Item(td.firstChild);ti.render(td);this.items.add(ti);return ti;},nextBlock:function(){var td=document.createElement("td");this.tr.appendChild(td);return td;},destroy:function(){if(this.items){Ext.destroy.apply(Ext,this.items.items);} -Ext.Element.uncache(this.el,this.tr);}};Ext.Toolbar.Item=function(el){this.el=Ext.getDom(el);this.id=Ext.id(this.el);this.hidden=false;};Ext.Toolbar.Item.prototype={getEl:function(){return this.el;},render:function(td){this.td=td;td.appendChild(this.el);},destroy:function(){this.td.parentNode.removeChild(this.td);},show:function(){this.hidden=false;this.td.style.display="";},hide:function(){this.hidden=true;this.td.style.display="none";},setVisible:function(visible){if(visible){this.show();}else{this.hide();}},focus:function(){Ext.fly(this.el).focus();},disable:function(){Ext.fly(this.td).addClass("x-item-disabled");this.disabled=true;this.el.disabled=true;},enable:function(){Ext.fly(this.td).removeClass("x-item-disabled");this.disabled=false;this.el.disabled=false;}};Ext.Toolbar.Separator=function(){var s=document.createElement("span");s.className="ytb-sep";Ext.Toolbar.Separator.superclass.constructor.call(this,s);};Ext.extend(Ext.Toolbar.Separator,Ext.Toolbar.Item,{enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});Ext.Toolbar.Spacer=function(){var s=document.createElement("div");s.className="ytb-spacer";Ext.Toolbar.Spacer.superclass.constructor.call(this,s);};Ext.extend(Ext.Toolbar.Spacer,Ext.Toolbar.Item,{enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});Ext.Toolbar.Fill=Ext.extend(Ext.Toolbar.Spacer,{render:function(td){td.style.width='100%';Ext.Toolbar.Fill.superclass.render.call(this,td);}});Ext.Toolbar.TextItem=function(text){var s=document.createElement("span");s.className="ytb-text";s.innerHTML=text;Ext.Toolbar.TextItem.superclass.constructor.call(this,s);};Ext.extend(Ext.Toolbar.TextItem,Ext.Toolbar.Item,{enable:Ext.emptyFn,disable:Ext.emptyFn,focus:Ext.emptyFn});Ext.Toolbar.Button=function(config){Ext.Toolbar.Button.superclass.constructor.call(this,null,config);};Ext.extend(Ext.Toolbar.Button,Ext.Button,{render:function(td){this.td=td;Ext.Toolbar.Button.superclass.render.call(this,td);},destroy:function(){Ext.Toolbar.Button.superclass.destroy.call(this);this.td.parentNode.removeChild(this.td);},show:function(){this.hidden=false;this.td.style.display="";},hide:function(){this.hidden=true;this.td.style.display="none";},disable:function(){Ext.fly(this.td).addClass("x-item-disabled");this.disabled=true;},enable:function(){Ext.fly(this.td).removeClass("x-item-disabled");this.disabled=false;}});Ext.ToolbarButton=Ext.Toolbar.Button;Ext.Toolbar.MenuButton=function(config){Ext.Toolbar.MenuButton.superclass.constructor.call(this,null,config);};Ext.extend(Ext.Toolbar.MenuButton,Ext.MenuButton,{render:function(td){this.td=td;Ext.Toolbar.MenuButton.superclass.render.call(this,td);},destroy:function(){Ext.Toolbar.MenuButton.superclass.destroy.call(this);this.td.parentNode.removeChild(this.td);},show:function(){this.hidden=false;this.td.style.display="";},hide:function(){this.hidden=true;this.td.style.display="none";}}); - -Ext.PagingToolbar=function(el,ds,config){Ext.PagingToolbar.superclass.constructor.call(this,el,null,config);this.ds=ds;this.cursor=0;this.renderButtons(this.el);this.bind(ds);};Ext.extend(Ext.PagingToolbar,Ext.Toolbar,{pageSize:20,displayMsg:'Displaying {0} - {1} of {2}',emptyMsg:'No data to display',beforePageText:"Page",afterPageText:"of {0}",firstText:"First Page",prevText:"Previous Page",nextText:"Next Page",lastText:"Last Page",refreshText:"Refresh",renderButtons:function(el){Ext.PagingToolbar.superclass.render.call(this,el);this.first=this.addButton({tooltip:this.firstText,cls:"x-btn-icon x-grid-page-first",disabled:true,handler:this.onClick.createDelegate(this,["first"])});this.prev=this.addButton({tooltip:this.prevText,cls:"x-btn-icon x-grid-page-prev",disabled:true,handler:this.onClick.createDelegate(this,["prev"])});this.addSeparator();this.add(this.beforePageText);this.field=Ext.get(this.addDom({tag:"input",type:"text",size:"3",value:"1",cls:"x-grid-page-number"}).el);this.field.on("keydown",this.onPagingKeydown,this);this.field.on("focus",function(){this.dom.select();});this.afterTextEl=this.addText(String.format(this.afterPageText,1));this.field.setHeight(18);this.addSeparator();this.next=this.addButton({tooltip:this.nextText,cls:"x-btn-icon x-grid-page-next",disabled:true,handler:this.onClick.createDelegate(this,["next"])});this.last=this.addButton({tooltip:this.lastText,cls:"x-btn-icon x-grid-page-last",disabled:true,handler:this.onClick.createDelegate(this,["last"])});this.addSeparator();this.loading=this.addButton({tooltip:this.refreshText,cls:"x-btn-icon x-grid-loading",disabled:true,handler:this.onClick.createDelegate(this,["refresh"])});if(this.displayInfo){this.displayEl=Ext.fly(this.el.dom.firstChild).createChild({cls:'x-paging-info'});}},updateInfo:function(){if(this.displayEl){var count=this.ds.getCount();var msg=count==0?this.emptyMsg:String.format(this.displayMsg,this.cursor+1,this.cursor+count,this.ds.getTotalCount());this.displayEl.update(msg);}},onLoad:function(ds,r,o){this.cursor=o.params?o.params.start:0;var d=this.getPageData(),ap=d.activePage,ps=d.pages;this.afterTextEl.el.innerHTML=String.format(this.afterPageText,d.pages);this.field.dom.value=ap;this.first.setDisabled(ap==1);this.prev.setDisabled(ap==1);this.next.setDisabled(ap==ps);this.last.setDisabled(ap==ps);this.loading.enable();this.updateInfo();},getPageData:function(){var total=this.ds.getTotalCount();return{total:total,activePage:Math.ceil((this.cursor+this.pageSize)/this.pageSize),pages:total<this.pageSize?1:Math.ceil(total/this.pageSize)};},onLoadError:function(){this.loading.enable();},onPagingKeydown:function(e){var k=e.getKey();var d=this.getPageData();if(k==e.RETURN){var v=this.field.dom.value,pageNum;if(!v||isNaN(pageNum=parseInt(v,10))){this.field.dom.value=d.activePage;return;} -pageNum=Math.min(Math.max(1,pageNum),d.pages)-1;this.ds.load({params:{start:pageNum*this.pageSize,limit:this.pageSize}});e.stopEvent();} -else if(k==e.HOME||(k==e.UP&&e.ctrlKey)||(k==e.PAGEUP&&e.ctrlKey)||(k==e.RIGHT&&e.ctrlKey)||k==e.END||(k==e.DOWN&&e.ctrlKey)||(k==e.LEFT&&e.ctrlKey)||(k==e.PAGEDOWN&&e.ctrlKey)) -{var pageNum=(k==e.HOME||(k==e.DOWN&&e.ctrlKey)||(k==e.LEFT&&e.ctrlKey)||(k==e.PAGEDOWN&&e.ctrlKey))?1:d.pages;this.field.dom.value=pageNum;this.ds.load({params:{start:(pageNum-1)*this.pageSize,limit:this.pageSize}});e.stopEvent();} -else if(k==e.UP||k==e.RIGHT||k==e.PAGEUP||k==e.DOWN||k==e.LEFT||k==e.PAGEDOWN) -{var v=this.field.dom.value,pageNum;var increment=(e.shiftKey)?10:1;if(k==e.DOWN||k==e.LEFT||k==e.PAGEDOWN) -increment*=-1;if(!v||isNaN(pageNum=parseInt(v,10))){this.field.dom.value=d.activePage;return;} -else if(parseInt(v,10)+increment>=1&parseInt(v,10)+increment<=d.pages) -{this.field.dom.value=parseInt(v,10)+increment;pageNum=Math.min(Math.max(1,pageNum+increment),d.pages)-1;this.ds.load({params:{start:pageNum*this.pageSize,limit:this.pageSize}});} -e.stopEvent();}},beforeLoad:function(){if(this.loading){this.loading.disable();}},onClick:function(which){var ds=this.ds;switch(which){case"first":ds.load({params:{start:0,limit:this.pageSize}});break;case"prev":ds.load({params:{start:Math.max(0,this.cursor-this.pageSize),limit:this.pageSize}});break;case"next":ds.load({params:{start:this.cursor+this.pageSize,limit:this.pageSize}});break;case"last":var total=ds.getTotalCount();var extra=total%this.pageSize;var lastStart=extra?(total-extra):total-this.pageSize;ds.load({params:{start:lastStart,limit:this.pageSize}});break;case"refresh":ds.load({params:{start:this.cursor,limit:this.pageSize}});break;}},unbind:function(ds){ds.un("beforeload",this.beforeLoad,this);ds.un("load",this.onLoad,this);ds.un("loadexception",this.onLoadError,this);this.ds=undefined;},bind:function(ds){ds.on("beforeload",this.beforeLoad,this);ds.on("load",this.onLoad,this);ds.on("loadexception",this.onLoadError,this);this.ds=ds;}}); diff --git a/lib/web/extjs/package/tree/tree.js b/lib/web/extjs/package/tree/tree.js deleted file mode 100644 index 2c2a470b72cebccb2008ab325a5d914ff99f852f..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/tree/tree.js +++ /dev/null @@ -1,184 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.data.Tree=function(root){this.nodeHash={};this.root=null;if(root){this.setRootNode(root);} -this.addEvents({"append":true,"remove":true,"move":true,"insert":true,"beforeappend":true,"beforeremove":true,"beforemove":true,"beforeinsert":true});Ext.data.Tree.superclass.constructor.call(this);};Ext.extend(Ext.data.Tree,Ext.util.Observable,{pathSeparator:"/",getRootNode:function(){return this.root;},setRootNode:function(node){this.root=node;node.ownerTree=this;node.isRoot=true;this.registerNode(node);return node;},getNodeById:function(id){return this.nodeHash[id];},registerNode:function(node){this.nodeHash[node.id]=node;},unregisterNode:function(node){delete this.nodeHash[node.id];},toString:function(){return"[Tree"+(this.id?" "+this.id:"")+"]";}});Ext.data.Node=function(attributes){this.attributes=attributes||{};this.leaf=this.attributes.leaf;this.id=this.attributes.id;if(!this.id){this.id=Ext.id(null,"ynode-");this.attributes.id=this.id;} -this.childNodes=[];if(!this.childNodes.indexOf){this.childNodes.indexOf=function(o){for(var i=0,len=this.length;i<len;i++){if(this[i]==o)return i;} -return-1;};} -this.parentNode=null;this.firstChild=null;this.lastChild=null;this.previousSibling=null;this.nextSibling=null;this.addEvents({"append":true,"remove":true,"move":true,"insert":true,"beforeappend":true,"beforeremove":true,"beforemove":true,"beforeinsert":true});this.listeners=this.attributes.listeners;Ext.data.Node.superclass.constructor.call(this);};Ext.extend(Ext.data.Node,Ext.util.Observable,{fireEvent:function(evtName){if(Ext.data.Node.superclass.fireEvent.apply(this,arguments)===false){return false;} -var ot=this.getOwnerTree();if(ot){if(ot.proxyNodeEvent.apply(ot,arguments)===false){return false;}} -return true;},isLeaf:function(){return this.leaf===true;},setFirstChild:function(node){this.firstChild=node;},setLastChild:function(node){this.lastChild=node;},isLast:function(){return(!this.parentNode?true:this.parentNode.lastChild==this);},isFirst:function(){return(!this.parentNode?true:this.parentNode.firstChild==this);},hasChildNodes:function(){return!this.isLeaf()&&this.childNodes.length>0;},appendChild:function(node){var multi=false;if(node instanceof Array){multi=node;}else if(arguments.length>1){multi=arguments;} -if(multi){for(var i=0,len=multi.length;i<len;i++){this.appendChild(multi[i]);}}else{if(this.fireEvent("beforeappend",this.ownerTree,this,node)===false){return false;} -var index=this.childNodes.length;var oldParent=node.parentNode;if(oldParent){if(node.fireEvent("beforemove",node.getOwnerTree(),node,oldParent,this,index)===false){return false;} -oldParent.removeChild(node);} -index=this.childNodes.length;if(index==0){this.setFirstChild(node);} -this.childNodes.push(node);node.parentNode=this;var ps=this.childNodes[index-1];if(ps){node.previousSibling=ps;ps.nextSibling=node;}else{node.previousSibling=null;} -node.nextSibling=null;this.setLastChild(node);node.setOwnerTree(this.getOwnerTree());this.fireEvent("append",this.ownerTree,this,node,index);if(oldParent){node.fireEvent("move",this.ownerTree,node,oldParent,this,index);} -return node;}},removeChild:function(node){var index=this.childNodes.indexOf(node);if(index==-1){return false;} -if(this.fireEvent("beforeremove",this.ownerTree,this,node)===false){return false;} -this.childNodes.splice(index,1);if(node.previousSibling){node.previousSibling.nextSibling=node.nextSibling;} -if(node.nextSibling){node.nextSibling.previousSibling=node.previousSibling;} -if(this.firstChild==node){this.setFirstChild(node.nextSibling);} -if(this.lastChild==node){this.setLastChild(node.previousSibling);} -node.setOwnerTree(null);node.parentNode=null;node.previousSibling=null;node.nextSibling=null;this.fireEvent("remove",this.ownerTree,this,node);return node;},insertBefore:function(node,refNode){if(!refNode){return this.appendChild(node);} -if(node==refNode){return false;} -if(this.fireEvent("beforeinsert",this.ownerTree,this,node,refNode)===false){return false;} -var index=this.childNodes.indexOf(refNode);var oldParent=node.parentNode;var refIndex=index;if(oldParent==this&&this.childNodes.indexOf(node)<index){refIndex--;} -if(oldParent){if(node.fireEvent("beforemove",node.getOwnerTree(),node,oldParent,this,index,refNode)===false){return false;} -oldParent.removeChild(node);} -if(refIndex==0){this.setFirstChild(node);} -this.childNodes.splice(refIndex,0,node);node.parentNode=this;var ps=this.childNodes[refIndex-1];if(ps){node.previousSibling=ps;ps.nextSibling=node;}else{node.previousSibling=null;} -node.nextSibling=refNode;refNode.previousSibling=node;node.setOwnerTree(this.getOwnerTree());this.fireEvent("insert",this.ownerTree,this,node,refNode);if(oldParent){node.fireEvent("move",this.ownerTree,node,oldParent,this,refIndex,refNode);} -return node;},item:function(index){return this.childNodes[index];},replaceChild:function(newChild,oldChild){this.insertBefore(newChild,oldChild);this.removeChild(oldChild);return oldChild;},indexOf:function(child){return this.childNodes.indexOf(child);},getOwnerTree:function(){if(!this.ownerTree){var p=this;while(p){if(p.ownerTree){this.ownerTree=p.ownerTree;break;} -p=p.parentNode;}} -return this.ownerTree;},getDepth:function(){var depth=0;var p=this;while(p.parentNode){++depth;p=p.parentNode;} -return depth;},setOwnerTree:function(tree){if(tree!=this.ownerTree){if(this.ownerTree){this.ownerTree.unregisterNode(this);} -this.ownerTree=tree;var cs=this.childNodes;for(var i=0,len=cs.length;i<len;i++){cs[i].setOwnerTree(tree);} -if(tree){tree.registerNode(this);}}},getPath:function(attr){attr=attr||"id";var p=this.parentNode;var b=[this.attributes[attr]];while(p){b.unshift(p.attributes[attr]);p=p.parentNode;} -var sep=this.getOwnerTree().pathSeparator;return sep+b.join(sep);},bubble:function(fn,scope,args){var p=this;while(p){if(fn.call(scope||p,args||p)===false){break;} -p=p.parentNode;}},cascade:function(fn,scope,args){if(fn.call(scope||this,args||this)!==false){var cs=this.childNodes;for(var i=0,len=cs.length;i<len;i++){cs[i].cascade(fn,scope,args);}}},eachChild:function(fn,scope,args){var cs=this.childNodes;for(var i=0,len=cs.length;i<len;i++){if(fn.call(scope||this,args||cs[i])===false){break;}}},findChild:function(attribute,value){var cs=this.childNodes;for(var i=0,len=cs.length;i<len;i++){if(cs[i].attributes[attribute]==value){return cs[i];}} -return null;},findChildBy:function(fn,scope){var cs=this.childNodes;for(var i=0,len=cs.length;i<len;i++){if(fn.call(scope||cs[i],cs[i])===true){return cs[i];}} -return null;},sort:function(fn,scope){var cs=this.childNodes;var len=cs.length;if(len>0){var sortFn=scope?function(){fn.apply(scope,arguments);}:fn;cs.sort(sortFn);for(var i=0;i<len;i++){var n=cs[i];n.previousSibling=cs[i-1];n.nextSibling=cs[i+1];if(i==0){this.setFirstChild(n);} -if(i==len-1){this.setLastChild(n);}}}},contains:function(node){return node.isAncestor(this);},isAncestor:function(node){var p=this.parentNode;while(p){if(p==node){return true;} -p=p.parentNode;} -return false;},toString:function(){return"[Node"+(this.id?" "+this.id:"")+"]";}}); - -Ext.tree.TreePanel=function(el,config){Ext.apply(this,config);Ext.tree.TreePanel.superclass.constructor.call(this);this.el=Ext.get(el);this.el.addClass('x-tree');this.id=this.el.id;this.addEvents({"beforeload":true,"load":true,"textchange":true,"beforeexpand":true,"beforecollapse":true,"expand":true,"disabledchange":true,"collapse":true,"beforeclick":true,"click":true,"dblclick":true,"contextmenu":true,"beforechildrenrendered":true,"startdrag":true,"enddrag":true,"dragdrop":true,"beforenodedrop":true,"nodedrop":true,"nodedragover":true});if(this.singleExpand){this.on("beforeexpand",this.restrictExpand,this);}};Ext.extend(Ext.tree.TreePanel,Ext.data.Tree,{rootVisible:true,animate:Ext.enableFx,lines:true,enableDD:false,hlDrop:Ext.enableFx,proxyNodeEvent:function(){this.fireEvent.apply(this,arguments);},restrictExpand:function(node){var p=node.parentNode;if(p){if(p.expandedChild&&p.expandedChild.parentNode==p){p.expandedChild.collapse();} -p.expandedChild=node;}},setRootNode:function(node){Ext.tree.TreePanel.superclass.setRootNode.call(this,node);if(!this.rootVisible){node.ui=new Ext.tree.RootTreeNodeUI(node);} -return node;},getEl:function(){return this.el;},getLoader:function(){return this.loader;},expandAll:function(){this.root.expand(true);},collapseAll:function(){this.root.collapse(true);},getSelectionModel:function(){if(!this.selModel){this.selModel=new Ext.tree.DefaultSelectionModel();} -return this.selModel;},expandPath:function(path,attr,callback){attr=attr||"id";var keys=path.split(this.pathSeparator);var curNode=this.root;if(curNode.attributes[attr]!=keys[1]){if(callback){callback(false,null);} -return;} -var index=1;var f=function(){if(++index==keys.length){if(callback){callback(true,curNode);} -return;} -var c=curNode.findChild(attr,keys[index]);if(!c){if(callback){callback(false,curNode);} -return;} -curNode=c;c.expand(false,false,f);};curNode.expand(false,false,f);},selectPath:function(path,attr,callback){attr=attr||"id";var keys=path.split(this.pathSeparator);var v=keys.pop();if(keys.length>0){var f=function(success,node){if(success&&node){var n=node.findChild(attr,v);if(n){n.select();if(callback){callback(true,n);}}}else{if(callback){callback(false,n);}}};this.expandPath(keys.join(this.pathSeparator),attr,f);}else{this.root.select();if(callback){callback(true,this.root);}}},getTreeEl:function(){return this.el;},render:function(){this.innerCt=this.el.createChild({tag:"ul",cls:"x-tree-root-ct "+ -(this.lines?"x-tree-lines":"x-tree-no-lines")});if(this.containerScroll){Ext.dd.ScrollManager.register(this.el);} -if((this.enableDD||this.enableDrop)&&!this.dropZone){this.dropZone=new Ext.tree.TreeDropZone(this,this.dropConfig||{ddGroup:this.ddGroup||"TreeDD",appendOnly:this.ddAppendOnly===true});} -if((this.enableDD||this.enableDrag)&&!this.dragZone){this.dragZone=new Ext.tree.TreeDragZone(this,this.dragConfig||{ddGroup:this.ddGroup||"TreeDD",scroll:this.ddScroll});} -this.getSelectionModel().init(this);this.root.render();if(!this.rootVisible){this.root.renderChildren();} -return this;}}); - -Ext.tree.DefaultSelectionModel=function(){this.selNode=null;this.addEvents({"selectionchange":true,"beforeselect":true});};Ext.extend(Ext.tree.DefaultSelectionModel,Ext.util.Observable,{init:function(tree){this.tree=tree;tree.getTreeEl().on("keydown",this.onKeyDown,this);tree.on("click",this.onNodeClick,this);},onNodeClick:function(node,e){this.select(node);},select:function(node){var last=this.selNode;if(last!=node&&this.fireEvent('beforeselect',this,node,last)!==false){if(last){last.ui.onSelectedChange(false);} -this.selNode=node;node.ui.onSelectedChange(true);this.fireEvent("selectionchange",this,node,last);} -return node;},unselect:function(node){if(this.selNode==node){this.clearSelections();}},clearSelections:function(){var n=this.selNode;if(n){n.ui.onSelectedChange(false);this.selNode=null;this.fireEvent("selectionchange",this,null);} -return n;},getSelectedNode:function(){return this.selNode;},isSelected:function(node){return this.selNode==node;},selectPrevious:function(){var s=this.selNode||this.lastSelNode;if(!s){return null;} -var ps=s.previousSibling;if(ps){if(!ps.isExpanded()||ps.childNodes.length<1){return this.select(ps);}else{var lc=ps.lastChild;while(lc&&lc.isExpanded()&&lc.childNodes.length>0){lc=lc.lastChild;} -return this.select(lc);}}else if(s.parentNode&&(this.tree.rootVisible||!s.parentNode.isRoot)){return this.select(s.parentNode);} -return null;},selectNext:function(){var s=this.selNode||this.lastSelNode;if(!s){return null;} -if(s.firstChild&&s.isExpanded()){return this.select(s.firstChild);}else if(s.nextSibling){return this.select(s.nextSibling);}else if(s.parentNode){var newS=null;s.parentNode.bubble(function(){if(this.nextSibling){newS=this.getOwnerTree().selModel.select(this.nextSibling);return false;}});return newS;} -return null;},onKeyDown:function(e){var s=this.selNode||this.lastSelNode;var sm=this;if(!s){return;} -var k=e.getKey();switch(k){case e.DOWN:e.stopEvent();this.selectNext();break;case e.UP:e.stopEvent();this.selectPrevious();break;case e.RIGHT:e.preventDefault();if(s.hasChildNodes()){if(!s.isExpanded()){s.expand();}else if(s.firstChild){this.select(s.firstChild,e);}} -break;case e.LEFT:e.preventDefault();if(s.hasChildNodes()&&s.isExpanded()){s.collapse();}else if(s.parentNode&&(this.tree.rootVisible||s.parentNode!=this.tree.getRootNode())){this.select(s.parentNode,e);} -break;};}});Ext.tree.MultiSelectionModel=function(){this.selNodes=[];this.selMap={};this.addEvents({"selectionchange":true});};Ext.extend(Ext.tree.MultiSelectionModel,Ext.util.Observable,{init:function(tree){this.tree=tree;tree.getTreeEl().on("keydown",this.onKeyDown,this);tree.on("click",this.onNodeClick,this);},onNodeClick:function(node,e){this.select(node,e,e.ctrlKey);},select:function(node,e,keepExisting){if(keepExisting!==true){this.clearSelections(true);} -if(this.isSelected(node)){this.lastSelNode=node;return node;} -this.selNodes.push(node);this.selMap[node.id]=node;this.lastSelNode=node;node.ui.onSelectedChange(true);this.fireEvent("selectionchange",this,this.selNodes);return node;},unselect:function(node){if(this.selMap[node.id]){node.ui.onSelectedChange(false);var sn=this.selNodes;var index=-1;if(sn.indexOf){index=sn.indexOf(node);}else{for(var i=0,len=sn.length;i<len;i++){if(sn[i]==node){index=i;break;}}} -if(index!=-1){this.selNodes.splice(index,1);} -delete this.selMap[node.id];this.fireEvent("selectionchange",this,this.selNodes);}},clearSelections:function(suppressEvent){var sn=this.selNodes;if(sn.length>0){for(var i=0,len=sn.length;i<len;i++){sn[i].ui.onSelectedChange(false);} -this.selNodes=[];this.selMap={};if(suppressEvent!==true){this.fireEvent("selectionchange",this,this.selNodes);}}},isSelected:function(node){return this.selMap[node.id]?true:false;},getSelectedNodes:function(){return this.selNodes;},onKeyDown:Ext.tree.DefaultSelectionModel.prototype.onKeyDown,selectNext:Ext.tree.DefaultSelectionModel.prototype.selectNext,selectPrevious:Ext.tree.DefaultSelectionModel.prototype.selectPrevious}); - -Ext.tree.TreeNode=function(attributes){attributes=attributes||{};if(typeof attributes=="string"){attributes={text:attributes};} -this.childrenRendered=false;this.rendered=false;Ext.tree.TreeNode.superclass.constructor.call(this,attributes);this.expanded=attributes.expanded===true;this.isTarget=attributes.isTarget!==false;this.draggable=attributes.draggable!==false&&attributes.allowDrag!==false;this.allowChildren=attributes.allowChildren!==false&&attributes.allowDrop!==false;this.text=attributes.text;this.disabled=attributes.disabled===true;this.addEvents({"textchange":true,"beforeexpand":true,"beforecollapse":true,"expand":true,"disabledchange":true,"collapse":true,"beforeclick":true,"click":true,"dblclick":true,"contextmenu":true,"beforechildrenrendered":true});var uiClass=this.attributes.uiProvider||Ext.tree.TreeNodeUI;this.ui=new uiClass(this);};Ext.extend(Ext.tree.TreeNode,Ext.data.Node,{preventHScroll:true,isExpanded:function(){return this.expanded;},getUI:function(){return this.ui;},setFirstChild:function(node){var of=this.firstChild;Ext.tree.TreeNode.superclass.setFirstChild.call(this,node);if(this.childrenRendered&&of&&node!=of){of.renderIndent(true,true);} -if(this.rendered){this.renderIndent(true,true);}},setLastChild:function(node){var ol=this.lastChild;Ext.tree.TreeNode.superclass.setLastChild.call(this,node);if(this.childrenRendered&&ol&&node!=ol){ol.renderIndent(true,true);} -if(this.rendered){this.renderIndent(true,true);}},appendChild:function(){var node=Ext.tree.TreeNode.superclass.appendChild.apply(this,arguments);if(node&&this.childrenRendered){node.render();} -this.ui.updateExpandIcon();return node;},removeChild:function(node){this.ownerTree.getSelectionModel().unselect(node);Ext.tree.TreeNode.superclass.removeChild.apply(this,arguments);if(this.childrenRendered){node.ui.remove();} -if(this.childNodes.length<1){this.collapse(false,false);}else{this.ui.updateExpandIcon();} -return node;},insertBefore:function(node,refNode){var newNode=Ext.tree.TreeNode.superclass.insertBefore.apply(this,arguments);if(newNode&&refNode&&this.childrenRendered){node.render();} -this.ui.updateExpandIcon();return newNode;},setText:function(text){var oldText=this.text;this.text=text;this.attributes.text=text;if(this.rendered){this.ui.onTextChange(this,text,oldText);} -this.fireEvent("textchange",this,text,oldText);},select:function(){this.getOwnerTree().getSelectionModel().select(this);},unselect:function(){this.getOwnerTree().getSelectionModel().unselect(this);},isSelected:function(){return this.getOwnerTree().getSelectionModel().isSelected(this);},expand:function(deep,anim,callback){if(!this.expanded){if(this.fireEvent("beforeexpand",this,deep,anim)===false){return;} -if(!this.childrenRendered){this.renderChildren();} -this.expanded=true;if(!this.isHiddenRoot()&&(this.getOwnerTree().animate&&anim!==false)||anim){this.ui.animExpand(function(){this.fireEvent("expand",this);if(typeof callback=="function"){callback(this);} -if(deep===true){this.expandChildNodes(true);}}.createDelegate(this));return;}else{this.ui.expand();this.fireEvent("expand",this);if(typeof callback=="function"){callback(this);}}}else{if(typeof callback=="function"){callback(this);}} -if(deep===true){this.expandChildNodes(true);}},isHiddenRoot:function(){return this.isRoot&&!this.getOwnerTree().rootVisible;},collapse:function(deep,anim){if(this.expanded&&!this.isHiddenRoot()){if(this.fireEvent("beforecollapse",this,deep,anim)===false){return;} -this.expanded=false;if((this.getOwnerTree().animate&&anim!==false)||anim){this.ui.animCollapse(function(){this.fireEvent("collapse",this);if(deep===true){this.collapseChildNodes(true);}}.createDelegate(this));return;}else{this.ui.collapse();this.fireEvent("collapse",this);}} -if(deep===true){var cs=this.childNodes;for(var i=0,len=cs.length;i<len;i++){cs[i].collapse(true,false);}}},delayedExpand:function(delay){if(!this.expandProcId){this.expandProcId=this.expand.defer(delay,this);}},cancelExpand:function(){if(this.expandProcId){clearTimeout(this.expandProcId);} -this.expandProcId=false;},toggle:function(){if(this.expanded){this.collapse();}else{this.expand();}},ensureVisible:function(callback){var tree=this.getOwnerTree();tree.expandPath(this.getPath(),false,function(){tree.getTreeEl().scrollChildIntoView(this.ui.anchor);Ext.callback(callback);}.createDelegate(this));},expandChildNodes:function(deep){var cs=this.childNodes;for(var i=0,len=cs.length;i<len;i++){cs[i].expand(deep);}},collapseChildNodes:function(deep){var cs=this.childNodes;for(var i=0,len=cs.length;i<len;i++){cs[i].collapse(deep);}},disable:function(){this.disabled=true;this.unselect();if(this.rendered&&this.ui.onDisableChange){this.ui.onDisableChange(this,true);} -this.fireEvent("disabledchange",this,true);},enable:function(){this.disabled=false;if(this.rendered&&this.ui.onDisableChange){this.ui.onDisableChange(this,false);} -this.fireEvent("disabledchange",this,false);},renderChildren:function(suppressEvent){if(suppressEvent!==false){this.fireEvent("beforechildrenrendered",this);} -var cs=this.childNodes;for(var i=0,len=cs.length;i<len;i++){cs[i].render(true);} -this.childrenRendered=true;},sort:function(fn,scope){Ext.tree.TreeNode.superclass.sort.apply(this,arguments);if(this.childrenRendered){var cs=this.childNodes;for(var i=0,len=cs.length;i<len;i++){cs[i].render(true);}}},render:function(bulkRender){this.ui.render(bulkRender);if(!this.rendered){this.rendered=true;if(this.expanded){this.expanded=false;this.expand(false,false);}}},renderIndent:function(deep,refresh){if(refresh){this.ui.childIndent=null;} -this.ui.renderIndent();if(deep===true&&this.childrenRendered){var cs=this.childNodes;for(var i=0,len=cs.length;i<len;i++){cs[i].renderIndent(true,refresh);}}}}); - -Ext.tree.AsyncTreeNode=function(config){this.loaded=false;this.loading=false;Ext.tree.AsyncTreeNode.superclass.constructor.apply(this,arguments);this.addEvents({'beforeload':true,'load':true});};Ext.extend(Ext.tree.AsyncTreeNode,Ext.tree.TreeNode,{expand:function(deep,anim,callback){if(this.loading){var timer;var f=function(){if(!this.loading){clearInterval(timer);this.expand(deep,anim,callback);}}.createDelegate(this);timer=setInterval(f,200);return;} -if(!this.loaded){if(this.fireEvent("beforeload",this)===false){return;} -this.loading=true;this.ui.beforeLoad(this);var loader=this.loader||this.attributes.loader||this.getOwnerTree().getLoader();if(loader){loader.load(this,this.loadComplete.createDelegate(this,[deep,anim,callback]));return;}} -Ext.tree.AsyncTreeNode.superclass.expand.call(this,deep,anim,callback);},isLoading:function(){return this.loading;},loadComplete:function(deep,anim,callback){this.loading=false;this.loaded=true;this.ui.afterLoad(this);this.fireEvent("load",this);this.expand(deep,anim,callback);},isLoaded:function(){return this.loaded;},hasChildNodes:function(){if(!this.isLeaf()&&!this.loaded){return true;}else{return Ext.tree.AsyncTreeNode.superclass.hasChildNodes.call(this);}},reload:function(callback){this.collapse(false,false);while(this.firstChild){this.removeChild(this.firstChild);} -this.childrenRendered=false;this.loaded=false;if(this.isHiddenRoot()){this.expanded=false;} -this.expand(false,false,callback);}}); - -Ext.tree.TreeNodeUI=function(node){this.node=node;this.rendered=false;this.animating=false;this.emptyIcon=Ext.BLANK_IMAGE_URL;};Ext.tree.TreeNodeUI.prototype={removeChild:function(node){if(this.rendered){this.ctNode.removeChild(node.ui.getEl());}},beforeLoad:function(){this.addClass("x-tree-node-loading");},afterLoad:function(){this.removeClass("x-tree-node-loading");},onTextChange:function(node,text,oldText){if(this.rendered){this.textNode.innerHTML=text;}},onDisableChange:function(node,state){this.disabled=state;if(state){this.addClass("x-tree-node-disabled");}else{this.removeClass("x-tree-node-disabled");}},onSelectedChange:function(state){if(state){this.focus();this.addClass("x-tree-selected");}else{this.removeClass("x-tree-selected");}},onMove:function(tree,node,oldParent,newParent,index,refNode){this.childIndent=null;if(this.rendered){var targetNode=newParent.ui.getContainer();if(!targetNode){this.holder=document.createElement("div");this.holder.appendChild(this.wrap);return;} -var insertBefore=refNode?refNode.ui.getEl():null;if(insertBefore){targetNode.insertBefore(this.wrap,insertBefore);}else{targetNode.appendChild(this.wrap);} -this.node.renderIndent(true);}},addClass:function(cls){if(this.elNode){Ext.fly(this.elNode).addClass(cls);}},removeClass:function(cls){if(this.elNode){Ext.fly(this.elNode).removeClass(cls);}},remove:function(){if(this.rendered){this.holder=document.createElement("div");this.holder.appendChild(this.wrap);}},fireEvent:function(){return this.node.fireEvent.apply(this.node,arguments);},initEvents:function(){this.node.on("move",this.onMove,this);var E=Ext.EventManager;var a=this.anchor;var el=Ext.fly(a);if(Ext.isOpera){el.setStyle("text-decoration","none");} -el.on("click",this.onClick,this);el.on("dblclick",this.onDblClick,this);el.on("contextmenu",this.onContextMenu,this);var icon=Ext.fly(this.iconNode);icon.on("click",this.onClick,this);icon.on("dblclick",this.onDblClick,this);icon.on("contextmenu",this.onContextMenu,this);E.on(this.ecNode,"click",this.ecClick,this,true);if(this.node.disabled){this.addClass("x-tree-node-disabled");} -if(this.node.hidden){this.addClass("x-tree-node-disabled");} -var ot=this.node.getOwnerTree();var dd=ot.enableDD||ot.enableDrag||ot.enableDrop;if(dd&&(!this.node.isRoot||ot.rootVisible)){Ext.dd.Registry.register(this.elNode,{node:this.node,handles:[this.iconNode,this.textNode],isHandle:false});}},hide:function(){if(this.rendered){this.wrap.style.display="none";}},show:function(){if(this.rendered){this.wrap.style.display="";}},onContextMenu:function(e){e.preventDefault();this.focus();this.fireEvent("contextmenu",this.node,e);},onClick:function(e){if(this.dropping){return;} -if(this.fireEvent("beforeclick",this.node,e)!==false){if(!this.disabled&&this.node.attributes.href){this.fireEvent("click",this.node,e);return;} -e.preventDefault();if(this.disabled){return;} -if(this.node.attributes.singleClickExpand&&!this.animating&&this.node.hasChildNodes()){this.node.toggle();} -this.fireEvent("click",this.node,e);}else{e.stopEvent();}},onDblClick:function(e){e.preventDefault();if(this.disabled){return;} -if(!this.animating&&this.node.hasChildNodes()){this.node.toggle();} -this.fireEvent("dblclick",this.node,e);},ecClick:function(e){if(!this.animating&&this.node.hasChildNodes()){this.node.toggle();}},startDrop:function(){this.dropping=true;},endDrop:function(){setTimeout(function(){this.dropping=false;}.createDelegate(this),50);},expand:function(){this.updateExpandIcon();this.ctNode.style.display="";},focus:function(){if(!this.node.preventHScroll){try{this.anchor.focus();}catch(e){}}else if(!Ext.isIE){try{var noscroll=this.node.getOwnerTree().getTreeEl().dom;var l=noscroll.scrollLeft;this.anchor.focus();noscroll.scrollLeft=l;}catch(e){}}},blur:function(){try{this.anchor.blur();}catch(e){}},animExpand:function(callback){var ct=Ext.get(this.ctNode);ct.stopFx();if(!this.node.hasChildNodes()){this.updateExpandIcon();this.ctNode.style.display="";Ext.callback(callback);return;} -this.animating=true;this.updateExpandIcon();ct.slideIn('t',{callback:function(){this.animating=false;Ext.callback(callback);},scope:this,duration:this.node.ownerTree.duration||.25});},highlight:function(){var tree=this.node.getOwnerTree();Ext.fly(this.wrap).highlight(tree.hlColor||"C3DAF9",{endColor:tree.hlBaseColor});},collapse:function(){this.updateExpandIcon();this.ctNode.style.display="none";},animCollapse:function(callback){var ct=Ext.get(this.ctNode);ct.enableDisplayMode('block');ct.stopFx();this.animating=true;this.updateExpandIcon();ct.slideOut('t',{callback:function(){this.animating=false;Ext.callback(callback);},scope:this,duration:this.node.ownerTree.duration||.25});},getContainer:function(){return this.ctNode;},getEl:function(){return this.wrap;},appendDDGhost:function(ghostNode){ghostNode.appendChild(this.elNode.cloneNode(true));},getDDRepairXY:function(){return Ext.lib.Dom.getXY(this.iconNode);},onRender:function(){this.render();},render:function(bulkRender){var n=this.node,a=n.attributes;var targetNode=n.parentNode?n.parentNode.ui.getContainer():n.ownerTree.innerCt.dom;if(!this.rendered){this.rendered=true;this.renderElements(n,a,targetNode,bulkRender);if(a.qtip){if(this.textNode.setAttributeNS){this.textNode.setAttributeNS("ext","qtip",a.qtip);if(a.qtipTitle){this.textNode.setAttributeNS("ext","qtitle",a.qtipTitle);}}else{this.textNode.setAttribute("ext:qtip",a.qtip);if(a.qtipTitle){this.textNode.setAttribute("ext:qtitle",a.qtipTitle);}}}else if(a.qtipCfg){a.qtipCfg.target=Ext.id(this.textNode);Ext.QuickTips.register(a.qtipCfg);} -this.initEvents();if(!this.node.expanded){this.updateExpandIcon();}}else{if(bulkRender===true){targetNode.appendChild(this.wrap);}}},renderElements:function(n,a,targetNode,bulkRender){this.indentMarkup=n.parentNode?n.parentNode.ui.getChildIndent():'';var buf=['<li class="x-tree-node"><div class="x-tree-node-el ',a.cls,'">','<span class="x-tree-node-indent">',this.indentMarkup,"</span>",'<img src="',this.emptyIcon,'" class="x-tree-ec-icon">','<img src="',a.icon||this.emptyIcon,'" class="x-tree-node-icon',(a.icon?" x-tree-node-inline-icon":""),(a.iconCls?" "+a.iconCls:""),'" unselectable="on">','<a hidefocus="on" href="',a.href?a.href:"#",'" tabIndex="1" ',a.hrefTarget?' target="'+a.hrefTarget+'"':"",'><span unselectable="on">',n.text,"</span></a></div>",'<ul class="x-tree-node-ct" style="display:none;"></ul>',"</li>"];if(bulkRender!==true&&n.nextSibling&&n.nextSibling.ui.getEl()){this.wrap=Ext.DomHelper.insertHtml("beforeBegin",n.nextSibling.ui.getEl(),buf.join(""));}else{this.wrap=Ext.DomHelper.insertHtml("beforeEnd",targetNode,buf.join(""));} -this.elNode=this.wrap.childNodes[0];this.ctNode=this.wrap.childNodes[1];var cs=this.elNode.childNodes;this.indentNode=cs[0];this.ecNode=cs[1];this.iconNode=cs[2];this.anchor=cs[3];this.textNode=cs[3].firstChild;},getAnchor:function(){return this.anchor;},getTextEl:function(){return this.textNode;},getIconEl:function(){return this.iconNode;},updateExpandIcon:function(){if(this.rendered){var n=this.node,c1,c2;var cls=n.isLast()?"x-tree-elbow-end":"x-tree-elbow";var hasChild=n.hasChildNodes();if(hasChild){if(n.expanded){cls+="-minus";c1="x-tree-node-collapsed";c2="x-tree-node-expanded";}else{cls+="-plus";c1="x-tree-node-expanded";c2="x-tree-node-collapsed";} -if(this.wasLeaf){this.removeClass("x-tree-node-leaf");this.wasLeaf=false;} -if(this.c1!=c1||this.c2!=c2){Ext.fly(this.elNode).replaceClass(c1,c2);this.c1=c1;this.c2=c2;}}else{if(!this.wasLeaf){Ext.fly(this.elNode).replaceClass("x-tree-node-expanded","x-tree-node-leaf");delete this.c1;delete this.c2;this.wasLeaf=true;}} -var ecc="x-tree-ec-icon "+cls;if(this.ecc!=ecc){this.ecNode.className=ecc;this.ecc=ecc;}}},getChildIndent:function(){if(!this.childIndent){var buf=[];var p=this.node;while(p){if(!p.isRoot||(p.isRoot&&p.ownerTree.rootVisible)){if(!p.isLast()){buf.unshift('<img src="'+this.emptyIcon+'" class="x-tree-elbow-line">');}else{buf.unshift('<img src="'+this.emptyIcon+'" class="x-tree-icon">');}} -p=p.parentNode;} -this.childIndent=buf.join("");} -return this.childIndent;},renderIndent:function(){if(this.rendered){var indent="";var p=this.node.parentNode;if(p){indent=p.ui.getChildIndent();} -if(this.indentMarkup!=indent){this.indentNode.innerHTML=indent;this.indentMarkup=indent;} -this.updateExpandIcon();}}};Ext.tree.RootTreeNodeUI=function(){Ext.tree.RootTreeNodeUI.superclass.constructor.apply(this,arguments);};Ext.extend(Ext.tree.RootTreeNodeUI,Ext.tree.TreeNodeUI,{render:function(){if(!this.rendered){var targetNode=this.node.ownerTree.innerCt.dom;this.node.expanded=true;targetNode.innerHTML='<div class="x-tree-root-node"></div>';this.wrap=this.ctNode=targetNode.firstChild;}},collapse:function(){},expand:function(){}}); - -Ext.tree.TreeLoader=function(config){this.baseParams={};this.requestMethod="POST";Ext.apply(this,config);this.addEvents({"beforeload":true,"load":true,"loadexception":true});Ext.tree.TreeLoader.superclass.constructor.call(this);};Ext.extend(Ext.tree.TreeLoader,Ext.util.Observable,{uiProviders:{},clearOnLoad:true,load:function(node,callback){if(this.clearOnLoad){while(node.firstChild){node.removeChild(node.firstChild);}} -if(node.attributes.children){var cs=node.attributes.children;for(var i=0,len=cs.length;i<len;i++){node.appendChild(this.createNode(cs[i]));} -if(typeof callback=="function"){callback();}}else if(this.dataUrl){this.requestData(node,callback);}},getParams:function(node){var buf=[],bp=this.baseParams;for(var key in bp){if(typeof bp[key]!="function"){buf.push(encodeURIComponent(key),"=",encodeURIComponent(bp[key]),"&");}} -buf.push("node=",encodeURIComponent(node.id));return buf.join("");},requestData:function(node,callback){if(this.fireEvent("beforeload",this,node,callback)!==false){var params=this.getParams(node);var cb={success:this.handleResponse,failure:this.handleFailure,scope:this,argument:{callback:callback,node:node}};this.transId=Ext.lib.Ajax.request(this.requestMethod,this.dataUrl,cb,params);}else{if(typeof callback=="function"){callback();}}},isLoading:function(){return this.transId?true:false;},abort:function(){if(this.isLoading()){Ext.lib.Ajax.abort(this.transId);}},createNode:function(attr){if(this.applyLoader!==false){attr.loader=this;} -if(typeof attr.uiProvider=='string'){attr.uiProvider=this.uiProviders[attr.uiProvider]||eval(attr.uiProvider);} -return(attr.leaf?new Ext.tree.TreeNode(attr):new Ext.tree.AsyncTreeNode(attr));},processResponse:function(response,node,callback){var json=response.responseText;try{var o=eval("("+json+")");for(var i=0,len=o.length;i<len;i++){var n=this.createNode(o[i]);if(n){node.appendChild(n);}} -if(typeof callback=="function"){callback(this,node);}}catch(e){this.handleFailure(response);}},handleResponse:function(response){this.transId=false;var a=response.argument;this.processResponse(response,a.node,a.callback);this.fireEvent("load",this,a.node,response);},handleFailure:function(response){this.transId=false;var a=response.argument;this.fireEvent("loadexception",this,a.node,response);if(typeof a.callback=="function"){a.callback(this,a.node);}}}); - -Ext.tree.TreeFilter=function(tree,config){this.tree=tree;this.filtered={};Ext.apply(this,config,{clearBlank:false,reverse:false,autoClear:false,remove:false});};Ext.tree.TreeFilter.prototype={filter:function(value,attr,startNode){attr=attr||"text";var f;if(typeof value=="string"){var vlen=value.length;if(vlen==0&&this.clearBlank){this.clearFilter();return;} -value=value.toLowerCase();f=function(n){return n.attributes[attr].substr(0,vlen).toLowerCase()==value;};}else if(value.exec){f=function(n){return value.test(n.attributes[attr]);};}else{throw'Illegal filter type, must be string or regex';} -this.filterBy(f,null,startNode);},filterBy:function(fn,scope,startNode){startNode=startNode||this.tree.root;if(this.autoClear){this.clearFilter();} -var af=this.filtered,rv=this.reverse;var f=function(n){if(n==startNode){return true;} -if(af[n.id]){return false;} -var m=fn.call(scope||n,n);if(!m||rv){af[n.id]=n;n.ui.hide();return false;} -return true;};startNode.cascade(f);if(this.remove){for(var id in af){if(typeof id!="function"){var n=af[id];if(n&&n.parentNode){n.parentNode.removeChild(n);}}}}},clear:function(){var t=this.tree;var af=this.filtered;for(var id in af){if(typeof id!="function"){var n=af[id];if(n){n.ui.show();}}} -this.filtered={};}}; - -Ext.tree.TreeSorter=function(tree,config){Ext.apply(this,config);tree.on("beforechildrenrendered",this.doSort,this);tree.on("append",this.updateSort,this);tree.on("insert",this.updateSort,this);var dsc=this.dir&&this.dir.toLowerCase()=="desc";var p=this.property||"text";var sortType=this.sortType;var fs=this.folderSort;var cs=this.caseSensitive===true;var leafAttr=this.leafAttr||'leaf';this.sortFn=function(n1,n2){if(fs){if(n1.attributes[leafAttr]&&!n2.attributes[leafAttr]){return 1;} -if(!n1.attributes[leafAttr]&&n2.attributes[leafAttr]){return-1;}} -var v1=sortType?sortType(n1):(cs?n1[p]:n1[p].toUpperCase());var v2=sortType?sortType(n2):(cs?n2[p]:n2[p].toUpperCase());if(v1<v2){return dsc?+1:-1;}else if(v1>v2){return dsc?-1:+1;}else{return 0;}};};Ext.tree.TreeSorter.prototype={doSort:function(node){node.sort(this.sortFn);},compareNodes:function(n1,n2){return(n1.text.toUpperCase()>n2.text.toUpperCase()?1:-1);},updateSort:function(tree,node){if(node.childrenRendered){this.doSort.defer(1,this,[node]);}}}; - -if(Ext.dd.DropZone){Ext.tree.TreeDropZone=function(tree,config){this.allowParentInsert=false;this.allowContainerDrop=false;this.appendOnly=false;Ext.tree.TreeDropZone.superclass.constructor.call(this,tree.innerCt,config);this.tree=tree;this.lastInsertClass="x-tree-no-status";this.dragOverData={};};Ext.extend(Ext.tree.TreeDropZone,Ext.dd.DropZone,{ddGroup:"TreeDD",expandDelay:1000,expandNode:function(node){if(node.hasChildNodes()&&!node.isExpanded()){node.expand(false,null,this.triggerCacheRefresh.createDelegate(this));}},queueExpand:function(node){this.expandProcId=this.expandNode.defer(this.expandDelay,this,[node]);},cancelExpand:function(){if(this.expandProcId){clearTimeout(this.expandProcId);this.expandProcId=false;}},isValidDropPoint:function(n,pt,dd,e,data){if(!n||!data){return false;} -var targetNode=n.node;var dropNode=data.node;if(!(targetNode&&targetNode.isTarget&&pt)){return false;} -if(pt=="append"&&targetNode.allowChildren===false){return false;} -if((pt=="above"||pt=="below")&&(targetNode.parentNode&&targetNode.parentNode.allowChildren===false)){return false;} -if(dropNode&&(targetNode==dropNode||dropNode.contains(targetNode))){return false;} -var overEvent=this.dragOverData;overEvent.tree=this.tree;overEvent.target=targetNode;overEvent.data=data;overEvent.point=pt;overEvent.source=dd;overEvent.rawEvent=e;overEvent.dropNode=dropNode;overEvent.cancel=false;var result=this.tree.fireEvent("nodedragover",overEvent);return overEvent.cancel===false&&result!==false;},getDropPoint:function(e,n,dd){var tn=n.node;if(tn.isRoot){return tn.allowChildren!==false?"append":false;} -var dragEl=n.ddel;var t=Ext.lib.Dom.getY(dragEl),b=t+dragEl.offsetHeight;var y=Ext.lib.Event.getPageY(e);var noAppend=tn.allowChildren===false||tn.isLeaf();if(this.appendOnly||tn.parentNode.allowChildren===false){return noAppend?false:"append";} -var noBelow=false;if(!this.allowParentInsert){noBelow=tn.hasChildNodes()&&tn.isExpanded();} -var q=(b-t)/(noAppend?2:3);if(y>=t&&y<(t+q)){return"above";}else if(!noBelow&&(noAppend||y>=b-q&&y<=b)){return"below";}else{return"append";}},onNodeEnter:function(n,dd,e,data){this.cancelExpand();},onNodeOver:function(n,dd,e,data){var pt=this.getDropPoint(e,n,dd);var node=n.node;if(!this.expandProcId&&pt=="append"&&node.hasChildNodes()&&!n.node.isExpanded()){this.queueExpand(node);}else if(pt!="append"){this.cancelExpand();} -var returnCls=this.dropNotAllowed;if(this.isValidDropPoint(n,pt,dd,e,data)){if(pt){var el=n.ddel;var cls;if(pt=="above"){returnCls=n.node.isFirst()?"x-tree-drop-ok-above":"x-tree-drop-ok-between";cls="x-tree-drag-insert-above";}else if(pt=="below"){returnCls=n.node.isLast()?"x-tree-drop-ok-below":"x-tree-drop-ok-between";cls="x-tree-drag-insert-below";}else{returnCls="x-tree-drop-ok-append";cls="x-tree-drag-append";} -if(this.lastInsertClass!=cls){Ext.fly(el).replaceClass(this.lastInsertClass,cls);this.lastInsertClass=cls;}}} -return returnCls;},onNodeOut:function(n,dd,e,data){this.cancelExpand();this.removeDropIndicators(n);},onNodeDrop:function(n,dd,e,data){var point=this.getDropPoint(e,n,dd);var targetNode=n.node;targetNode.ui.startDrop();if(!this.isValidDropPoint(n,point,dd,e,data)){targetNode.ui.endDrop();return false;} -var dropNode=data.node||(dd.getTreeNode?dd.getTreeNode(data,targetNode,point,e):null);var dropEvent={tree:this.tree,target:targetNode,data:data,point:point,source:dd,rawEvent:e,dropNode:dropNode,cancel:!dropNode};var retval=this.tree.fireEvent("beforenodedrop",dropEvent);if(retval===false||dropEvent.cancel===true||!dropEvent.dropNode){targetNode.ui.endDrop();return false;} -targetNode=dropEvent.target;if(point=="append"&&!targetNode.isExpanded()){targetNode.expand(false,null,function(){this.completeDrop(dropEvent);}.createDelegate(this));}else{this.completeDrop(dropEvent);} -return true;},completeDrop:function(de){var ns=de.dropNode,p=de.point,t=de.target;if(!(ns instanceof Array)){ns=[ns];} -var n;for(var i=0,len=ns.length;i<len;i++){n=ns[i];if(p=="above"){t.parentNode.insertBefore(n,t);}else if(p=="below"){t.parentNode.insertBefore(n,t.nextSibling);}else{t.appendChild(n);}} -n.ui.focus();if(this.tree.hlDrop){n.ui.highlight();} -t.ui.endDrop();this.tree.fireEvent("nodedrop",de);},afterNodeMoved:function(dd,data,e,targetNode,dropNode){if(this.tree.hlDrop){dropNode.ui.focus();dropNode.ui.highlight();} -this.tree.fireEvent("nodedrop",this.tree,targetNode,data,dd,e);},getTree:function(){return this.tree;},removeDropIndicators:function(n){if(n&&n.ddel){var el=n.ddel;Ext.fly(el).removeClass(["x-tree-drag-insert-above","x-tree-drag-insert-below","x-tree-drag-append"]);this.lastInsertClass="_noclass";}},beforeDragDrop:function(target,e,id){this.cancelExpand();return true;},afterRepair:function(data){if(data&&Ext.enableFx){data.node.ui.highlight();} -this.hideProxy();}});} - -if(Ext.dd.DragZone){Ext.tree.TreeDragZone=function(tree,config){Ext.tree.TreeDragZone.superclass.constructor.call(this,tree.getTreeEl(),config);this.tree=tree;};Ext.extend(Ext.tree.TreeDragZone,Ext.dd.DragZone,{ddGroup:"TreeDD",onBeforeDrag:function(data,e){var n=data.node;return n&&n.draggable&&!n.disabled;},onInitDrag:function(e){var data=this.dragData;this.tree.getSelectionModel().select(data.node);this.proxy.update("");data.node.ui.appendDDGhost(this.proxy.ghost.dom);this.tree.fireEvent("startdrag",this.tree,data.node,e);},getRepairXY:function(e,data){return data.node.ui.getDDRepairXY();},onEndDrag:function(data,e){this.tree.fireEvent("enddrag",this.tree,data.node,e);},onValidDrop:function(dd,e,id){this.tree.fireEvent("dragdrop",this.tree,this.dragData.node,dd,e);this.hideProxy();},beforeInvalidDrop:function(e,id){var sm=this.tree.getSelectionModel();sm.clearSelections();sm.select(this.dragData.node);}});} - -Ext.tree.TreeEditor=function(tree,config){config=config||{};var field=config.events?config:new Ext.form.TextField(config);Ext.tree.TreeEditor.superclass.constructor.call(this,field);this.tree=tree;tree.on('beforeclick',this.beforeNodeClick,this);tree.getTreeEl().on('mousedown',this.hide,this);this.on('complete',this.updateNode,this);this.on('beforestartedit',this.fitToTree,this);this.on('startedit',this.bindScroll,this,{delay:10});this.on('specialkey',this.onSpecialKey,this);};Ext.extend(Ext.tree.TreeEditor,Ext.Editor,{alignment:"l-l",autoSize:false,hideEl:false,cls:"x-small-editor x-tree-editor",shim:false,shadow:"frame",maxWidth:250,fitToTree:function(ed,el){var td=this.tree.getTreeEl().dom,nd=el.dom;if(td.scrollLeft>nd.offsetLeft){td.scrollLeft=nd.offsetLeft;} -var w=Math.min(this.maxWidth,(td.clientWidth>20?td.clientWidth:td.offsetWidth)-Math.max(0,nd.offsetLeft-td.scrollLeft)-5);this.setSize(w,'');},triggerEdit:function(node){this.completeEdit();this.editNode=node;this.startEdit(node.ui.textNode,node.text);},bindScroll:function(){this.tree.getTreeEl().on('scroll',this.cancelEdit,this);},beforeNodeClick:function(node){if(this.tree.getSelectionModel().isSelected(node)){this.triggerEdit(node);return false;}},updateNode:function(ed,value){this.tree.getTreeEl().un('scroll',this.cancelEdit,this);this.editNode.setText(value);},onSpecialKey:function(field,e){var k=e.getKey();if(k==e.ESC){e.stopEvent();this.cancelEdit();}else if(k==e.ENTER&&!e.hasModifier()){e.stopEvent();this.completeEdit();}}}); diff --git a/lib/web/extjs/package/util.js b/lib/web/extjs/package/util.js deleted file mode 100644 index 9e60e10f2100606ffe137b5e31d34f2bdd3468ba..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/util.js +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.util.DelayedTask=function(fn,scope,args){var id=null,d,t;var call=function(){var now=new Date().getTime();if(now-t>=d){clearInterval(id);id=null;fn.apply(scope,args||[]);}};this.delay=function(delay,newFn,newScope,newArgs){if(id&&delay!=d){this.cancel();} -d=delay;t=new Date().getTime();fn=newFn||fn;scope=newScope||scope;args=newArgs||args;if(!id){id=setInterval(call,d);}};this.cancel=function(){if(id){clearInterval(id);id=null;}};}; - -Ext.util.MixedCollection=function(allowFunctions,keyFn){this.items=[];this.map={};this.keys=[];this.length=0;this.addEvents({"clear":true,"add":true,"replace":true,"remove":true,"sort":true});this.allowFunctions=allowFunctions===true;if(keyFn){this.getKey=keyFn;} -Ext.util.MixedCollection.superclass.constructor.call(this);};Ext.extend(Ext.util.MixedCollection,Ext.util.Observable,{allowFunctions:false,add:function(key,o){if(arguments.length==1){o=arguments[0];key=this.getKey(o);} -if(typeof key=="undefined"||key===null){this.length++;this.items.push(o);this.keys.push(null);}else{var old=this.map[key];if(old){return this.replace(key,o);} -this.length++;this.items.push(o);this.map[key]=o;this.keys.push(key);} -this.fireEvent("add",this.length-1,o,key);return o;},getKey:function(o){return o.id;},replace:function(key,o){if(arguments.length==1){o=arguments[0];key=this.getKey(o);} -var old=this.item(key);if(typeof key=="undefined"||key===null||typeof old=="undefined"){return this.add(key,o);} -var index=this.indexOfKey(key);this.items[index]=o;this.map[key]=o;this.fireEvent("replace",key,old,o);return o;},addAll:function(objs){if(arguments.length>1||objs instanceof Array){var args=arguments.length>1?arguments:objs;for(var i=0,len=args.length;i<len;i++){this.add(args[i]);}}else{for(var key in objs){if(this.allowFunctions||typeof objs[key]!="function"){this.add(objs[key],key);}}}},each:function(fn,scope){var items=[].concat(this.items);for(var i=0,len=items.length;i<len;i++){if(fn.call(scope||items[i],items[i],i,len)===false){break;}}},eachKey:function(fn,scope){for(var i=0,len=this.keys.length;i<len;i++){fn.call(scope||window,this.keys[i],this.items[i],i,len);}},find:function(fn,scope){for(var i=0,len=this.items.length;i<len;i++){if(fn.call(scope||window,this.items[i],this.keys[i])){return this.items[i];}} -return null;},insert:function(index,key,o){if(arguments.length==2){o=arguments[1];key=this.getKey(o);} -if(index>=this.length){return this.add(key,o);} -this.length++;this.items.splice(index,0,o);if(typeof key!="undefined"&&key!=null){this.map[key]=o;} -this.keys.splice(index,0,key);this.fireEvent("add",index,o,key);return o;},remove:function(o){return this.removeAt(this.indexOf(o));},removeAt:function(index){if(index<this.length&&index>=0){this.length--;var o=this.items[index];this.items.splice(index,1);var key=this.keys[index];if(typeof key!="undefined"){delete this.map[key];} -this.keys.splice(index,1);this.fireEvent("remove",o,key);}},removeKey:function(key){return this.removeAt(this.indexOfKey(key));},getCount:function(){return this.length;},indexOf:function(o){if(!this.items.indexOf){for(var i=0,len=this.items.length;i<len;i++){if(this.items[i]==o)return i;} -return-1;}else{return this.items.indexOf(o);}},indexOfKey:function(key){if(!this.keys.indexOf){for(var i=0,len=this.keys.length;i<len;i++){if(this.keys[i]==key)return i;} -return-1;}else{return this.keys.indexOf(key);}},item:function(key){var item=typeof this.map[key]!="undefined"?this.map[key]:this.items[key];return typeof item!='function'||this.allowFunctions?item:null;},itemAt:function(index){return this.items[index];},key:function(key){return this.map[key];},contains:function(o){return this.indexOf(o)!=-1;},containsKey:function(key){return typeof this.map[key]!="undefined";},clear:function(){this.length=0;this.items=[];this.keys=[];this.map={};this.fireEvent("clear");},first:function(){return this.items[0];},last:function(){return this.items[this.length-1];},_sort:function(property,dir,fn){var dsc=String(dir).toUpperCase()=="DESC"?-1:1;fn=fn||function(a,b){return a-b;};var c=[],k=this.keys,items=this.items;for(var i=0,len=items.length;i<len;i++){c[c.length]={key:k[i],value:items[i],index:i};} -c.sort(function(a,b){var v=fn(a[property],b[property])*dsc;if(v==0){v=(a.index<b.index?-1:1);} -return v;});for(var i=0,len=c.length;i<len;i++){items[i]=c[i].value;k[i]=c[i].key;} -this.fireEvent("sort",this);},sort:function(dir,fn){this._sort("value",dir,fn);},keySort:function(dir,fn){this._sort("key",dir,fn||function(a,b){return String(a).toUpperCase()-String(b).toUpperCase();});},getRange:function(start,end){var items=this.items;if(items.length<1){return[];} -start=start||0;end=Math.min(typeof end=="undefined"?this.length-1:end,this.length-1);var r=[];if(start<=end){for(var i=start;i<=end;i++){r[r.length]=items[i];}}else{for(var i=start;i>=end;i--){r[r.length]=items[i];}} -return r;},filter:function(property,value){if(!value.exec){value=String(value);if(value.length==0){return this.clone();} -value=new RegExp("^"+Ext.escapeRe(value),"i");} -return this.filterBy(function(o){return o&&value.test(o[property]);});},filterBy:function(fn,scope){var r=new Ext.util.MixedCollection();r.getKey=this.getKey;var k=this.keys,it=this.items;for(var i=0,len=it.length;i<len;i++){if(fn.call(scope||this,it[i],k[i])){r.add(k[i],it[i]);}} -return r;},clone:function(){var r=new Ext.util.MixedCollection();var k=this.keys,it=this.items;for(var i=0,len=it.length;i<len;i++){r.add(k[i],it[i]);} -r.getKey=this.getKey;return r;}});Ext.util.MixedCollection.prototype.get=Ext.util.MixedCollection.prototype.item; - -Ext.util.JSON=new(function(){var useHasOwn={}.hasOwnProperty?true:false;var pad=function(n){return n<10?"0"+n:n;};var m={"\b":'\\b',"\t":'\\t',"\n":'\\n',"\f":'\\f',"\r":'\\r','"':'\\"',"\\":'\\\\'};var encodeString=function(s){if(/["\\\x00-\x1f]/.test(s)){return'"'+s.replace(/([\x00-\x1f\\"])/g,function(a,b){var c=m[b];if(c){return c;} -c=b.charCodeAt();return"\\u00"+ -Math.floor(c/16).toString(16)+ -(c%16).toString(16);})+'"';} -return'"'+s+'"';};var encodeArray=function(o){var a=["["],b,i,l=o.length,v;for(i=0;i<l;i+=1){v=o[i];switch(typeof v){case"undefined":case"function":case"unknown":break;default:if(b){a.push(',');} -a.push(v===null?"null":Ext.util.JSON.encode(v));b=true;}} -a.push("]");return a.join("");};var encodeDate=function(o){return'"'+o.getFullYear()+"-"+ -pad(o.getMonth()+1)+"-"+ -pad(o.getDate())+"T"+ -pad(o.getHours())+":"+ -pad(o.getMinutes())+":"+ -pad(o.getSeconds())+'"';};this.encode=function(o){if(typeof o=="undefined"||o===null){return"null";}else if(o instanceof Array){return encodeArray(o);}else if(o instanceof Date){return encodeDate(o);}else if(typeof o=="string"){return encodeString(o);}else if(typeof o=="number"){return isFinite(o)?String(o):"null";}else if(typeof o=="boolean"){return String(o);}else{var a=["{"],b,i,v;for(i in o){if(!useHasOwn||o.hasOwnProperty(i)){v=o[i];switch(typeof v){case"undefined":case"function":case"unknown":break;default:if(b){a.push(',');} -a.push(this.encode(i),":",v===null?"null":this.encode(v));b=true;}}} -a.push("}");return a.join("");}};this.decode=function(json){return eval("("+json+')');};})();Ext.encode=Ext.util.JSON.encode;Ext.decode=Ext.util.JSON.decode; - -Ext.util.Format=function(){var trimRe=/^\s+|\s+$/g;return{ellipsis:function(value,len){if(value&&value.length>len){return value.substr(0,len-3)+"...";} -return value;},undef:function(value){return typeof value!="undefined"?value:"";},htmlEncode:function(value){return!value?value:String(value).replace(/&/g,"&").replace(/>/g,">").replace(/</g,"<").replace(/"/g,""");},trim:function(value){return String(value).replace(trimRe,"");},substr:function(value,start,length){return String(value).substr(start,length);},lowercase:function(value){return String(value).toLowerCase();},uppercase:function(value){return String(value).toUpperCase();},capitalize:function(value){return!value?value:value.charAt(0).toUpperCase()+value.substr(1).toLowerCase();},call:function(value,fn){if(arguments.length>2){var args=Array.prototype.slice.call(arguments,2);args.unshift(value);return eval(fn).apply(window,args);}else{return eval(fn).call(window,value);}},usMoney:function(v){v=(Math.round((v-0)*100))/100;v=(v==Math.floor(v))?v+".00":((v*10==Math.floor(v*10))?v+"0":v);return"$"+v;},date:function(v,format){if(!v){return"";} -if(!(v instanceof Date)){v=new Date(Date.parse(v));} -return v.dateFormat(format||"m/d/Y");},dateRenderer:function(format){return function(v){return Ext.util.Format.date(v,format);};},stripTagsRE:/<\/?[^>]+>/gi,stripTags:function(v){return!v?v:String(v).replace(this.stripTagsRE,"");}};}(); - -Ext.util.CSS=function(){var rules=null;var doc=document;var camelRe=/(-[a-z])/gi;var camelFn=function(m,a){return a.charAt(1).toUpperCase();};return{createStyleSheet:function(cssText){var ss;if(Ext.isIE){ss=doc.createStyleSheet();ss.cssText=cssText;}else{var head=doc.getElementsByTagName("head")[0];var rules=doc.createElement("style");rules.setAttribute("type","text/css");try{rules.appendChild(doc.createTextNode(cssText));}catch(e){rules.cssText=cssText;} -head.appendChild(rules);ss=rules.styleSheet?rules.styleSheet:(rules.sheet||doc.styleSheets[doc.styleSheets.length-1]);} -this.cacheStyleSheet(ss);return ss;},removeStyleSheet:function(id){var existing=doc.getElementById(id);if(existing){existing.parentNode.removeChild(existing);}},swapStyleSheet:function(id,url){this.removeStyleSheet(id);var ss=doc.createElement("link");ss.setAttribute("rel","stylesheet");ss.setAttribute("type","text/css");ss.setAttribute("id",id);ss.setAttribute("href",url);doc.getElementsByTagName("head")[0].appendChild(ss);},refreshCache:function(){return this.getRules(true);},cacheStyleSheet:function(ss){if(!rules){rules={};} -try{var ssRules=ss.cssRules||ss.rules;for(var j=ssRules.length-1;j>=0;--j){rules[ssRules[j].selectorText]=ssRules[j];}}catch(e){}},getRules:function(refreshCache){if(rules==null||refreshCache){rules={};var ds=doc.styleSheets;for(var i=0,len=ds.length;i<len;i++){try{this.cacheStyleSheet(ds[i]);}catch(e){}}} -return rules;},getRule:function(selector,refreshCache){var rs=this.getRules(refreshCache);if(!(selector instanceof Array)){return rs[selector];} -for(var i=0;i<selector.length;i++){if(rs[selector[i]]){return rs[selector[i]];}} -return null;},updateRule:function(selector,property,value){if(!(selector instanceof Array)){var rule=this.getRule(selector);if(rule){rule.style[property.replace(camelRe,camelFn)]=value;return true;}}else{for(var i=0;i<selector.length;i++){if(this.updateRule(selector[i],property,value)){return true;}}} -return false;}};}(); - -Ext.util.ClickRepeater=function(el,config) -{this.el=Ext.get(el);this.el.unselectable();Ext.apply(this,config);this.addEvents({"mousedown":true,"click":true,"mouseup":true});this.el.on("mousedown",this.handleMouseDown,this);if(this.preventDefault||this.stopDefault){this.el.on("click",function(e){if(this.preventDefault){e.preventDefault();} -if(this.stopDefault){e.stopEvent();}},this);} -if(this.handler){this.on("click",this.handler,this.scope||this);} -Ext.util.ClickRepeater.superclass.constructor.call(this);};Ext.extend(Ext.util.ClickRepeater,Ext.util.Observable,{interval:20,delay:250,preventDefault:true,stopDefault:false,timer:0,docEl:Ext.get(document),handleMouseDown:function(){clearTimeout(this.timer);this.el.blur();if(this.pressClass){this.el.addClass(this.pressClass);} -this.mousedownTime=new Date();this.docEl.on("mouseup",this.handleMouseUp,this);this.el.on("mouseout",this.handleMouseOut,this);this.fireEvent("mousedown",this);this.fireEvent("click",this);this.timer=this.click.defer(this.delay||this.interval,this);},click:function(){this.fireEvent("click",this);this.timer=this.click.defer(this.getInterval(),this);},getInterval:function(){if(!this.accelerate){return this.interval;} -var pressTime=this.mousedownTime.getElapsed();if(pressTime<500){return 400;}else if(pressTime<1700){return 320;}else if(pressTime<2600){return 250;}else if(pressTime<3500){return 180;}else if(pressTime<4400){return 140;}else if(pressTime<5300){return 80;}else if(pressTime<6200){return 50;}else{return 10;}},handleMouseOut:function(){clearTimeout(this.timer);if(this.pressClass){this.el.removeClass(this.pressClass);} -this.el.on("mouseover",this.handleMouseReturn,this);},handleMouseReturn:function(){this.el.un("mouseover",this.handleMouseReturn);if(this.pressClass){this.el.addClass(this.pressClass);} -this.click();},handleMouseUp:function(){clearTimeout(this.timer);this.el.un("mouseover",this.handleMouseReturn);this.el.un("mouseout",this.handleMouseOut);this.docEl.un("mouseup",this.handleMouseUp);this.el.removeClass(this.pressClass);this.fireEvent("mouseup",this);}}); - -Ext.KeyNav=function(el,config){this.el=Ext.get(el);Ext.apply(this,config);if(!this.disabled){this.disabled=true;this.enable();}};Ext.KeyNav.prototype={disabled:false,defaultEventAction:"stopEvent",prepareEvent:function(e){var k=e.getKey();var h=this.keyToHandler[k];if(Ext.isSafari&&h&&k>=37&&k<=40){e.stopEvent();}},relay:function(e){var k=e.getKey();var h=this.keyToHandler[k];if(h&&this[h]){if(this.doRelay(e,this[h],h)!==true){e[this.defaultEventAction]();}}},doRelay:function(e,h,hname){return h.call(this.scope||this,e);},enter:false,left:false,right:false,up:false,down:false,tab:false,esc:false,pageUp:false,pageDown:false,del:false,home:false,end:false,keyToHandler:{37:"left",39:"right",38:"up",40:"down",33:"pageUp",34:"pageDown",46:"del",36:"home",35:"end",13:"enter",27:"esc",9:"tab"},enable:function(){if(this.disabled){if(Ext.isIE){this.el.on("keydown",this.relay,this);}else{this.el.on("keydown",this.prepareEvent,this);this.el.on("keypress",this.relay,this);} -this.disabled=false;}},disable:function(){if(!this.disabled){if(Ext.isIE){this.el.un("keydown",this.relay);}else{this.el.un("keydown",this.prepareEvent);this.el.un("keypress",this.relay);} -this.disabled=true;}}}; - -Ext.KeyMap=function(el,config,eventName){this.el=Ext.get(el);this.eventName=eventName||"keydown";this.bindings=[];if(config instanceof Array){for(var i=0,len=config.length;i<len;i++){this.addBinding(config[i]);}}else{this.addBinding(config);} -this.keyDownDelegate=Ext.EventManager.wrap(this.handleKeyDown,this,true);this.enable();};Ext.KeyMap.prototype={stopEvent:false,addBinding:function(config){var keyCode=config.key,shift=config.shift,ctrl=config.ctrl,alt=config.alt,fn=config.fn,scope=config.scope;if(typeof keyCode=="string"){var ks=[];var keyString=keyCode.toUpperCase();for(var j=0,len=keyString.length;j<len;j++){ks.push(keyString.charCodeAt(j));} -keyCode=ks;} -var keyArray=keyCode instanceof Array;var handler=function(e){if((!shift||e.shiftKey)&&(!ctrl||e.ctrlKey)&&(!alt||e.altKey)){var k=e.getKey();if(keyArray){for(var i=0,len=keyCode.length;i<len;i++){if(keyCode[i]==k){if(this.stopEvent){e.stopEvent();} -fn.call(scope||window,k,e);return;}}}else{if(k==keyCode){if(this.stopEvent){e.stopEvent();} -fn.call(scope||window,k,e);}}}};this.bindings.push(handler);},handleKeyDown:function(e){if(this.enabled){var b=this.bindings;for(var i=0,len=b.length;i<len;i++){b[i].call(this,e);}}},isEnabled:function(){return this.enabled;},enable:function(){if(!this.enabled){this.el.on(this.eventName,this.keyDownDelegate);this.enabled=true;}},disable:function(){if(this.enabled){this.el.removeListener(this.eventName,this.keyDownDelegate);this.enabled=false;}}}; - -Ext.util.TextMetrics=function(){var shared;return{measure:function(el,text,fixedWidth){if(!shared){shared=Ext.util.TextMetrics.Instance(el,fixedWidth);} -shared.bind(el);shared.setFixedWidth(fixedWidth||'auto');return shared.getSize(text);},createInstance:function(el,fixedWidth){return Ext.util.TextMetrics.Instance(el,fixedWidth);}};}();Ext.util.TextMetrics.Instance=function(bindTo,fixedWidth){var ml=new Ext.Element(document.createElement('div'));document.body.appendChild(ml.dom);ml.position('absolute');ml.setLeftTop(-1000,-1000);ml.hide();if(fixedWidth){ml.setWidth(fixedWidth);} -var instance={getSize:function(text){ml.update(text);var s=ml.getSize();ml.update('');return s;},bind:function(el){ml.setStyle(Ext.fly(el).getStyles('font-size','font-style','font-weight','font-family','line-height'));},setFixedWidth:function(width){ml.setWidth(width);},getWidth:function(text){ml.dom.style.width='auto';return this.getSize(text).width;},getHeight:function(text){return this.getSize(text).height;}};instance.bind(bindTo);return instance;};Ext.Element.measureText=Ext.util.TextMetrics.measure; diff --git a/lib/web/extjs/package/widget-core.js b/lib/web/extjs/package/widget-core.js deleted file mode 100644 index dce45eee0d779680ff524aae0276445f99e59c96..0000000000000000000000000000000000000000 --- a/lib/web/extjs/package/widget-core.js +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -Ext.ComponentMgr=function(){var all=new Ext.util.MixedCollection();return{register:function(c){all.add(c);},unregister:function(c){all.remove(c);},get:function(id){return all.get(id);},onAvailable:function(id,fn,scope){all.on("add",function(index,o){if(o.id==id){fn.call(scope||o,o);all.un("add",fn,scope);}});}};}();Ext.Component=function(config){config=config||{};if(config.tagName||config.dom||typeof config=="string"){config={el:config,id:config.id||config};} -this.initialConfig=config;Ext.apply(this,config);this.addEvents({disable:true,enable:true,beforeshow:true,show:true,beforehide:true,hide:true,beforerender:true,render:true,beforedestroy:true,destroy:true});if(!this.id){this.id="ext-comp-"+(++Ext.Component.AUTO_ID);} -Ext.ComponentMgr.register(this);Ext.Component.superclass.constructor.call(this);this.initComponent();if(this.renderTo){this.render(this.renderTo);delete this.renderTo;}};Ext.Component.AUTO_ID=1000;Ext.extend(Ext.Component,Ext.util.Observable,{hidden:false,disabled:false,disabledClass:"x-item-disabled",rendered:false,allowDomMove:true,ctype:"Ext.Component",actionMode:"el",getActionEl:function(){return this[this.actionMode];},hideMode:'display',initComponent:Ext.emptyFn,render:function(container,position){if(!this.rendered&&this.fireEvent("beforerender",this)!==false){if(!container&&this.el){this.el=Ext.get(this.el);container=this.el.dom.parentNode;this.allowDomMove=false;} -this.container=Ext.get(container);this.rendered=true;if(position!==undefined){if(typeof position=='number'){position=this.container.dom.childNodes[position];}else{position=Ext.getDom(position);}} -this.onRender(this.container,position||null);if(this.cls){this.el.addClass(this.cls);delete this.cls;} -if(this.style){this.el.applyStyles(this.style);delete this.style;} -this.fireEvent("render",this);this.afterRender(this.container);if(this.hidden){this.hide();} -if(this.disabled){this.disable();}} -return this;},onRender:function(ct,position){if(this.el){this.el=Ext.get(this.el);if(this.allowDomMove!==false){ct.dom.insertBefore(this.el.dom,position);}}},getAutoCreate:function(){var cfg=typeof this.autoCreate=="object"?this.autoCreate:Ext.apply({},this.defaultAutoCreate);if(this.id&&!cfg.id){cfg.id=this.id;} -return cfg;},afterRender:Ext.emptyFn,destroy:function(){if(this.fireEvent("beforedestroy",this)!==false){this.purgeListeners();this.beforeDestroy();if(this.rendered){this.el.removeAllListeners();this.el.remove();if(this.actionMode=="container"){this.container.remove();}} -this.onDestroy();Ext.ComponentMgr.unregister(this);this.fireEvent("destroy",this);}},beforeDestroy:function(){},onDestroy:function(){},getEl:function(){return this.el;},getId:function(){return this.id;},focus:function(selectText){if(this.rendered){this.el.focus();if(selectText===true){this.el.dom.select();}} -return this;},blur:function(){if(this.rendered){this.el.blur();} -return this;},disable:function(){if(this.rendered){this.onDisable();} -this.disabled=true;this.fireEvent("disable",this);return this;},onDisable:function(){this.getActionEl().addClass(this.disabledClass);this.el.dom.disabled=true;},enable:function(){if(this.rendered){this.onEnable();} -this.disabled=false;this.fireEvent("enable",this);return this;},onEnable:function(){this.getActionEl().removeClass(this.disabledClass);this.el.dom.disabled=false;},setDisabled:function(disabled){this[disabled?"disable":"enable"]();},show:function(){if(this.fireEvent("beforeshow",this)!==false){this.hidden=false;if(this.rendered){this.onShow();} -this.fireEvent("show",this);} -return this;},onShow:function(){var ae=this.getActionEl();if(this.hideMode=='visibility'){ae.dom.style.visibility="visible";}else if(this.hideMode=='offsets'){ae.removeClass('x-hidden');}else{ae.dom.style.display="";}},hide:function(){if(this.fireEvent("beforehide",this)!==false){this.hidden=true;if(this.rendered){this.onHide();} -this.fireEvent("hide",this);} -return this;},onHide:function(){var ae=this.getActionEl();if(this.hideMode=='visibility'){ae.dom.style.visibility="hidden";}else if(this.hideMode=='offsets'){ae.addClass('x-hidden');}else{ae.dom.style.display="none";}},setVisible:function(visible){if(visible){this.show();}else{this.hide();} -return this;},isVisible:function(){return this.getActionEl().isVisible();},cloneConfig:function(overrides){overrides=overrides||{};var id=overrides.id||Ext.id();var cfg=Ext.applyIf(overrides,this.initialConfig);cfg.id=id;return new this.__extcls(cfg);}}); - -(function(){Ext.Layer=function(config,existingEl){config=config||{};var dh=Ext.DomHelper;var cp=config.parentEl,pel=cp?Ext.getDom(cp):document.body;if(existingEl){this.dom=Ext.getDom(existingEl);} -if(!this.dom){var o=config.dh||{tag:"div",cls:"x-layer"};this.dom=dh.append(pel,o);} -if(config.cls){this.addClass(config.cls);} -this.constrain=config.constrain!==false;this.visibilityMode=Ext.Element.VISIBILITY;if(config.id){this.id=this.dom.id=config.id;}else{this.id=Ext.id(this.dom);} -this.zindex=config.zindex||this.getZIndex();this.position("absolute",this.zindex);if(config.shadow){this.shadowOffset=config.shadowOffset||4;this.shadow=new Ext.Shadow({offset:this.shadowOffset,mode:config.shadow});}else{this.shadowOffset=0;} -this.useShim=config.shim!==false&&Ext.useShims;this.useDisplay=config.useDisplay;this.hide();};var supr=Ext.Element.prototype;var shims=[];Ext.extend(Ext.Layer,Ext.Element,{getZIndex:function(){return this.zindex||parseInt(this.getStyle("z-index"),10)||11000;},getShim:function(){if(!this.useShim){return null;} -if(this.shim){return this.shim;} -var shim=shims.shift();if(!shim){shim=this.createShim();shim.enableDisplayMode('block');shim.dom.style.display='none';shim.dom.style.visibility='visible';} -var pn=this.dom.parentNode;if(shim.dom.parentNode!=pn){pn.insertBefore(shim.dom,this.dom);} -shim.setStyle('z-index',this.getZIndex()-2);this.shim=shim;return shim;},hideShim:function(){if(this.shim){this.shim.setDisplayed(false);shims.push(this.shim);delete this.shim;}},disableShadow:function(){if(this.shadow){this.shadowDisabled=true;this.shadow.hide();this.lastShadowOffset=this.shadowOffset;this.shadowOffset=0;}},enableShadow:function(show){if(this.shadow){this.shadowDisabled=false;this.shadowOffset=this.lastShadowOffset;delete this.lastShadowOffset;if(show){this.sync(true);}}},sync:function(doShow){var sw=this.shadow;if(!this.updating&&this.isVisible()&&(sw||this.useShim)){var sh=this.getShim();var w=this.getWidth(),h=this.getHeight();var l=this.getLeft(true),t=this.getTop(true);if(sw&&!this.shadowDisabled){if(doShow&&!sw.isVisible()){sw.show(this);}else{sw.realign(l,t,w,h);} -if(sh){if(doShow){sh.show();} -var a=sw.adjusts,s=sh.dom.style;s.left=(Math.min(l,l+a.l))+"px";s.top=(Math.min(t,t+a.t))+"px";s.width=(w+a.w)+"px";s.height=(h+a.h)+"px";}}else if(sh){if(doShow){sh.show();} -sh.setSize(w,h);sh.setLeftTop(l,t);}}},destroy:function(){this.hideShim();if(this.shadow){this.shadow.hide();} -this.removeAllListeners();var pn=this.dom.parentNode;if(pn){pn.removeChild(this.dom);} -Ext.Element.uncache(this.id);},remove:function(){this.destroy();},beginUpdate:function(){this.updating=true;},endUpdate:function(){this.updating=false;this.sync(true);},hideUnders:function(negOffset){if(this.shadow){this.shadow.hide();} -this.hideShim();},constrainXY:function(){if(this.constrain){var vw=Ext.lib.Dom.getViewWidth(),vh=Ext.lib.Dom.getViewHeight();var s=Ext.get(document).getScroll();var xy=this.getXY();var x=xy[0],y=xy[1];var w=this.dom.offsetWidth+this.shadowOffset,h=this.dom.offsetHeight+this.shadowOffset;var moved=false;if((x+w)>vw+s.left){x=vw-w-this.shadowOffset;moved=true;} -if((y+h)>vh+s.top){y=vh-h-this.shadowOffset;moved=true;} -if(x<s.left){x=s.left;moved=true;} -if(y<s.top){y=s.top;moved=true;} -if(moved){if(this.avoidY){var ay=this.avoidY;if(y<=ay&&(y+h)>=ay){y=ay-h-5;}} -xy=[x,y];this.storeXY(xy);supr.setXY.call(this,xy);this.sync();}}},isVisible:function(){return this.visible;},showAction:function(){this.visible=true;if(this.useDisplay===true){this.setDisplayed("");}else if(this.lastXY){supr.setXY.call(this,this.lastXY);}else if(this.lastLT){supr.setLeftTop.call(this,this.lastLT[0],this.lastLT[1]);}},hideAction:function(){this.visible=false;if(this.useDisplay===true){this.setDisplayed(false);}else{this.setLeftTop(-10000,-10000);}},setVisible:function(v,a,d,c,e){if(v){this.showAction();} -if(a&&v){var cb=function(){this.sync(true);if(c){c();}}.createDelegate(this);supr.setVisible.call(this,true,true,d,cb,e);}else{if(!v){this.hideUnders(true);} -var cb=c;if(a){cb=function(){this.hideAction();if(c){c();}}.createDelegate(this);} -supr.setVisible.call(this,v,a,d,cb,e);if(v){this.sync(true);}else if(!a){this.hideAction();}}},storeXY:function(xy){delete this.lastLT;this.lastXY=xy;},storeLeftTop:function(left,top){delete this.lastXY;this.lastLT=[left,top];},beforeFx:function(){this.beforeAction();return Ext.Layer.superclass.beforeFx.apply(this,arguments);},afterFx:function(){Ext.Layer.superclass.afterFx.apply(this,arguments);this.sync(this.isVisible());},beforeAction:function(){if(!this.updating&&this.shadow){this.shadow.hide();}},setLeft:function(left){this.storeLeftTop(left,this.getTop(true));supr.setLeft.apply(this,arguments);this.sync();},setTop:function(top){this.storeLeftTop(this.getLeft(true),top);supr.setTop.apply(this,arguments);this.sync();},setLeftTop:function(left,top){this.storeLeftTop(left,top);supr.setLeftTop.apply(this,arguments);this.sync();},setXY:function(xy,a,d,c,e){this.fixDisplay();this.beforeAction();this.storeXY(xy);var cb=this.createCB(c);supr.setXY.call(this,xy,a,d,cb,e);if(!a){cb();}},createCB:function(c){var el=this;return function(){el.constrainXY();el.sync(true);if(c){c();}};},setX:function(x,a,d,c,e){this.setXY([x,this.getY()],a,d,c,e);},setY:function(y,a,d,c,e){this.setXY([this.getX(),y],a,d,c,e);},setSize:function(w,h,a,d,c,e){this.beforeAction();var cb=this.createCB(c);supr.setSize.call(this,w,h,a,d,cb,e);if(!a){cb();}},setWidth:function(w,a,d,c,e){this.beforeAction();var cb=this.createCB(c);supr.setWidth.call(this,w,a,d,cb,e);if(!a){cb();}},setHeight:function(h,a,d,c,e){this.beforeAction();var cb=this.createCB(c);supr.setHeight.call(this,h,a,d,cb,e);if(!a){cb();}},setBounds:function(x,y,w,h,a,d,c,e){this.beforeAction();var cb=this.createCB(c);if(!a){this.storeXY([x,y]);supr.setXY.call(this,[x,y]);supr.setSize.call(this,w,h,a,d,cb,e);cb();}else{supr.setBounds.call(this,x,y,w,h,a,d,cb,e);} -return this;},setZIndex:function(zindex){this.zindex=zindex;this.setStyle("z-index",zindex+2);if(this.shadow){this.shadow.setZIndex(zindex+1);} -if(this.shim){this.shim.setStyle("z-index",zindex);}}});})(); - -Ext.Shadow=function(config){Ext.apply(this,config);if(typeof this.mode!="string"){this.mode=this.defaultMode;} -var o=this.offset,a={h:0};var rad=Math.floor(this.offset/2);switch(this.mode.toLowerCase()){case"drop":a.w=0;a.l=a.t=o;a.t-=1;if(Ext.isIE){a.l-=this.offset+rad;a.t-=this.offset+rad;a.w-=rad;a.h-=rad;a.t+=1;} -break;case"sides":a.w=(o*2);a.l=-o;a.t=o-1;if(Ext.isIE){a.l-=(this.offset-rad);a.t-=this.offset+rad;a.l+=1;a.w-=(this.offset-rad)*2;a.w-=rad+1;a.h-=1;} -break;case"frame":a.w=a.h=(o*2);a.l=a.t=-o;a.t+=1;a.h-=2;if(Ext.isIE){a.l-=(this.offset-rad);a.t-=(this.offset-rad);a.l+=1;a.w-=(this.offset+rad+1);a.h-=(this.offset+rad);a.h+=1;} -break;};this.adjusts=a;};Ext.Shadow.prototype={offset:4,defaultMode:"drop",show:function(target){target=Ext.get(target);if(!this.el){this.el=Ext.Shadow.Pool.pull();if(this.el.dom.nextSibling!=target.dom){this.el.insertBefore(target);}} -this.el.setStyle("z-index",this.zIndex||parseInt(target.getStyle("z-index"),10)-1);if(Ext.isIE){this.el.dom.style.filter="progid:DXImageTransform.Microsoft.alpha(opacity=50) progid:DXImageTransform.Microsoft.Blur(pixelradius="+(this.offset)+")";} -this.realign(target.getLeft(true),target.getTop(true),target.getWidth(),target.getHeight());this.el.dom.style.display="block";},isVisible:function(){return this.el?true:false;},realign:function(l,t,w,h){if(!this.el){return;} -var a=this.adjusts,d=this.el.dom,s=d.style;var iea=0;s.left=(l+a.l)+"px";s.top=(t+a.t)+"px";var sw=(w+a.w),sh=(h+a.h),sws=sw+"px",shs=sh+"px";if(s.width!=sws||s.height!=shs){s.width=sws;s.height=shs;if(!Ext.isIE){var cn=d.childNodes;var sww=Math.max(0,(sw-12))+"px";cn[0].childNodes[1].style.width=sww;cn[1].childNodes[1].style.width=sww;cn[2].childNodes[1].style.width=sww;cn[1].style.height=Math.max(0,(sh-12))+"px";}}},hide:function(){if(this.el){this.el.dom.style.display="none";Ext.Shadow.Pool.push(this.el);delete this.el;}},setZIndex:function(z){this.zIndex=z;if(this.el){this.el.setStyle("z-index",z);}}};Ext.Shadow.Pool=function(){var p=[];var markup=Ext.isIE?'<div class="x-ie-shadow"></div>':'<div class="x-shadow"><div class="xst"><div class="xstl"></div><div class="xstc"></div><div class="xstr"></div></div><div class="xsc"><div class="xsml"></div><div class="xsmc"></div><div class="xsmr"></div></div><div class="xsb"><div class="xsbl"></div><div class="xsbc"></div><div class="xsbr"></div></div></div>';return{pull:function(){var sh=p.shift();if(!sh){sh=Ext.get(Ext.DomHelper.insertHtml("beforeBegin",document.body.firstChild,markup));sh.autoBoxAdjust=false;} -return sh;},push:function(sh){p.push(sh);}};}(); diff --git a/lib/web/extjs/resources/css/basic-dialog.css b/lib/web/extjs/resources/css/basic-dialog.css deleted file mode 100644 index 8a7e793e3d8246c9b50804e6b503d8b7a51df9d0..0000000000000000000000000000000000000000 --- a/lib/web/extjs/resources/css/basic-dialog.css +++ /dev/null @@ -1,286 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-dlg-proxy { - background-image: url(../images/default/gradient-bg.gif); - background-color:#c3daf9; - border:1px solid #6593cf; - z-index:10001; - overflow:hidden; - position:absolute; - left:0;top:0; -} -.x-dlg-shadow{ - background:#aaaaaa; - position:absolute; - left:0;top:0; -} -.x-dlg-focus{ - -moz-outline:0 none; - outline:0 none; - width:0; - height:0; - overflow:hidden; - position:absolute; - top:0; - left:0; -} -.x-dlg-mask{ - z-index:10000; - display:none; - position:absolute; - top:0; - left:0; - -moz-opacity: 0.5; - opacity:.50; - filter: alpha(opacity=50); - background-color:#CCC; -} -body.x-body-masked select { - visibility:hidden; -} -body.x-body-masked .x-dlg select { - visibility:visible; -} -.x-dlg{ - z-index:10001; - overflow:hidden; - position:absolute; - left:300;top:0; -} -.x-dlg .x-dlg-hd { - background: url(../images/default/basic-dialog/hd-sprite.gif) repeat-x 0 -82px; - background-color:navy; - color:#FFF; - font:bold 12px "sans serif", tahoma, verdana, helvetica; - overflow:hidden; - padding:5px; - white-space: nowrap; -} -.x-dlg .x-dlg-hd-left { - background: url(../images/default/basic-dialog/hd-sprite.gif) no-repeat 0 -41px; - padding-left:3px; - margin:0; -} -.x-dlg .x-dlg-hd-right { - background: url(../images/default/basic-dialog/hd-sprite.gif) no-repeat right 0; - padding-right:3px; -} -.x-dlg .x-dlg-dlg-body{ - background:url(../images/default/layout/gradient-bg.gif); - border:1px solid #6593cf; - border-top:0 none; - padding:10px; - position:absolute; - top:24px;left:0; - z-index:1; - overflow:hidden; -} -.x-dlg-collapsed .x-resizable-handle{ - display:none; -} -.x-dlg .x-dlg-bd{ - overflow:hidden; -} -.x-dlg .x-dlg-ft{ - overflow:hidden; - padding:5px; - padding-bottom:0; -} - -.x-dlg .x-tabs-body{ - background:white; - overflow:auto; -} -.x-dlg .x-tabs-top .x-tabs-body{ - border:1px solid #6593cf; - border-top:0 none; -} -.x-dlg .x-tabs-bottom .x-tabs-body{ - border:1px solid #6593cf; - border-bottom:0 none; -} -.x-dlg .x-layout-container .x-tabs-body{ - border:0 none; -} -.x-dlg .inner-tab{ - margin:5px; -} -.x-dlg .x-dlg-ft .x-btn{ - margin-right:5px; - float:right; - clear:none; -} -.x-dlg .x-dlg-ft .x-dlg-btns td { - border:0; - padding:0; -} -.x-dlg .x-dlg-ft .x-dlg-btns-right table{ - float:right; - clear:none; -} -.x-dlg .x-dlg-ft .x-dlg-btns-left table{ - float:left; - clear:none; -} -.x-dlg .x-dlg-ft .x-dlg-btns-center{ - text-align:center; /*ie*/ -} -.x-dlg .x-dlg-ft .x-dlg-btns-center table{ - margin:0 auto; /*everyone else*/ -} - - -.x-dlg .x-dlg-ft .x-dlg-btns .x-btn-focus .x-btn-left{ - background-position:0 -147px; -} -.x-dlg .x-dlg-ft .x-dlg-btns .x-btn-focus .x-btn-right{ - background-position:0 -168px; -} -.x-dlg .x-dlg-ft .x-dlg-btns .x-btn-focus .x-btn-center{ - background-position:0 -189px; -} - -.x-dlg .x-dlg-ft .x-dlg-btns .x-btn-click .x-btn-center{ - background-position:0 -126px; -} -.x-dlg .x-dlg-ft .x-dlg-btns .x-btn-click .x-btn-right{ - background-position:0 -84px; -} -.x-dlg .x-dlg-ft .x-dlg-btns .x-btn-click .x-btn-left{ - background-position:0 -63px; -} - -.x-dlg-draggable .x-dlg-hd{ - cursor:move; -} -.x-dlg-closable .x-dlg-hd{ - padding-right:22px; -} -.x-dlg-toolbox { - position:absolute; - top:4px; - right:4px; - z-index:6; - width:40px; - cursor:default; - height:15px; - background:transparent; -} -.x-dlg .x-dlg-close, .x-dlg .x-dlg-collapse { - float:right; - height:15px; - width:15px; - margin:0; - margin-left:2px; - padding:0; - line-height:1px; - font-size:1px; - background-repeat:no-repeat; - cursor:pointer; - visibility:inherit; -} -.x-dlg .x-dlg-close { - background-image:url(../images/default/basic-dialog/close.gif); -} -.x-dlg .x-dlg-collapse { - background-image:url(../images/default/basic-dialog/collapse.gif); -} -.x-dlg-collapsed .x-dlg-collapse { - background-image:url(../images/default/basic-dialog/expand.gif); -} -.x-dlg .x-dlg-close-over, .x-dlg .x-dlg-collapse-over { - -} -.x-dlg div.x-resizable-handle-east{ - background-image:url(../images/default/basic-dialog/e-handle.gif); - border:0; - background-position:right; - margin-right:0; -} -.x-dlg div.x-resizable-handle-south{ - background-image:url(../images/default/sizer/s-handle-dark.gif); - border:0; - height:6px; -} -.x-dlg div.x-resizable-handle-west{ - background-image:url(../images/default/basic-dialog/e-handle.gif); - border:0; - background-position:1px; -} -.x-dlg div.x-resizable-handle-north{ - background-image:url(../images/default/s.gif); - border:0; -} -.x-dlg div.x-resizable-handle-northeast, .xtheme-gray .x-dlg div.x-resizable-handle-northeast{ - background-image:url(../images/default/s.gif); - border:0; -} -.x-dlg div.x-resizable-handle-northwest, .xtheme-gray .x-dlg div.x-resizable-handle-northwest{ - background-image:url(../images/default/s.gif); - border:0; -} -.x-dlg div.x-resizable-handle-southeast{ - background-image:url(../images/default/basic-dialog/se-handle.gif); - background-position: bottom right; - width:8px; - height:8px; - border:0; -} -.x-dlg div.x-resizable-handle-southwest{ - background-image:url(../images/default/sizer/sw-handle-dark.gif); - background-position: top right; - margin-left:1px; - margin-bottom:1px; - border:0; -} - -#x-msg-box .x-dlg-ft .x-btn{ - float:none; - clear:none; - margin:0 3px; -} - -#x-msg-box .x-dlg-bd { - padding:5px; - overflow:hidden !important; - font:normal 13px verdana,tahoma,sans-serif; -} -#x-msg-box .ext-mb-input { - margin-top:4px; - width:95%; -} -#x-msg-box .ext-mb-textarea { - margin-top:4px; - font:normal 13px verdana,tahoma,sans-serif; -} -#x-msg-box .ext-mb-progress-wrap { - margin-top:4px; - border:1px solid #6593cf; -} -#x-msg-box .ext-mb-progress { - height:18px; - background: #e0e8f3 url(../images/default/qtip/bg.gif) repeat-x; -} -#x-msg-box .ext-mb-progress-bar { - height:18px; - overflow:hidden; - width:0; - background:#8BB8F3; - border-top:1px solid #B2D0F7; - border-bottom:1px solid #65A1EF; - border-right:1px solid #65A1EF; -} - -#x-msg-box .x-msg-box-wait { - background: transparent url(../images/default/grid/loading.gif) no-repeat left; - display:block; - width:300px; - padding-left:18px; - line-height:18px; -} \ No newline at end of file diff --git a/lib/web/extjs/resources/css/box.css b/lib/web/extjs/resources/css/box.css deleted file mode 100644 index 08cc343075e88ad3f119a9a2a5933f922423d856..0000000000000000000000000000000000000000 --- a/lib/web/extjs/resources/css/box.css +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -/* - Creates rounded, raised boxes like on the Ext website - the markup isn't pretty: - <div class="x-box-blue"> - <div class="x-box-tl"><div class="x-box-tr"><div class="x-box-tc"></div></div></div> - <div class="x-box-ml"><div class="x-box-mr"><div class="x-box-mc"> - <h3>YOUR TITLE HERE (optional)</h3> - <div>YOUR CONTENT HERE</div> - </div></div></div> - <div class="x-box-bl"><div class="x-box-br"><div class="x-box-bc"></div></div></div> - </div> - */ - -.x-box-tl { - background: transparent url(../images/default/box/corners.gif) no-repeat 0 0; - zoom:1; -} - -.x-box-tc { - height: 8px; - background: transparent url(../images/default/box/tb.gif) repeat-x 0 0; - overflow: hidden; -} - -.x-box-tr { - background: transparent url(../images/default/box/corners.gif) no-repeat right -8px; -} - -.x-box-ml { - background: transparent url(../images/default/box/l.gif) repeat-y 0; - padding-left: 4px; - overflow: hidden; - zoom:1; -} - -.x-box-mc { - background: #eee url(../images/default/box/tb.gif) repeat-x 0 -16px; - padding: 4px 10px; - font-family: "Myriad Pro","Myriad Web","Tahoma","Helvetica","Arial",sans-serif; - color: #393939; - font-size: 12px; -} - -.x-box-mc h3 { - font-size: 14px; - font-weight: bold; - margin: 0 0 4 0; - zoom:1; -} - -.x-box-mr { - background: transparent url(../images/default/box/r.gif) repeat-y right; - padding-right: 4px; - overflow: hidden; -} - -.x-box-bl { - background: transparent url(../images/default/box/corners.gif) no-repeat 0 -16px; - zoom:1; -} - -.x-box-bc { - background: transparent url(../images/default/box/tb.gif) repeat-x 0 -8px; - height: 8px; - overflow: hidden; -} - -.x-box-br { - background: transparent url(../images/default/box/corners.gif) no-repeat right -24px; -} - -.x-box-tl, .x-box-bl { - padding-left: 8px; - overflow: hidden; -} - -.x-box-tr, .x-box-br { - padding-right: 8px; - overflow: hidden; -} - -.x-box-blue .x-box-bl, .x-box-blue .x-box-br, .x-box-blue .x-box-tl, .x-box-blue .x-box-tr { - background-image: url(../images/default/box/corners-blue.gif); -} - -.x-box-blue .x-box-bc, .x-box-blue .x-box-mc, .x-box-blue .x-box-tc { - background-image: url(../images/default/box/tb-blue.gif); -} - -.x-box-blue .x-box-mc { - background-color: #c3daf9; -} - -.x-box-blue .x-box-mc h3 { - color: #17385b; -} - -.x-box-blue .x-box-ml { - background-image: url(../images/default/box/l-blue.gif); -} - -.x-box-blue .x-box-mr { - background-image: url(../images/default/box/r-blue.gif); -} \ No newline at end of file diff --git a/lib/web/extjs/resources/css/button.css b/lib/web/extjs/resources/css/button.css deleted file mode 100644 index 8a0485215e92c28185bbccbd3ed69973e4011a5c..0000000000000000000000000000000000000000 --- a/lib/web/extjs/resources/css/button.css +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-btn{ - font:normal 11px tahoma, verdana, helvetica; - cursor:pointer; - white-space: nowrap; -} -.x-btn button{ - border:0 none; - background:transparent; - font:normal 11px tahoma,verdana,helvetica; - padding-left:3px; - padding-right:3px; - cursor:pointer; - margin:0; - overflow:visible; - width:auto; - -moz-outline:0 none; - outline:0 none; -} -* html .ext-ie .x-btn button { - width:1px; -} -.ext-gecko .x-btn button { - padding-left:0; - padding-right:0; -} -.ext-ie .x-btn button { - padding-top:2px; -} -/* - Predefined css class for buttons with only icon. Add this class (x-btn-icon) and a class with a background-image - to your button for a button with just an icon. - e.g. - .my-class .x-btn-text { background-image: url(foo.gif); } - */ - -.x-btn-icon .x-btn-center .x-btn-text{ - background-position: center; - background-repeat: no-repeat; - height: 16px; - width: 16px; - cursor:pointer; - white-space: nowrap; - padding:0; -} -.x-btn-icon .x-btn-center{ - padding:1px; -} -.x-btn em { - font-style:normal; - font-weight:normal; -} -/* - Button class for icon and text. Add this class (x-btn-text-icon) and a class with a background-image - to your button for both text and icon. -*/ - -.x-btn-text-icon .x-btn-center .x-btn-text{ - background-position: 0 2px; - background-repeat: no-repeat; - padding-left:18px; - padding-top:3px; - padding-bottom:3px; - padding-right:0; -} - -.x-btn-left, .x-btn-right{ - font-size:1px; - line-height:1px; -} -.x-btn-left{ - width:3px; - height:21px; - background:url(../images/default/basic-dialog/btn-sprite.gif) no-repeat 0 0; -} -.x-btn-right{ - width:3px; - height:21px; - background:url(../images/default/basic-dialog/btn-sprite.gif) no-repeat 0 -21px; -} -.x-btn-left i, .x-btn-right i{ - display:block; - width:3px; - overflow:hidden; - font-size:1px; - line-height:1px; -} -.x-btn-center{ - background:url(../images/default/basic-dialog/btn-sprite.gif) repeat-x 0 -42px; - vertical-align: middle; - text-align:center; - padding:0 5px; - cursor:pointer; - white-space:nowrap; -} -.x-btn-over .x-btn-left{ - background-position:0 -63px; -} -.x-btn-over .x-btn-right{ - background-position:0 -84px; -} -.x-btn-over .x-btn-center{ - background-position:0 -105px; -} -.x-btn-click .x-btn-center, .x-btn-menu-active .x-btn-center{ - background-position:0 -126px; -} -.x-btn-disabled *{ - color:gray !important; - cursor:default !important; -} -.x-btn-menu-text-wrap .x-btn-center { - padding:0 3px; -} -.ext-gecko .x-btn-menu-text-wrap .x-btn-center { - padding:0 1px; -} -.x-btn-menu-arrow-wrap .x-btn-center { - padding:0; -} -.x-btn-menu-arrow-wrap .x-btn-center button { - width:12px !important; - height:21px; - padding:0 !important; - display:block; - background:transparent url(../images/default/basic-dialog/btn-arrow.gif) no-repeat left 3px; -} -.x-btn-with-menu .x-btn-center { - padding-right:2px !important; -} -.x-btn-with-menu .x-btn-center em { - display:block; - background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat right 0; - padding-right:10px; -} - -.x-btn-text-icon .x-btn-with-menu .x-btn-center em { - display:block; - background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat right 3px; - padding-right:10px; -} \ No newline at end of file diff --git a/lib/web/extjs/resources/css/combo.css b/lib/web/extjs/resources/css/combo.css deleted file mode 100644 index c4ba95e42a6f91009c01cdfe9076f921aab60f81..0000000000000000000000000000000000000000 --- a/lib/web/extjs/resources/css/combo.css +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-combo-list { - border:1px solid #98c0f4; - background:#ddecfe; - zoom:1; - overflow:hidden; -} -.x-combo-list-inner { - overflow:auto; - background:white; - position:relative; /* for calculating scroll offsets */ - zoom:1; - overflow-x:hidden; -} -.x-combo-list-hd { - font:bold 11px tahoma, arial, helvetica, sans-serif; - color:#15428b; - background-image: url(../images/default/layout/panel-title-light-bg.gif); - border-bottom:1px solid #98c0f4; - padding:3px; -} -.x-resizable-pinned .x-combo-list-inner { - border-bottom:1px solid #98c0f4; -} -.x-combo-list-item { - font:normal 12px tahoma, arial, helvetica, sans-serif; - padding:2px; - border:1px solid #fff; - white-space: nowrap; - overflow:hidden; - text-overflow: ellipsis; -} -.x-combo-list .x-combo-selected{ - background-color: #c3daf9 !important; - cursor:pointer; - border:1px solid #336699; -} -.x-combo-noedit{ - cursor:pointer; -} \ No newline at end of file diff --git a/lib/web/extjs/resources/css/core.css b/lib/web/extjs/resources/css/core.css deleted file mode 100644 index d15fa051476efd1bba0c8d0b5c0a541959828ad6..0000000000000000000000000000000000000000 --- a/lib/web/extjs/resources/css/core.css +++ /dev/null @@ -1,292 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.ext-el-mask { - z-index: 20000; - position: absolute; - top: 0; - left: 0; - -moz-opacity: 0.5; - opacity: .50; - filter: alpha(opacity=50); - background-color: #CCC; - width: 100%; - height: 100%; - zoom: 1; -} -.ext-el-mask-msg { - z-index: 20001; - position: absolute; - top: 0; - left: 0; - border:1px solid #6593cf; - background: #c3daf9 url(../images/default/box/tb-blue.gif) repeat-x 0 -16px; - padding:2px; -} -.ext-el-mask-msg div { - padding:5px 10px 5px 10px; - background: #eee; - border:1px solid #a3bad9; - color:#333; - font:normal 12px tahoma, arial, helvetica, sans-serif; - cursor:wait; -} - -.ext-shim { - position:absolute; - visibility:hidden; - left:0; - top:0; - overflow:hidden; -} -.ext-ie .ext-shim { - filter: alpha(opacity=0); -} - -.x-mask-loading div { - padding:5px 10px 5px 25px; - background: #eee url('../images/default/grid/loading.gif') no-repeat 5px 5px; - line-height: 16px; -} - -/* class for hiding elements without using display:none */ -.x-hidden { - position:absolute; - left:-2000px; - top:-2000px; - visibility:hidden; -} - -.x-masked { - overflow: hidden !important; -} - -.x-masked select, .x-masked object, .x-masked embed { - visibility: hidden; -} - -.x-layer { - visibility: hidden; -} - -.x-unselectable, .x-unselectable * { - -moz-user-select: none; - -khtml-user-select: none; -} - -.x-repaint { - zoom: 1; - background-color: transparent; - -moz-outline: none; -} - -.x-item-disabled { - color: gray; - cursor: default; - opacity: .6; - -moz-opacity: .6; - filter: alpha(opacity=60); -} - -.x-item-disabled * { - color: gray; - cursor: default !important; -} - -.x-splitbar-proxy { - position: absolute; - visibility: hidden; - z-index: 20001; - background: #aaa; - zoom: 1; - line-height: 1px; - font-size: 1px; - overflow: hidden; -} - -.x-splitbar-h, .x-splitbar-proxy-h { - cursor: e-resize; - cursor: col-resize; -} - -.x-splitbar-v, .x-splitbar-proxy-v { - cursor: s-resize; - cursor: row-resize; -} - -.x-color-palette { - width: 150px; - height: 92px; - cursor: pointer; -} - -.x-color-palette a { - border: 1px solid #fff; - float: left; - padding: 2px; - text-decoration: none; - -moz-outline: 0 none; - outline: 0 none; - cursor: pointer; -} - -.x-color-palette a:hover, .x-color-palette a.x-color-palette-sel { - border: 1px solid #8BB8F3; - background: #deecfd; -} - -.x-color-palette em { - display: block; - border: 1px solid #ACA899; -} - -.x-color-palette em span { - cursor: pointer; - display: block; - height: 10px; - line-height: 10px; - width: 10px; -} - -.x-ie-shadow { - display: none; - position: absolute; - overflow: hidden; - left:0; - top:0; - background:#777; - zoom:1; -} - -.x-shadow { - display: none; - position: absolute; - overflow: hidden; - left:0; - top:0; -} - -.x-shadow * { - overflow: hidden; -} - -.x-shadow * { - padding: 0; - border: 0; - margin: 0; - clear: none; - zoom: 1; -} - -/* top bottom */ -.x-shadow .xstc, .x-shadow .xsbc { - height: 6px; - float: left; -} - -/* corners */ -.x-shadow .xstl, .x-shadow .xstr, .x-shadow .xsbl, .x-shadow .xsbr { - width: 6px; - height: 6px; - float: left; -} - -/* sides */ -.x-shadow .xsc { - width: 100%; -} - -.x-shadow .xsml, .x-shadow .xsmr { - width: 6px; - float: left; - height: 100%; -} - -.x-shadow .xsmc { - float: left; - height: 100%; - background: transparent url(../images/default/shadow-c.png); -} - -.x-shadow .xst, .x-shadow .xsb { - height: 6px; - overflow: hidden; - width: 100%; -} - -.x-shadow .xsml { - background: transparent url(../images/default/shadow-lr.png) repeat-y 0 0; -} - -.x-shadow .xsmr { - background: transparent url(../images/default/shadow-lr.png) repeat-y -6px 0; -} - -.x-shadow .xstl { - background: transparent url(../images/default/shadow.png) no-repeat 0 0; -} - -.x-shadow .xstc { - background: transparent url(../images/default/shadow.png) repeat-x 0 -30px; -} - -.x-shadow .xstr { - background: transparent url(../images/default/shadow.png) repeat-x 0 -18px; -} - -.x-shadow .xsbl { - background: transparent url(../images/default/shadow.png) no-repeat 0 -12px; -} - -.x-shadow .xsbc { - background: transparent url(../images/default/shadow.png) repeat-x 0 -36px; -} - -.x-shadow .xsbr { - background: transparent url(../images/default/shadow.png) repeat-x 0 -6px; -} - -.loading-indicator { - font-size: 11px; - background-image: url('../images/default/grid/loading.gif'); - background-repeat: no-repeat; - background-position: left; - padding-left: 20px; - line-height: 16px; - margin: 3px; -} - -.x-text-resize { - position: absolute; - left: -1000px; - top: -1000px; - visibility: hidden; - zoom: 1; -} - -.x-drag-overlay { - width: 100%; - height: 100%; - display: none; - position: absolute; - left: 0; - top: 0; - background: white; - z-index: 20000; - -moz-opacity: 0; - opacity: 0; - filter: alpha(opacity=0); -} - -.x-clear { - clear:both; - height:0; - overflow:hidden; - line-height:0; - font-size:0; -} diff --git a/lib/web/extjs/resources/css/date-picker.css b/lib/web/extjs/resources/css/date-picker.css deleted file mode 100644 index 3dddabb8ba530881af271542b1659bc1b3f8c713..0000000000000000000000000000000000000000 --- a/lib/web/extjs/resources/css/date-picker.css +++ /dev/null @@ -1,246 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-date-picker { - border: 1px solid #1b376c; - border-top:0 none; - background:#fff; - position:relative; -} -.x-date-picker a { - -moz-outline:0 none; - outline:0 none; -} -.x-date-inner, .x-date-inner td, .x-date-inner th{ - border-collapse:separate; -} -.x-date-middle,.x-date-left,.x-date-right { - background: url(../images/default/basic-dialog/hd-sprite.gif) repeat-x 0 -83px; - color:#FFF; - font:bold 11px "sans serif", tahoma, verdana, helvetica; - overflow:hidden; -} - -.x-date-middle .x-btn-left,.x-date-middle .x-btn-center,.x-date-middle .x-btn-right{ - background:transparent !important; - vertical-align:middle; -} -.x-date-middle .x-btn .x-btn-text { - color:#fff; -} -.x-date-middle .x-btn-with-menu .x-btn-center em { - background:transparent url(../images/default/toolbar/btn-arrow-light.gif) no-repeat right 0; -} -.x-date-right, .x-date-left { - width:18px; -} -.x-date-right{ - text-align:right; -} -.x-date-middle { - padding-top:2px;padding-bottom:2px; -} -.x-date-right a, .x-date-left a{ - display:block; - width:16px; - height:16px; - background-position: center; - background-repeat: no-repeat; - cursor:pointer; - -moz-opacity: 0.6; - opacity:.6; - filter: alpha(opacity=60); -} -.x-date-right a:hover, .x-date-left a:hover{ - -moz-opacity: 1; - opacity:1; - filter: alpha(opacity=100); -} -.x-date-right a { - background-image: url(../images/default/shared/right-btn.gif); - margin-right:2px; - text-decoration:none !important; -} -.x-date-left a{ - background-image: url(../images/default/shared/left-btn.gif); - margin-left:2px; - text-decoration:none !important; -} -table.x-date-inner { - width:100%; - table-layout:fixed; -} -.x-date-inner th { - width:25px; -} -.x-date-inner th { - background: #dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top; - text-align:right !important; - border-bottom: 1px solid #a3bad9; - font:normal 10px arial, helvetica,tahoma,sans-serif; - color:#233d6d; - cursor:default; - padding:0; - border-collapse:separate; -} -.x-date-inner th span { - display:block; - padding:2px; - padding-right:7px; -} -.x-date-inner td { - border: 1px solid #fff; - text-align:right; - padding:0; -} -.x-date-inner a { - padding:2px 5px; - display:block; - font:normal 11px arial, helvetica,tahoma,sans-serif; - text-decoration:none; - color:black; - text-align:right; - zoom:1; -} -.x-date-inner .x-date-active{ - cursor:pointer; - color:black; -} -.x-date-inner .x-date-selected a{ - background: #dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top; - border:1px solid #8db2e3; - padding:1px 4px; -} -.x-date-inner .x-date-today a{ - border: 1px solid darkred; - padding:1px 4px; -} -.x-date-inner .x-date-selected span{ - font-weight:bold; -} -.x-date-inner .x-date-prevday a,.x-date-inner .x-date-nextday a { - color:#aaaaaa; - text-decoration:none !important; -} -.x-date-bottom { - padding:4px; - border-top: 1px solid #a3bad9; - background: #dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top; -} - -.x-date-inner a:hover, .x-date-inner .x-date-disabled a:hover{ - text-decoration:none !important; - color:black; - background: #ddecfe; -} - -.x-date-inner .x-date-disabled a { - cursor:default; - background:#eeeeee; - color:#bbbbbb; -} -.x-date-mmenu{ - background:#eeeeee !important; -} -.x-date-mmenu .x-menu-item { - font-size:10px; - padding:1px 24px 1px 4px; - white-space: nowrap; - color:#000; -} -.x-date-mmenu .x-menu-item .x-menu-item-icon { - width:10px;height:10px;margin-right:5px; - background-position:center -4px !important; -} - -.x-date-mp { - position:absolute; - left:0; - top:0; - background:white; - display:none; -} -.x-date-mp td { - padding:2px; - font:normal 11px arial, helvetica,tahoma,sans-serif; -} -td.x-date-mp-month,td.x-date-mp-year,td.x-date-mp-ybtn { - border: 0 none; - text-align:center; - vertical-align: middle; - width:25%; -} -.x-date-mp-ok { - margin-right:3px; -} -.x-date-mp-btns button { - text-decoration:none; - text-align:center; - text-decoration:none !important; - background:#083772; - color:white; - border:1px solid; - border-color: #3366cc #000055 #000055 #3366cc; - padding:1px 3px 1px; - font:normal 11px arial, helvetica,tahoma,sans-serif; - cursor:pointer; -} -.x-date-mp-btns { - background: #dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top; -} -.x-date-mp-btns td { - border-top: 1px solid #c5d2df; - text-align:center; -} -td.x-date-mp-month a,td.x-date-mp-year a { - display:block; - padding:2px 4px; - text-decoration:none; - text-align:center; - color:#15428b; -} - -td.x-date-mp-month a:hover,td.x-date-mp-year a:hover { - color:#15428b; - text-decoration:none; - cursor:pointer; - background: #ddecfe; -} - -td.x-date-mp-sel a { - padding:1px 3px; - background: #dfecfb url(../images/default/shared/glass-bg.gif) repeat-x left top; - border:1px solid #8db2e3; -} -.x-date-mp-ybtn a { - overflow:hidden; - width:15px; - height:15px; - cursor:pointer; - background:transparent url(../images/default/panel/tool-sprites.gif) no-repeat; - display:block; - margin:0 auto; -} -.x-date-mp-ybtn a.x-date-mp-next { - background-position:0 -120px; -} -.x-date-mp-ybtn a.x-date-mp-next:hover { - background-position:-15px -120px; -} -.x-date-mp-ybtn a.x-date-mp-prev { - background-position:0 -105px; -} -.x-date-mp-ybtn a.x-date-mp-prev:hover { - background-position:-15px -105px; -} -.x-date-mp-ybtn { - text-align:center; -} -td.x-date-mp-sep { - border-right:1px solid #c5d2df; -} \ No newline at end of file diff --git a/lib/web/extjs/resources/css/dd.css b/lib/web/extjs/resources/css/dd.css deleted file mode 100644 index 42ae991ddaa4f453883dfb046da5e3e25d03d68d..0000000000000000000000000000000000000000 --- a/lib/web/extjs/resources/css/dd.css +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-dd-drag-proxy{ - position:absolute; - left:0;top:0; - visibility:hidden; - z-index:15000; -} -.x-dd-drag-ghost{ - color: black; - font: normal 11px arial, helvetica, sans-serif; - -moz-opacity: 0.85; - opacity:.85; - filter: alpha(opacity=85); - border-top:1px solid #dddddd; - border-left:1px solid #dddddd; - border-right:1px solid #bbbbbb; - border-bottom:1px solid #bbbbbb; - padding:3px; - padding-left:20px; - background-color:white; - white-space:nowrap; -} -.x-dd-drag-repair .x-dd-drag-ghost{ - -moz-opacity: 0.4; - opacity:.4; - filter: alpha(opacity=40); - border:0 none; - padding:0; - background-color:transparent; -} -.x-dd-drag-repair .x-dd-drop-icon{ - visibility:hidden; -} -.x-dd-drop-icon{ - position:absolute; - top:3px; - left:3px; - display:block; - width:16px; - height:16px; - background-color:transparent; - background-position: center; - background-repeat: no-repeat; - z-index:1; -} -.x-dd-drop-nodrop .x-dd-drop-icon{ - background-image: url(../images/default/dd/drop-no.gif); -} -.x-dd-drop-ok .x-dd-drop-icon{ - background-image: url(../images/default/dd/drop-yes.gif); -} -.x-dd-drop-ok-add .x-dd-drop-icon{ - background-image: url(../images/default/dd/drop-add.gif); -} \ No newline at end of file diff --git a/lib/web/extjs/resources/css/debug.css b/lib/web/extjs/resources/css/debug.css deleted file mode 100644 index 8bb464f0330468178f321dca1dadf30f3b09f776..0000000000000000000000000000000000000000 --- a/lib/web/extjs/resources/css/debug.css +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -#x-debug-browser .x-tree .x-tree-node a span { - color:#222297; - font-size:12px; - padding-top:2px; - font-family:"courier","courier new"; - line-height:18px; -} -#x-debug-browser .x-tree a i { - color:#FF4545; - font-style:normal; -} -#x-debug-browser .x-tree a em { - color:#999; -} -#x-debug-browser .x-tree .x-tree-node .x-tree-selected a span{ - background:#c3daf9; -} -#x-debug-browser pre, .x-debug-browser pre xmp { - font:normal 11px tahoma, arial, helvetica, sans-serif !important; - white-space: -moz-pre-wrap; - white-space: -pre-wrap; - white-space: -o-pre-wrap; - word-wrap: break-word; -} -#x-debug-browser pre { - display:block; - padding:5px !important; - border-bottom:1px solid #eeeeee !important; -} -#x-debug-browser pre xmp { - padding:0 !important; - margin:0 !important; -} -#x-debug-console .x-layout-panel-center, #x-debug-inspector .x-layout-panel-center { - border-right:1px solid #98c0f4; -} -#x-debug-console textarea { - border: 0 none; - font-size:12px; - font-family:"courier","courier new"; - padding-top:4px; - padding-left:4px; -} -.x-debug-frame { - background:#eeeeee; - border:1px dashed #aaaaaa; -} \ No newline at end of file diff --git a/lib/web/extjs/resources/css/editor.css b/lib/web/extjs/resources/css/editor.css deleted file mode 100644 index 301ee10c751a4b4cd8df7ecb6c390e558e0030a2..0000000000000000000000000000000000000000 --- a/lib/web/extjs/resources/css/editor.css +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-html-editor-wrap { - border:1px solid #a9bfd3; - background:white; -} -.x-html-editor-tb .x-btn-text { - background:transparent url(../images/default/editor/tb-sprite.gif) no-repeat; -} -.x-html-editor-tb .x-edit-bold .x-btn-text { - background-position:0 0; -} -.x-html-editor-tb .x-edit-italic .x-btn-text { - background-position:-16px 0; -} -.x-html-editor-tb .x-edit-underline .x-btn-text { - background-position:-32px 0; -} -.x-html-editor-tb .x-edit-forecolor .x-btn-text { - background-position:-160px 0; -} -.x-html-editor-tb .x-edit-backcolor .x-btn-text { - background-position:-176px 0; -} -.x-html-editor-tb .x-edit-justifyleft .x-btn-text { - background-position:-112px 0; -} -.x-html-editor-tb .x-edit-justifycenter .x-btn-text { - background-position:-128px 0; -} -.x-html-editor-tb .x-edit-justifyright .x-btn-text { - background-position:-144px 0; -} -.x-html-editor-tb .x-edit-insertorderedlist .x-btn-text { - background-position:-80px 0; -} -.x-html-editor-tb .x-edit-insertunorderedlist .x-btn-text { - background-position:-96px 0; -} -.x-html-editor-tb .x-edit-increasefontsize .x-btn-text { - background-position:-48px 0; -} -.x-html-editor-tb .x-edit-decreasefontsize .x-btn-text { - background-position:-64px 0; -} -.x-html-editor-tb .x-edit-sourceedit .x-btn-text { - background-position:-192px 0; -} - -.x-html-editor-tip .x-tip-bd .x-tip-bd-inner { - padding:5px; - padding-bottom:1px; -} \ No newline at end of file diff --git a/lib/web/extjs/resources/css/form.css b/lib/web/extjs/resources/css/form.css deleted file mode 100644 index 1db9d2b1b2e1bf48cbc94b961263eccbd3ebd51e..0000000000000000000000000000000000000000 --- a/lib/web/extjs/resources/css/form.css +++ /dev/null @@ -1,397 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -/* all fields */ -.x-form-field{ - margin: 0 0 0 0; - font:normal 12px tahoma, arial, helvetica, sans-serif; -} - -/* ---- text fields ---- */ -.x-form-text, textarea.x-form-field{ - padding: 1px 3px; - background:#fff url(../images/default/form/text-bg.gif) repeat-x 0 0; - border: 1px solid #B5B8C8; -} -.x-form-text { - height:22px; - line-height:18px; - vertical-align:middle; -} -.ext-ie .x-form-text { - margin-top:-1px; /* ie bogus margin bug */ - margin-bottom:-1px; - height:22px; /* ie quirks */ - line-height:18px; -} -.ext-strict .x-form-text { - height:18px; -} -.ext-safari .x-form-text { - height:20px; /* safari always same size */ -} -.ext-gecko .x-form-text { - padding-top:2px; /* FF won't center the text vertically */ - padding-bottom:0; -} -/* select boxes */ - -.x-form-select-one { - height:20px; - line-height:18px; - vertical-align:middle; - background-color:#fff; /* opera */ - border: 1px solid #B5B8C8; -} - -/* multi select boxes */ - -/* --- TODO --- */ - -/* checkboxes */ - -/* --- TODO --- */ - -/* radios */ - -/* --- TODO --- */ - - -/* wrapped fields and triggers */ - -.x-form-field-wrap { - position:relative; - zoom:1; - white-space: nowrap; -} - -.x-editor .x-form-check-wrap { - background:#fff; -} -.x-form-field-wrap .x-form-trigger{ - width:17px; - height:21px; - border:0; - background:transparent url(../images/default/form/trigger.gif) no-repeat 0 0; - cursor:pointer; - border-bottom: 1px solid #B5B8C8; - position:absolute; - top:0; -} -.ext-safari .x-form-field-wrap .x-form-trigger{ - height:19px; /* safari doesn't allow height adjustments to the fields, so adjust trigger */ -} - -.x-form-field-wrap .x-form-clear-trigger{ - background-image: url(../images/default/form/clear-trigger.gif); - cursor:pointer; -} -.x-form-field-wrap .x-form-search-trigger{ - background-image: url(../images/default/form/search-trigger.gif); - cursor:pointer; -} -.ext-safari .x-form-field-wrap .x-form-trigger{ - right:0; -} -.x-form-field-wrap .x-form-twin-triggers{ - -} -.x-form-field-wrap .x-form-twin-triggers .x-form-trigger{ - position:static; - top:auto; - vertical-align:top; -} - - -.x-form-field-wrap .x-form-trigger-over{ - background-position:-17px 0; -} -.x-form-field-wrap .x-form-trigger-click{ - background-position:-34px 0; -} - -.x-trigger-wrap-focus .x-form-trigger{ - background-position:-51px 0; -} -.x-trigger-wrap-focus .x-form-trigger-over{ - background-position:-68px 0; -} -.x-trigger-wrap-focus .x-form-trigger-click{ - background-position:-85px 0; -} -.x-trigger-wrap-focus .x-form-trigger{ - border-bottom: 1px solid #7eadd9; -} - -.x-item-disabled .x-form-trigger-over{ - background-position:0 0 !important; - border-bottom: 1px solid #B5B8C8; -} -.x-item-disabled .x-form-trigger-click{ - background-position:0 0 !important; - border-bottom: 1px solid #B5B8C8; -} - -/* field focus style */ -.x-form-focus, textarea.x-form-focus{ - border: 1px solid #7eadd9; -} - -/* invalid fields */ -.x-form-invalid, textarea.x-form-invalid{ - background:#fff url(../images/default/grid/invalid_line.gif) repeat-x bottom; - border: 1px solid #dd7870; -} -.ext-safari .x-form-invalid{ - background-color:#ffeeee; - border: 1px solid #ff7870; -} - -/* editors */ - -.x-editor { - visibility:hidden; - padding:0; - margin:0; -} -.x-form-check-wrap { - line-height:18px; -} -.ext-ie .x-form-check-wrap input { - width:15px; - height:15px; -} -.x-editor .x-form-check-wrap { - padding:3px; -} -.x-editor .x-form-checkbox { - height:13px; - border: 0 none; -} -/* If you override the default field font above, you would need to change this font as well */ -.x-form-grow-sizer { - font:normal 12px tahoma, arial, helvetica, sans-serif; - left: -10000px; - padding: 8px 3px; - position: absolute; - visibility:hidden; - top: -10000px; - white-space: pre-wrap; - white-space: -moz-pre-wrap; - white-space: -pre-wrap; - white-space: -o-pre-wrap; - word-wrap: break-word; - zoom:1; -} -.x-form-grow-sizer p { - margin:0 !important; - border:0 none !important; - padding:0 !important; -} -/* Form Items CSS */ - -.x-form-item { - font:normal 12px tahoma, arial, helvetica, sans-serif; - display:block; - margin-bottom:4px; -} - -.x-form-item label { - display:block; - float:left; - width:100px; - padding:3px; - padding-left:0; - clear:left; - z-index:2; - position:relative; -} - -.x-form-element { - padding-left:105px; - position:relative; -} - -.x-form-invalid-msg { - color:#ee0000; - padding:2px; - padding-left:18px; - font:normal 11px tahoma, arial, helvetica, sans-serif; - background: transparent url(../images/default/shared/warning.gif) no-repeat 0 2px; - line-height:16px; - width:200px; -} - -.x-form-label-right label { - text-align:right; -} - -.x-form-label-top .x-form-item label { - width:auto; - float:none; - clear:none; - display:inline; - margin-bottom:4px; - position:static; -} -.x-form-label-top .x-form-element { - padding-left:0; - padding-top:4px; -} -.x-form-label-top .x-form-item { - padding-bottom:4px; -} -.x-form fieldset { - border:1px solid #B5B8C8; - padding:10px 10px 5px 10px; - margin-bottom:10px; -} -.x-form fieldset legend { - font:bold 11px tahoma, arial, helvetica, sans-serif; - color:#15428b; -} -.ext-ie .x-form fieldset legend { - margin-bottom:10px; -} -.ext-ie .x-form fieldset { - padding-top: 0; -} -.x-form-empty-field { - color:gray; -} -/* Editor small font for grid, toolbar and tree */ -.x-small-editor .x-form-field { - font:normal 11px arial, tahoma, helvetica, sans-serif; -} -.x-small-editor .x-form-text { - height:20px; - line-height:16px; - vertical-align:middle; -} -.ext-ie .x-small-editor .x-form-text { - margin-top:-1px !important; /* ie bogus margin bug */ - margin-bottom:-1px !important; - height:20px !important; /* ie quirks */ - line-height:16px !important; -} -.ext-strict .x-small-editor .x-form-text { - height:16px !important; -} -.ext-safari .x-small-editor .x-form-field { - /* safari text field will not size so needs bigger font */ - font:normal 12px arial, tahoma, helvetica, sans-serif; -} -.ext-ie .x-small-editor .x-form-text { - height:20px; - line-height:16px; -} -.ext-border-box .x-small-editor .x-form-text { - height:20px; -} - -.x-small-editor .x-form-select-one { - height:20px; - line-height:16px; - vertical-align:middle; -} -.x-small-editor .x-form-num-field { - text-align:right; -} -.x-small-editor .x-form-field-wrap .x-form-trigger{ - height:19px; -} - - -.x-form-clear { - clear:both; - height:0; - overflow:hidden; - line-height:0; - font-size:0; -} -.x-form-clear-left { - clear:left; - height:0; - overflow:hidden; - line-height:0; - font-size:0; -} - -.x-form-cb-label { - width:'auto' !important; - float:none !important; - clear:none !important; - display:inline !important; - margin-left:4px; -} - -.x-form-column { - float:left; - padding:0; - margin:0; - width:48%; - overflow:hidden; - zoom:1; -} - -/* buttons */ -.x-form .x-form-btns-ct .x-btn{ - float:right; - clear:none; -} -.x-form .x-form-btns-ct .x-form-btns td { - border:0; - padding:0; -} -.x-form .x-form-btns-ct .x-form-btns-right table{ - float:right; - clear:none; -} -.x-form .x-form-btns-ct .x-form-btns-left table{ - float:left; - clear:none; -} -.x-form .x-form-btns-ct .x-form-btns-center{ - text-align:center; /*ie*/ -} -.x-form .x-form-btns-ct .x-form-btns-center table{ - margin:0 auto; /*everyone else*/ -} -.x-form .x-form-btns-ct table td.x-form-btn-td{ - padding:3px; -} - -.x-form .x-form-btns-ct .x-btn-focus .x-btn-left{ - background-position:0 -147px; -} -.x-form .x-form-btns-ct .x-btn-focus .x-btn-right{ - background-position:0 -168px; -} -.x-form .x-form-btns-ct .x-btn-focus .x-btn-center{ - background-position:0 -189px; -} - -.x-form .x-form-btns-ct .x-btn-click .x-btn-center{ - background-position:0 -126px; -} -.x-form .x-form-btns-ct .x-btn-click .x-btn-right{ - background-position:0 -84px; -} -.x-form .x-form-btns-ct .x-btn-click .x-btn-left{ - background-position:0 -63px; -} -.x-form-invalid-icon { - width:16px; - height:18px; - visibility:hidden; - position:absolute; - left:0; - top:0; - display:block; - background:transparent url(../images/default/form/exclamation.gif) no-repeat 0 2px; -} \ No newline at end of file diff --git a/lib/web/extjs/resources/css/grid.css b/lib/web/extjs/resources/css/grid.css deleted file mode 100644 index f3cc2c16c2677506dba65d023fab8a919216c7c1..0000000000000000000000000000000000000000 --- a/lib/web/extjs/resources/css/grid.css +++ /dev/null @@ -1,295 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -/* Grid2 styles */ -.x-grid { - position:relative; - overflow:hidden; - background-color:#fff; -} -.x-grid-scroller { - overflow:auto; -} -.x-grid-viewport, .x-grid-locked{ - position:absolute; - left:0; top: 0; - z-index:2; - overflow:hidden; - visibility:hidden; -} -.x-grid-cell-inner, .x-grid-hd-inner{ - overflow:hidden; - -o-text-overflow: ellipsis; - text-overflow: ellipsis; -} -.x-grid-hd-row td, .x-grid-row td{ - font:normal 11px arial, tahoma, helvetica, sans-serif; - line-height:13px; - white-space: nowrap; - vertical-align: top; - -moz-outline: none; - -moz-user-focus: normal; -} -.x-grid-hd-row td { - line-height:14px; -} -.x-grid-col { - border-right: 1px solid #ebebeb; - border-bottom: 1px solid #ebebeb; -} -/* Locked styles */ - -.x-grid-locked .x-grid-body td { - background-color: #FBFDFF; - border-right: 1px solid #deecfd; - border-bottom: 1px solid #deecfd !important; -} -.x-grid-locked .x-grid-body td .x-grid-cell-inner { - border-top:0 none; -} -.x-grid-locked .x-grid-row-alt td{ - background-color: #F5FAFE; -} - -.x-grid-locked .x-grid-header table{ - border-right:1px solid transparent; -} -.x-grid-locked .x-grid-body table{ - border-right:1px solid #c3daf9; -} - -.x-grid-locked .x-grid-body td .x-grid-cell-inner { - -} -.x-grid-row { - cursor: default; -} -.x-grid-row-alt{ - background-color:#f1f1f1; -} -.x-grid-row-over td{ - background-color:#d9e8fb; -} -.x-grid-resize-proxy { - width:3px; - background-color:#cccccc; - cursor: e-resize; - cursor: col-resize; - position:absolute; - top:0; - height:100px; - overflow:hidden; - visibility:hidden; - border:0 none; - z-index:7; -} -.x-grid-focus { - position:absolute; - top:0; - -moz-outline:0 none; - outline:0 none; - -moz-user-select: normal; - -khtml-user-select: normal; -} - -/* header styles */ -.x-grid-header{ - background: #ebeadb url(../images/default/grid/grid-hrow.gif) repeat-x; - overflow:hidden; - position:relative; - cursor:default; - width:100%; -} -.x-grid-hd-row{ - height:22px; -} -.x-grid-hd { - padding-right:1px; -} -.x-grid-hd-over .x-grid-hd-inner { - border-bottom: 1px solid #c3daf9; -} -.x-grid-hd-over .x-grid-hd-text { - background: #fafafa url(../images/default/grid/grid-hrow.gif) repeat-x 0 1px; - padding-bottom:1px; - border-bottom: 1px solid #b3cae9; -} -.x-grid-sort-icon{ - background-repeat: no-repeat; - display: none; - height: 4px; - width: 13px; - margin-left:3px; - vertical-align: middle; -} -.x-grid-header .sort-asc .x-grid-sort-icon { - background-image: url(../images/default/grid/sort_asc.gif); - display: inline; -} -.x-grid-header .sort-desc .x-grid-sort-icon { - background-image: url(../images/default/grid/sort_desc.gif); - display: inline; -} - -/* Body Styles */ -.x-grid-body { - overflow:hidden; - position:relative; - width:100%; - zoom:1; -} - -.x-grid-cell-text,.x-grid-hd-text { - display: block; - padding: 3px 5px 3px 5px; - -moz-user-select: none; - -khtml-user-select: none; - color:black; -} -.x-grid-hd-text { - padding-top:4px; -} -.x-grid-split { - background-image: url(../images/default/grid/grid-split.gif); - background-position: center; - background-repeat: no-repeat; - cursor: e-resize; - cursor: col-resize; - display: block; - font-size: 1px; - height: 16px; - overflow: hidden; - position: absolute; - top: 2px; - width: 6px; - z-index: 3; -} - -.x-grid-hd-text { - color:#15428b; -} -/* Column Reorder DD */ -.x-dd-drag-proxy .x-grid-hd-inner{ - background: #ebeadb url(../images/default/grid/grid-hrow.gif) repeat-x; - height:22px; - width:120px; -} - -.col-move-top, .col-move-bottom{ - width:9px; - height:9px; - position:absolute; - top:0; - line-height:1px; - font-size:1px; - overflow:hidden; - visibility:hidden; - z-index:20000; -} -.col-move-top{ - background:transparent url(../images/default/grid/col-move-top.gif) no-repeat left top; -} -.col-move-bottom{ - background:transparent url(../images/default/grid/col-move-bottom.gif) no-repeat left top; -} - -/* Selection Styles */ -.x-grid-row-selected td, .x-grid-locked .x-grid-row-selected td{ - background-color: #316ac5 !important; - color: white; -} -.x-grid-row-selected span, .x-grid-row-selected b, .x-grid-row-selected div, .x-grid-row-selected strong, .x-grid-row-selected i{ - color: white !important; -} -.x-grid-row-selected .x-grid-cell-text{ - color: white; -} -.x-grid-cell-selected{ - background-color: #316ac5 !important; - color: white; -} -.x-grid-cell-selected span{ - color: white !important; -} -.x-grid-cell-selected .x-grid-cell-text{ - color: white; -} - -.x-grid-locked td.x-grid-row-marker, .x-grid-locked .x-grid-row-selected td.x-grid-row-marker{ - background: #ebeadb url(../images/default/grid/grid-hrow.gif) repeat-x 0 bottom !important; - vertical-align:middle !important; - color:black; - padding:0; - border-top:1px solid white; - border-bottom:none !important; - border-right:1px solid #6fa0df !important; - text-align:center; -} -.x-grid-locked td.x-grid-row-marker div, .x-grid-locked .x-grid-row-selected td.x-grid-row-marker div{ - padding:0 4px; - color:#15428b !important; - text-align:center; -} - -/* dirty cells */ -.x-grid-dirty-cell { - background: transparent url(../images/default/grid/dirty.gif) no-repeat 0 0; -} - -/* Grid Toolbars */ -.x-grid-topbar, .x-grid-bottombar{ - font:normal 11px arial, tahoma, helvetica, sans-serif; - overflow:hidden; - display:none; - zoom:1; - position:relative; -} -.x-grid-topbar .x-toolbar{ - border-right:0 none; -} -.x-grid-bottombar .x-toolbar{ - border-right:0 none; - border-bottom:0 none; - border-top:1px solid #a9bfd3; -} -/* Props Grid Styles */ -.x-props-grid .x-grid-cell-selected .x-grid-cell-text{ - background-color: #316ac5 !important; -} -.x-props-grid .x-grid-col-value .x-grid-cell-text{ - background-color: white; -} -.x-props-grid .x-grid-col-name{ - background-color: #c3daf9; -} -.x-props-grid .x-grid-col-name .x-grid-cell-text{ - background-color: white; - margin-left:10px; -} -.x-props-grid .x-grid-split-value { - visibility:hidden; -} - -/* header menu */ -.xg-hmenu-sort-asc .x-menu-item-icon{ - background-image: url(../images/default/grid/hmenu-asc.gif); -} -.xg-hmenu-sort-desc .x-menu-item-icon{ - background-image: url(../images/default/grid/hmenu-desc.gif); -} -.xg-hmenu-lock .x-menu-item-icon{ - background-image: url(../images/default/grid/hmenu-lock.gif); -} -.xg-hmenu-unlock .x-menu-item-icon{ - background-image: url(../images/default/grid/hmenu-unlock.gif); -} - -/* dd */ -.x-dd-drag-ghost .x-grid-dd-wrap { - padding:1px 3px 3px 1px; -} \ No newline at end of file diff --git a/lib/web/extjs/resources/css/layout.css b/lib/web/extjs/resources/css/layout.css deleted file mode 100644 index 1dc6565b69d308e3f11a8c29e5366a959f4234c6..0000000000000000000000000000000000000000 --- a/lib/web/extjs/resources/css/layout.css +++ /dev/null @@ -1,252 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-layout-container{ - width:100%; - height:100%; - overflow:hidden; - background-color:#c3daf9; -} -.x-layout-container .x-layout-tabs-body{ - border:0 none; -} -.x-layout-collapsed{ - position:absolute; - left:-10000px; - top:-10000px; - visibility:hidden; - background-color:#c3daf9; - width:20px; - height:20px; - overflow:hidden; - border:1px solid #98c0f4; - z-index:20; -} -.ext-border-box .x-layout-collapsed{ - width:22px; - height:22px; -} -.x-layout-collapsed-over{ - cursor:pointer; - background-color:#d9e8fb; -} -.x-layout-collapsed-west .x-layout-collapsed-tools, .x-layout-collapsed-east .x-layout-collapsed-tools{ - position:absolute; - top:0; - left:0; - width:20px; - height:20px; -} -.x-layout-collapsed-north .x-layout-collapsed-tools, .x-layout-collapsed-south .x-layout-collapsed-tools{ - position:absolute; - top:0; - right:0; - width:20px; - height:20px; -} -.x-layout-collapsed .x-layout-tools-button{ - margin:0; -} -.x-layout-collapsed .x-layout-tools-button-inner{ - width:16px; - height:16px; -} -.x-layout-inactive-content{ - position:absolute; - left:-10000px; - top:-10000px; - visibility:hidden; -} -.x-layout-active-content{ - visibility:visible; -} -.x-layout-panel{ - position:absolute;border:1px solid #98c0f4;overflow:hidden;background-color:white; -} -.x-layout-panel-east, .x-layout-panel-west { - z-index:10; -} -.x-layout-panel-north, .x-layout-panel-south { - z-index:11; -} -.x-layout-collapsed-north, .x-layout-collapsed-south, .x-layout-collapsed-east, .x-layout-collapsed-west { - z-index:12; -} -.x-layout-panel-body{ - overflow:hidden; -} -.x-layout-grid-wrapper{ - -} -.x-layout-split{ - position:absolute; - height:5px; - width:5px; - line-height:1px; - font-size:1px; - z-index:3; - background-color:#c3daf9; -} -.x-layout-panel-hd{ - background-image: url(../images/default/layout/panel-title-light-bg.gif); - color: black; - border-bottom:1px solid #98c0f4; - position:relative; -} -.x-layout-panel-hd-text{ - font:normal 11px tahoma, verdana, helvetica; - padding: 4px; - padding-left: 4px; - display:block; - white-space:nowrap; -} -.x-layout-panel-hd-tools{ - position:absolute; - right:0; - top:0; - text-align:right; - padding-top:2px; - padding-right:2px; - width:60px; -} -.x-layout-tools-button{ - z-index:6; - padding:2px; - cursor:pointer; - float:right; -} -.x-layout-tools-button-over{ - padding:1px; - border:1px solid #98c0f4; - background-color:white; -} -.x-layout-tools-button-inner{ - height:12px; - width:12px; - line-height:1px; - font-size:1px; - background-repeat:no-repeat; - background-position:center; -} -.x-layout-close{ - background-image:url(../images/default/layout/panel-close.gif); -} -.x-layout-stick{ - background-image:url(../images/default/layout/stick.gif); -} -.x-layout-collapse-west,.x-layout-expand-east{ - background-image:url(../images/default/layout/collapse.gif); -} -.x-layout-expand-west,.x-layout-collapse-east{ - background-image:url(../images/default/layout/expand.gif); -} -.x-layout-collapse-north,.x-layout-expand-south{ - background-image:url(../images/default/layout/ns-collapse.gif); -} -.x-layout-expand-north,.x-layout-collapse-south{ - background-image:url(../images/default/layout/ns-expand.gif); -} -.x-layout-split-h{ - background-image:url(../images/default/sizer/e-handle.gif); - background-position: left; -} -.x-layout-split-v{ - background-image:url(../images/default/sizer/s-handle.gif); - background-position: top; -} -.x-layout-panel .x-tabs-wrap{ - background:url(../images/default/layout/gradient-bg.gif); -} -.x-layout-panel .x-tabs-body { - background-color:white; - overflow:auto;height:100%; -} -.x-layout-component-panel, .x-layout-nested-layout { - position:relative; - padding:0; - overflow:hidden; - width:200px; - height:200px; -} -.x-layout-nested-layout .x-layout-panel { - border:0 none; -} -.x-layout-nested-layout .x-layout-panel-north { - border-bottom:1px solid #98c0f4; -} -.x-layout-nested-layout .x-layout-panel-south { - border-top:1px solid #98c0f4; -} -.x-layout-nested-layout .x-layout-panel-east { - border-left:1px solid #98c0f4; -} -.x-layout-nested-layout .x-layout-panel-west { - border-right:1px solid #98c0f4; -} - -.x-layout-panel-dragover { - border: 2px solid #6593cf; -} -.x-layout-panel-proxy { - background-image: url(../images/default/layout/gradient-bg.gif); - background-color:#c3daf9; - border:1px dashed #6593cf; - z-index:10001; - overflow:hidden; - position:absolute; - left:0;top:0; -} -.x-layout-slider { - z-index:15; - overflow:hidden; - position:absolute; -} - -.x-scroller-up, .x-scroller-down { - background-color:#c3daf9; - border: 1px solid #6593cf; - border-top-color: #fff; - border-left-color: #fff; - border-right:0 none; - cursor:pointer; - overflow:hidden; - line-height:16px; -} -.x-scroller-down { - border-bottom: 0 none; - border-top: 1px solid #6593cf; -} -.x-scroller-btn-over { - background-color: #d9e8f8; -} -.x-scroller-btn-click { - background-color: #AECEF7; -} -.x-scroller-btn-disabled { - cursor:default; - background-color: #c3daf9; - -moz-opacity: 0.3; - opacity:.30; - filter: alpha(opacity=30); -} - -/* Reader Layout */ - -.x-reader .x-layout-panel-north { - border:0 none; -} -.x-reader .x-layout-panel-center{ - border:0 none; -} -.x-reader .x-layout-nested-layout .x-layout-panel-center{ - border:1px solid #99bbe8; - border-top:0 none; -} -.x-reader .x-layout-nested-layout .x-layout-panel-south{ - border:1px solid #99bbe8; -} \ No newline at end of file diff --git a/lib/web/extjs/resources/css/menu.css b/lib/web/extjs/resources/css/menu.css deleted file mode 100644 index 14b451468a005ef6461741cbabc5060100cf0d40..0000000000000000000000000000000000000000 --- a/lib/web/extjs/resources/css/menu.css +++ /dev/null @@ -1,118 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-menu { - border:1px solid #718bb7; - z-index: 15000; - background: #fff url(../images/default/menu/menu.gif) repeat-y; -} -.ext-ie .x-menu { - zoom:1; - overflow:hidden; -} -.x-menu-list{ - border:1px solid #fff; -} -.x-menu li{ - line-height:100%; -} -.x-menu li.x-menu-sep-li{ - font-size:1px; - line-height:1px; -} -.x-menu-list-item{ - font:normal 11px tahoma,arial, sans-serif; - white-space: nowrap; - -moz-user-select: none; - -khtml-user-select: none; - display:block; - padding:1px; -} -.x-menu-item-arrow{ - background:transparent url(../images/default/menu/menu-parent.gif) no-repeat right; -} -.x-menu-sep { - display:block; - font-size:1px; - line-height:1px; - background:#c3daf9; - margin: 3px 3px 3px 32px; -} -.x-menu-focus { - position:absolute; - left:0; - top:-5px; - width:0; - height:0; - line-height:1px; -} -.x-menu-item { - display:block; - line-height:14px; - padding:3px 21px 3px 3px; - white-space: nowrap; - text-decoration:none; - color:#233d6d; - -moz-outline: 0 none; - outline: 0 none; - cursor:pointer; -} -.x-menu-item-active { - color:#233d6d; - background:#c3daf9; - border:1px solid #8BB8F3; - padding:0; -} -.x-menu-item-icon { - border: 0 none; - height: 16px; - padding: 0; - vertical-align: middle; - width: 16px; - margin: 0 11px 0 0; - background-position:center; -} - -.x-menu-check-item .x-menu-item-icon{ - background: transparent url(../images/default/menu/unchecked.gif) no-repeat center; -} - -.x-menu-item-checked .x-menu-item-icon{ - background-image:url(../images/default/menu/checked.gif); -} -.x-menu-group-item .x-menu-item-icon{ - background: transparent; -} - -.x-menu-item-checked .x-menu-group-item .x-menu-item-icon{ - background: transparent url(../images/default/menu/group-checked.gif) no-repeat center; -} - -.x-menu-plain { - background:#fff; -} -.x-menu-date-item{ - padding:0; -} - -.x-menu .x-color-palette, .x-menu .x-date-picker{ - margin-left:32px; - margin-right:4px; -} -.x-menu .x-date-picker{ - border:1px solid #a3bad9; - margin-top:2px; - margin-bottom:2px; -} -.x-menu-plain .x-color-palette, .x-menu-plain .x-date-picker{ - margin:0; - border:0 none; -} -.x-date-menu { - padding:0 !important; -} diff --git a/lib/web/extjs/resources/css/panel.css b/lib/web/extjs/resources/css/panel.css deleted file mode 100644 index 1058401fa37292c8f956c2149b204d7e1fc3fd78..0000000000000000000000000000000000000000 --- a/lib/web/extjs/resources/css/panel.css +++ /dev/null @@ -1,355 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-panel-header { - overflow:hidden; - zoom:1; - color:#15428b; - font:bold 11px tahoma,arial,verdana,sans-serif; - padding:5px 3px 4px 5px; - border:1px solid #99bbe8; - background: transparent url(../images/default/panel/white-top-bottom.gif) repeat-x 0 -1px; -} - -.x-panel-body { - border:1px solid #99bbe8; - border-top:0 none; - overflow:hidden; - background:white; -} -.x-panel-body-noheader { - border-top:1px solid #99bbe8; -} - -.x-panel-header { - overflow:hidden; - zoom:1; -} -.x-panel-tl .x-panel-header { - color:#15428b; - font:bold 11px tahoma,arial,verdana,sans-serif; - padding:5px 0 4px 0; - border:0 none; - background:transparent; -} -.x-panel-tl .x-panel-icon, .x-window-tl .x-panel-icon { - padding-left:20px !important; - background-repeat:no-repeat; - background-position:0 4px; - zoom:1; -} -.x-panel-inline-icon { - width:16px; - height:16px; - background-repeat:no-repeat; - background-position:0 0; - vertical-align:middle; - margin-right:4px; - margin-top:-1px; - margin-bottom:-1px; -} -.x-panel-tc { - background: transparent url(../images/default/panel/white-top-bottom.gif) repeat-x 0 0; - overflow:hidden; -} -.x-panel-tl { - background: transparent url(../images/default/panel/white-corners-sprite.gif) no-repeat 0 0; - padding-left:6px; - zoom:1; - border-bottom:1px solid #99bbe8; -} -.x-panel-tr { - background: transparent url(../images/default/panel/white-corners-sprite.gif) no-repeat right 0; - padding-right:6px; -} -.x-panel-bc { - background: transparent url(../images/default/panel/white-top-bottom.gif) repeat-x 0 bottom; - zoom:1; -} -.x-panel-bc .x-panel-footer { - padding-bottom:1px; - zoom:1; -} - -.x-panel-nofooter .x-panel-bc { - height:1px; -} -.x-panel-bl { - background: transparent url(../images/default/panel/white-corners-sprite.gif) no-repeat 0 bottom; - padding-left:1px; - zoom:1; -} -.x-panel-br { - background: transparent url(../images/default/panel/white-corners-sprite.gif) no-repeat right bottom; - padding-right:1px; - zoom:1; -} -.x-panel-mc { - border:0 none; - padding:0; - margin:0; - font: normal 11px tahoma,arial,helvetica,sans-serif; - background:white; -} -.x-panel-mc .x-panel-body { - background:transparent; - border:0 none; -} -.x-panel-ml { - background: #fff url(../images/default/panel/white-left-right.gif) repeat-y 0 0; - padding-left:1px; - zoom:1; -} -.x-panel-mr { - background: transparent url(../images/default/panel/white-left-right.gif) repeat-y right 0; - padding-right:1px; - zoom:1; -} -.x-panel-blue .x-panel-tl, .x-panel-blue .x-panel-tr, .x-panel-blue .x-panel-bl, .x-panel-blue .x-panel-br { - background-image:url(../images/default/panel/corners-sprite.gif); -} -.x-panel-blue .x-panel-tc, .x-panel-blue .x-panel-bc { - background-image:url(../images/default/panel/top-bottom.gif); -} -.x-panel-blue .x-panel-ml, .x-panel-blue .x-panel-mr { - background-image:url(../images/default/panel/left-right.gif); -} -.x-panel-blue .x-panel-mc{ - padding-top:6px; - background:#dfe8f6; -} - -.x-panel-blue .x-panel-tl { - padding-left:6px; -} -.x-panel-blue .x-panel-tr { - padding-right:6px; -} -.x-panel-blue .x-panel-bc .x-panel-footer { - padding-bottom:6px; -} -.x-panel-blue .x-panel-nofooter .x-panel-bc { - height:6px; -} -.x-panel-blue .x-panel-bl { - padding-left:6px; -} -.x-panel-blue .x-panel-br { - padding-right:6px; -} - -.x-panel-blue .x-panel-ml { - padding-left:6px; -} -.x-panel-blue .x-panel-mr { - padding-right:6px; -} - -.x-panel-bwrap { - overflow:hidden; -} -.x-panel-body { - overflow:hidden; -} - -.x-panel-collapsed .x-resizable-handle{ - display:none; -} - -/* Tools */ -.x-tool { - overflow:hidden; - width:15px; - height:15px; - float:right; - cursor:pointer; - background:transparent url(../images/default/panel/tool-sprites.gif) no-repeat; - margin-left:2px; -} - - -/* expand / collapse tools */ -.x-tool-toggle { - background-position:0 -60px; -} -.x-tool-toggle-over { - background-position:-15px -60px; -} -.x-panel-collapsed .x-tool-toggle { - background-position:0 -75px; -} -.x-panel-collapsed .x-tool-toggle-over { - background-position:-15px -75px; -} - -.x-tool-close { - background-position:0 -0; -} -.x-tool-close-over { - background-position:-15px 0; -} - -.x-tool-minimize { - background-position:0 -15px; -} -.x-tool-minimize-over { - background-position:-15px -15px; -} - -.x-tool-maximize { - background-position:0 -30px; -} -.x-tool-maximize-over { - background-position:-15px -30px; -} - -.x-tool-restore { - background-position:0 -45px; -} -.x-tool-restore-over { - background-position:-15px -45px; -} - -.x-tool-gear { - background-position:0 -90px; -} -.x-tool-gear-over { - background-position:-15px -90px; -} - -.x-tool-pin { - background-position:0 -135px; -} -.x-tool-pin-over { - background-position:-15px -135px; -} -.x-tool-unpin { - background-position:0 -150px; -} -.x-tool-unpin-over { - background-position:-15px -150px; -} -.x-tool-right { - background-position:0 -165px; -} -.x-tool-right-over { - background-position:-15px -165px; -} -.x-tool-left { - background-position:0 -180px; -} -.x-tool-left-over { - background-position:-15px -180px; -} -.x-tool-up { - background-position:0 -210px; -} -.x-tool-up-over { - background-position:-15px -210px; -} -.x-tool-down { - background-position:0 -195px; -} -.x-tool-down-over { - background-position:-15px -195px; -} -.x-tool-refresh { - background-position:0 -225px; -} -.x-tool-refresh-over { - background-position:-15px -225px; -} -/* Ghosting */ -.x-panel-ghost { - background:#cbddf3; - z-index:12000; - overflow:hidden; - position:absolute; - left:0;top:0; - opacity:.65; - -moz-opacity:.65; - filter:alpha(opacity=65); -} - -.x-panel-ghost ul { - margin:0; - padding:0; - overflow:hidden; - font-size:0; - line-height:0; - border:1px solid #84a0c4; - border-top:0 none; - display:block; -} - -.x-panel-ghost * { - cursor:move !important; -} - - -/* Buttons */ - -.x-panel-btns-ct { - padding:5px; -} - -.x-panel-btns-ct .x-btn{ - float:right; - clear:none; -} -.x-panel-btns-ct .x-panel-btns td { - border:0; - padding:0; -} -.x-panel-btns-ct .x-panel-btns-right table{ - float:right; - clear:none; -} -.x-panel-btns-ct .x-panel-btns-left table{ - float:left; - clear:none; -} -.x-panel-btns-ct .x-panel-btns-center{ - text-align:center; /*ie*/ -} -.x-panel-btns-ct .x-panel-btns-center table{ - margin:0 auto; /*everyone else*/ -} -.x-panel-btns-ct table td.x-panel-btn-td{ - padding:3px; -} - -.x-panel-btns-ct .x-btn-focus .x-btn-left{ - background-position:0 -147px; -} -.x-panel-btns-ct .x-btn-focus .x-btn-right{ - background-position:0 -168px; -} -.x-panel-btns-ct .x-btn-focus .x-btn-center{ - background-position:0 -189px; -} - -.x-panel-btns-ct .x-btn-over .x-btn-left{ - background-position:0 -63px; -} -.x-panel-btns-ct .x-btn-over .x-btn-right{ - background-position:0 -84px; -} -.x-panel-btns-ct .x-btn-over .x-btn-center{ - background-position:0 -105px; -} - -.x-panel-btns-ct .x-btn-click .x-btn-center{ - background-position:0 -126px; -} -.x-panel-btns-ct .x-btn-click .x-btn-right{ - background-position:0 -84px; -} -.x-panel-btns-ct .x-btn-click .x-btn-left{ - background-position:0 -63px; -} \ No newline at end of file diff --git a/lib/web/extjs/resources/css/qtips.css b/lib/web/extjs/resources/css/qtips.css deleted file mode 100644 index 3576bedaeeffcce777a64df4bc712bcfeadd7d1c..0000000000000000000000000000000000000000 --- a/lib/web/extjs/resources/css/qtips.css +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-tip{ - position: absolute; - top: 0; - left:0; - visibility: hidden; - z-index: 20000; - border:0 none; -} -.x-tip .x-tip-close{ - background-image: url(../images/default/qtip/close.gif); - height: 15px; - float:right; - width: 15px; - margin:0 0 2px 2px; - cursor:pointer; - display:none; -} -.x-tip .x-tip-top { - background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -12px; - height:6px; - overflow:hidden; -} -.x-tip .x-tip-top-left { - background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 0; - padding-left:6px; - zoom:1; -} -.x-tip .x-tip-top-right { - background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat right 0; - padding-right:6px; - zoom:1; -} -.x-tip .x-tip-ft { - background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -18px; - height:6px; - overflow:hidden; -} -.x-tip .x-tip-ft-left { - background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -6px; - padding-left:6px; - zoom:1; -} -.x-tip .x-tip-ft-right { - background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat right -6px; - padding-right:6px; - zoom:1; -} -.x-tip .x-tip-bd { - border:0 none; - font: normal 11px tahoma,arial,helvetica,sans-serif; -} -.x-tip .x-tip-bd-left { - background: #fff url(../images/default/qtip/tip-sprite.gif) no-repeat 0 -24px; - padding-left:6px; - zoom:1; -} -.x-tip .x-tip-bd-right { - background: transparent url(../images/default/qtip/tip-sprite.gif) no-repeat right -24px; - padding-right:6px; - zoom:1; -} - -.x-tip h3 { - font: bold 11px tahoma,arial,helvetica,sans-serif; - margin:0; - padding:2px 0; - color:#444; -} -.x-tip .x-tip-bd-inner { - font: normal 11px tahoma,arial,helvetica,sans-serif; - margin:0 !important; - line-height:14px; - color:#444; - padding:0; - float:left; -} - - -.x-form-invalid-tip { -} - -.x-form-invalid-tip .x-tip-top { - background-image: url(../images/default/form/error-tip-corners.gif); -} -.x-form-invalid-tip .x-tip-top-left { - background-image: url(../images/default/form/error-tip-corners.gif); -} -.x-form-invalid-tip .x-tip-top-right { - background-image: url(../images/default/form/error-tip-corners.gif); -} -.x-form-invalid-tip .x-tip-ft { - background-image: url(../images/default/form/error-tip-corners.gif); -} -.x-form-invalid-tip .x-tip-ft-left { - background-image: url(../images/default/form/error-tip-corners.gif); -} -.x-form-invalid-tip .x-tip-ft-right { - background-image: url(../images/default/form/error-tip-corners.gif); -} -.x-form-invalid-tip .x-tip-bd-left { - background-image: url(../images/default/form/error-tip-corners.gif); -} -.x-form-invalid-tip .x-tip-bd-right { - background-image: url(../images/default/form/error-tip-corners.gif); -} -.x-form-invalid-tip .x-tip-bd .x-tip-bd-inner { - padding-left:24px; - background:transparent url(../images/default/form/exclamation.gif) no-repeat 2px 2px; -} -.x-form-invalid-tip .x-tip-bd-inner { - padding:2px; -} \ No newline at end of file diff --git a/lib/web/extjs/resources/css/reset-min.css b/lib/web/extjs/resources/css/reset-min.css deleted file mode 100644 index a64bb8c354ee89a1cbfdb02da68d0ed6896763f6..0000000000000000000000000000000000000000 --- a/lib/web/extjs/resources/css/reset-min.css +++ /dev/null @@ -1,9 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -html,body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,p,blockquote,th,td{margin:0;padding:0;}img,body,html{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}ol,ul {list-style:none;}caption,th {text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;}q:before,q:after{content:'';} \ No newline at end of file diff --git a/lib/web/extjs/resources/css/resizable.css b/lib/web/extjs/resources/css/resizable.css deleted file mode 100644 index f4741f669c4bc5ca012ecb6361c56880ff751db6..0000000000000000000000000000000000000000 --- a/lib/web/extjs/resources/css/resizable.css +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-resizable-handle { - position:absolute; - z-index:100; - /* ie needs these */ - font-size:1px; - line-height:6px; - overflow:hidden; - background:white; - filter:alpha(opacity=0); - opacity:0; - zoom:1; -} -.x-resizable-handle-east{ - width:6px; - cursor:e-resize; - right:0; - top:0; - height:100%; -} -.ext-ie .x-resizable-handle-east { - margin-right:-1px; /*IE rounding error*/ -} -.x-resizable-handle-south{ - width:100%; - cursor:s-resize; - left:0; - bottom:0; - height:6px; -} -.ext-ie .x-resizable-handle-south { - margin-bottom:-1px; /*IE rounding error*/ -} -.x-resizable-handle-west{ - width:6px; - cursor:w-resize; - left:0; - top:0; - height:100%; -} -.x-resizable-handle-north{ - width:100%; - cursor:n-resize; - left:0; - top:0; - height:6px; -} -.x-resizable-handle-southeast{ - width:6px; - cursor:se-resize; - right:0; - bottom:0; - height:6px; - z-index:101; -} -.x-resizable-handle-northwest{ - width:6px; - cursor:nw-resize; - left:0; - top:0; - height:6px; - z-index:101; -} -.x-resizable-handle-northeast{ - width:6px; - cursor:ne-resize; - right:0; - top:0; - height:6px; - z-index:101; -} -.x-resizable-handle-southwest{ - width:6px; - cursor:sw-resize; - left:0; - bottom:0; - height:6px; - z-index:101; -} -.x-resizable-over .x-resizable-handle, .x-resizable-pinned .x-resizable-handle{ - filter:alpha(opacity=100); - opacity:1; -} -.x-resizable-over .x-resizable-handle-east, .x-resizable-pinned .x-resizable-handle-east{ - background:url(../images/default/sizer/e-handle.gif); - background-position: left; -} -.x-resizable-over .x-resizable-handle-west, .x-resizable-pinned .x-resizable-handle-west{ - background:url(../images/default/sizer/e-handle.gif); - background-position: left; -} -.x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-south{ - background:url(../images/default/sizer/s-handle.gif); - background-position: top; -} -.x-resizable-over .x-resizable-handle-north, .x-resizable-pinned .x-resizable-handle-north{ - background:url(../images/default/sizer/s-handle.gif); - background-position: top; -} -.x-resizable-over .x-resizable-handle-southeast, .x-resizable-pinned .x-resizable-handle-southeast{ - background:url(../images/default/sizer/se-handle.gif); - background-position: top left; -} -.x-resizable-over .x-resizable-handle-northwest, .x-resizable-pinned .x-resizable-handle-northwest{ - background:url(../images/default/sizer/nw-handle.gif); - background-position:bottom right; -} -.x-resizable-over .x-resizable-handle-northeast, .x-resizable-pinned .x-resizable-handle-northeast{ - background:url(../images/default/sizer/ne-handle.gif); - background-position: bottom left; -} -.x-resizable-over .x-resizable-handle-southwest, .x-resizable-pinned .x-resizable-handle-southwest{ - background:url(../images/default/sizer/sw-handle.gif); - background-position: top right; -} -.x-resizable-proxy{ - border: 1px dashed #6593cf; - position:absolute; - overflow:hidden; - display:none; - left:0;top:0; - z-index:50000; -} -.x-resizable-overlay{ - width:100%; - height:100%; - display:none; - position:absolute; - left:0; - top:0; - background:white; - z-index:200000; - -moz-opacity: 0; - opacity:0; - filter: alpha(opacity=0); -} diff --git a/lib/web/extjs/resources/css/tabs.css b/lib/web/extjs/resources/css/tabs.css deleted file mode 100644 index bb229354513895622b5e09182404fad67a6e89cd..0000000000000000000000000000000000000000 --- a/lib/web/extjs/resources/css/tabs.css +++ /dev/null @@ -1,134 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-tabs-wrap { - border-bottom:1px solid #6593cf; - padding-top:2px; -} -.x-tabs-strip-wrap{ - width:100%; -} -.x-tabs-wrap table{ - position:relative; - top:0; left:0; -} -.x-tabs-strip td{ - padding:0; - padding-left:2px; -} -.x-tabs-strip a, .x-tabs-strip span, .x-tabs-strip em { - display:block; -} -.x-tabs-strip a { - text-decoration:none !important; - -moz-outline: none; - outline: none; - cursor:pointer; -} -.x-tabs-strip .x-tabs-text { - font:bold 11px tahoma,arial,helvetica; - color:#666; - overflow:hidden; - white-space: nowrap; - cursor:pointer; - text-overflow: ellipsis; -} -.x-tabs-strip .on .x-tabs-text { - cursor:default; - color:#083772; -} -.x-tabs-strip .disabled .x-tabs-text { - cursor:default; - color:#aaaaaa; -} -.x-tabs-strip .x-tabs-inner { - padding:4px 10px; -} - -.x-tabs-strip .on .x-tabs-right { - background: url(../images/default/tabs/tab-sprite.gif) no-repeat right 0; -} -.x-tabs-strip .on .x-tabs-left { - background: url(../images/default/tabs/tab-sprite.gif) no-repeat 0 -100px; -} -.x-tabs-strip .x-tabs-right { - background: url(../images/default/tabs/tab-sprite.gif) no-repeat right -50px; -} -.x-tabs-strip .x-tabs-left { - background: url(../images/default/tabs/tab-sprite.gif) no-repeat 0 -150px; -} - -.x-tabs-strip a { - position:relative; - top:1px; left:0; -} -.x-tabs-strip .on a { - position:relative; -} -.x-tabs-strip .on .x-tabs-inner { - padding-bottom:5px; -} -/** closable tabs */ -.x-tabs-strip .x-tabs-closable .x-tabs-inner{ - padding-right:22px; - position:relative; -} -.x-tabs-strip .x-tabs-closable .close-icon{ - line-height: 1px; - font-size:1px; - background-image:url(../images/default/layout/tab-close.gif); - display:block; - position:absolute; - right:5px;top:4px; - width:11px;height:11px; - cursor:pointer; -} -.x-tabs-strip .on .close-icon{ - background-image:url(../images/default/layout/tab-close-on.gif); -} -.x-tabs-strip .x-tabs-closable .close-over{ - background-image:url(../images/default/layout/tab-close-on.gif); -} -.x-tabs-body { - border:1px solid #6593cf; - border-top:0 none; -} -.x-tabs-bottom .x-tabs-wrap { - border-top:1px solid #6593cf; - border-bottom:0 none; - padding-top:0; - padding-bottom:2px; -} -.x-tabs-bottom .x-tabs-strip .x-tabs-right { - background: url(../images/default/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom left; -} -.x-tabs-bottom .x-tabs-strip .x-tabs-left { - background: url(../images/default/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom right; -} -.x-tabs-bottom .x-tabs-strip .on .x-tabs-right { - background: url(../images/default/tabs/tab-btm-right-bg.gif) no-repeat bottom left; -} -.x-tabs-bottom .x-tabs-strip .on .x-tabs-left { - background: url(../images/default/tabs/tab-btm-left-bg.gif) no-repeat bottom right; -} -.x-tabs-bottom .x-tabs-strip a { - position:relative; - top:0; left:0; -} -.x-tabs-bottom .x-tabs-strip .on a { - margin-top:-1px; -} -.x-tabs-bottom .x-tabs-strip .on .x-tabs-inner { - padding-top:5px; -} - -.x-tabs-bottom .x-tabs-body { - border:1px solid #6593cf; - border-bottom:0 none; -} - diff --git a/lib/web/extjs/resources/css/toolbar.css b/lib/web/extjs/resources/css/toolbar.css deleted file mode 100644 index b8530b8bb7efc9ca9dc737eecdf5c88aba0feba1..0000000000000000000000000000000000000000 --- a/lib/web/extjs/resources/css/toolbar.css +++ /dev/null @@ -1,174 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-toolbar{ - border-top: 1px solid #eaf0f7; - border-bottom: 1px solid #a9bfd3; - display: block; - padding:2px; - background:#d0def0 url(../images/default/layout/panel-title-light-bg.gif) repeat-x; - position:relative; -} -.x-toolbar .x-item-disabled .x-btn-icon { - opacity: .35; - -moz-opacity: .35; - filter: alpha(opacity=35); -} -.x-toolbar td { - vertical-align:middle; -} -.mso .x-toolbar, .x-grid-mso .x-toolbar{ - border: 0 none; - background: url(../images/default/grid/mso-hd.gif); -} -.x-toolbar td, .x-toolbar span, .x-toolbar input, .x-toolbar div, .x-toolbar select, .x-toolbar label{ - white-space: nowrap; - font:normal 11px tahoma, arial, helvetica, sans-serif; -} -.x-toolbar .x-item-disabled { - color:gray; - cursor:default; - opacity:.6; - -moz-opacity:.6; - filter:alpha(opacity=60); -} -.x-toolbar .x-item-disabled * { - color:gray; - cursor:default; -} -.x-toolbar .x-btn-left{ - background:none; -} -.x-toolbar .x-btn-right{ - background:none; -} -.x-toolbar .x-btn-center{ - background:none; - padding:0 0; -} - -.x-toolbar .x-btn-menu-text-wrap .x-btn-center button{ - padding-right:2px; -} -.ext-gecko .x-toolbar .x-btn-menu-text-wrap .x-btn-center button{ - padding-right:0; -} -.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button{ - padding:0 2px; -} -.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button { - width:12px; - background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat 0 3px; -} -.x-toolbar .x-btn-text-icon .x-btn-menu-arrow-wrap .x-btn-center button { - width:12px; - background:transparent url(../images/default/toolbar/btn-arrow.gif) no-repeat 0 3px; -} -.x-toolbar .x-btn-over .x-btn-menu-arrow-wrap .x-btn-center button { - background-position: 0 -47px; -} -.x-toolbar .x-btn-over .x-btn-left{ - background:url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 0; -} -.x-toolbar .x-btn-over .x-btn-right{ - background:url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -21px; -} -.x-toolbar .x-btn-over .x-btn-center{ - background:url(../images/default/toolbar/tb-btn-sprite.gif) repeat-x 0 -42px; -} - -.x-toolbar .x-btn-click .x-btn-left, .x-toolbar .x-btn-pressed .x-btn-left, .x-toolbar .x-btn-menu-active .x-btn-left{ - background:url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -63px; -} -.x-toolbar .x-btn-click .x-btn-right, .x-toolbar .x-btn-pressed .x-btn-right, .x-toolbar .x-btn-menu-active .x-btn-right{ - background:url(../images/default/toolbar/tb-btn-sprite.gif) no-repeat 0 -84px; -} -.x-toolbar .x-btn-click .x-btn-center, .x-toolbar .x-btn-pressed .x-btn-center, .x-toolbar .x-btn-menu-active .x-btn-center{ - background:url(../images/default/toolbar/tb-btn-sprite.gif) repeat-x 0 -105px; -} - -.x-toolbar .x-btn-with-menu .x-btn-center em{ - padding-right:8px; -} - -.x-toolbar .ytb-text{ - padding:2px; -} -.x-toolbar .ytb-sep { - background-image: url(../images/default/grid/grid-split.gif); - background-position: center; - background-repeat: no-repeat; - display: block; - font-size: 1px; - height: 16px; - width:4px; - overflow: hidden; - cursor:default; - margin: 0 2px 0; - border:0; -} -.x-toolbar .ytb-spacer { - width:2px; -} -.mso .x-toolbar .ytb-sep, .x-grid-mso .x-toolbar .ytb-sep{ - background-image: url(../images/default/grid/grid-blue-split.gif); -} - -/* IE refuses to respect the negative margins in the toolbar */ -.ext-ie .x-toolbar .x-form-field-wrap { - padding-bottom:1px; -} -.ext-ie .x-toolbar .x-form-field-wrap .x-form-trigger { - top:1px; -} -.ext-ie .x-toolbar .x-form-field-wrap .x-form-twin-triggers img { - margin-top:1px; -} - -/* Paging Toolbar */ - -.x-grid-page-number{ - width:24px; - height:14px; -} -.x-grid-page-first .x-btn-text{ - background-image: url(../images/default/grid/page-first.gif); -} -.x-grid-loading .x-btn-text{ - background-image: url(../images/default/grid/done.gif); -} -.x-grid-page-last .x-btn-text{ - background-image: url(../images/default/grid/page-last.gif); -} -.x-grid-page-next .x-btn-text{ - background-image: url(../images/default/grid/page-next.gif); -} -.x-grid-page-prev .x-btn-text{ - background-image: url(../images/default/grid/page-prev.gif); -} -.x-item-disabled .x-grid-loading .x-btn-text{ - background-image: url(../images/default/grid/loading.gif); -} -.x-item-disabled .x-grid-page-first .x-btn-text{ - background-image: url(../images/default/grid/page-first-disabled.gif); -} -.x-item-disabled .x-grid-page-last .x-btn-text{ - background-image: url(../images/default/grid/page-last-disabled.gif); -} -.x-item-disabled .x-grid-page-next .x-btn-text{ - background-image: url(../images/default/grid/page-next-disabled.gif); -} -.x-item-disabled .x-grid-page-prev .x-btn-text{ - background-image: url(../images/default/grid/page-prev-disabled.gif); -} -.x-paging-info { - position:absolute; - top:8px; - right: 8px; - color:#15428b; -} diff --git a/lib/web/extjs/resources/css/tree.css b/lib/web/extjs/resources/css/tree.css deleted file mode 100644 index 47c4dc264f47a51a8181555eb187bf1a83e1c1cd..0000000000000000000000000000000000000000 --- a/lib/web/extjs/resources/css/tree.css +++ /dev/null @@ -1,179 +0,0 @@ -/* - * Ext JS Library 1.1 Beta 1 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.x-tree-icon, .x-tree-ec-icon, .x-tree-elbow-line, .x-tree-elbow, .x-tree-elbow-end, .x-tree-elbow-plus, .x-tree-elbow-minus, .x-tree-elbow-end-plus, .x-tree-elbow-end-minus{ - border: 0 none; - height: 18px; - margin: 0; - padding: 0; - vertical-align: middle; - width: 16px; - background-repeat: no-repeat; -} -.x-tree-node-collapsed .x-tree-node-icon, .x-tree-node-expanded .x-tree-node-icon, .x-tree-node-leaf .x-tree-node-icon{ - border: 0 none; - height: 18px; - margin: 0; - padding: 0; - vertical-align: middle; - width: 16px; - background-position:center; - background-repeat: no-repeat; -} - -/* some default icons for leaf/folder */ -.x-tree-node-collapsed .x-tree-node-icon{ - background-image:url(../images/default/tree/folder.gif); -} -.x-tree-node-expanded .x-tree-node-icon{ - background-image:url(../images/default/tree/folder-open.gif); -} -.x-tree-node-leaf .x-tree-node-icon{ - background-image:url(../images/default/tree/leaf.gif); -} - -.x-tree-noicon .x-tree-node-icon{ - width:0; height:0; -} -/* loading icon */ -.x-tree-node-loading .x-tree-node-icon{ - background-image:url(../images/default/tree/loading.gif) !important; -} -.x-tree-node-loading a span{ - font-style: italic; - color:#444444; -} - -/* Line styles */ -.x-tree-lines .x-tree-elbow{ - background-image:url(../images/default/tree/elbow.gif); -} -.x-tree-lines .x-tree-elbow-plus{ - background-image:url(../images/default/tree/elbow-plus.gif); -} -.x-tree-lines .x-tree-elbow-minus{ - background-image:url(../images/default/tree/elbow-minus.gif); -} -.x-tree-lines .x-tree-elbow-end{ - background-image:url(../images/default/tree/elbow-end.gif); -} -.x-tree-lines .x-tree-elbow-end-plus{ - background-image:url(../images/default/tree/elbow-end-plus.gif); -} -.x-tree-lines .x-tree-elbow-end-minus{ - background-image:url(../images/default/tree/elbow-end-minus.gif); -} -.x-tree-lines .x-tree-elbow-line{ - background-image:url(../images/default/tree/elbow-line.gif); -} - -/* No line styles */ -.x-tree-no-lines .x-tree-elbow{ - background:transparent; -} -.x-tree-no-lines .x-tree-elbow-plus{ - background-image:url(../images/default/tree/elbow-plus-nl.gif); -} -.x-tree-no-lines .x-tree-elbow-minus{ - background-image:url(../images/default/tree/elbow-minus-nl.gif); -} -.x-tree-no-lines .x-tree-elbow-end{ - background:transparent; -} -.x-tree-no-lines .x-tree-elbow-end-plus{ - background-image:url(../images/default/tree/elbow-end-plus-nl.gif); -} -.x-tree-no-lines .x-tree-elbow-end-minus{ - background-image:url(../images/default/tree/elbow-end-minus-nl.gif); -} -.x-tree-no-lines .x-tree-elbow-line{ - background:transparent; -} - -.x-tree-elbow-plus, .x-tree-elbow-minus, .x-tree-elbow-end-plus, .x-tree-elbow-end-minus{ - cursor:pointer; -} -.ext-ie ul.x-tree-node-ct{ - font-size:0; - line-height:0; -} -.x-tree-node{ - color: black; - font: normal 11px arial, tahoma, helvetica, sans-serif; - white-space: nowrap; -} -.x-tree-node a, .x-dd-drag-ghost a{ - text-decoration:none; - color:black; - -khtml-user-select:none; - -moz-user-select:none; - -kthml-user-focus:normal; - -moz-user-focus:normal; - -moz-outline: 0 none; - outline:0 none; -} -.x-tree-node a span, .x-dd-drag-ghost a span{ - text-decoration:none; - color:black; - padding:1px 3px 1px 2px; -} -.x-tree-node .x-tree-node-disabled a span{ - color:gray !important; -} -.x-tree-node .x-tree-node-disabled .x-tree-node-icon{ - -moz-opacity: 0.5; - opacity:.5; - filter: alpha(opacity=50); -} -.x-tree-node .x-tree-node-inline-icon{ - background:transparent; -} -.x-tree-node a:hover, .x-dd-drag-ghost a:hover{ - text-decoration:none; -} -.x-tree-node div.x-tree-drag-insert-below{ - border-bottom:1px dotted #3366cc; -} -.x-tree-node div.x-tree-drag-insert-above{ - border-top:1px dotted #3366cc; -} -.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below{ - border-bottom:0 none; -} -.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above{ - border-top:0 none; -} -.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-below a{ - border-bottom:2px solid #3366cc; -} -.x-tree-dd-underline .x-tree-node div.x-tree-drag-insert-above a{ - border-top:2px solid #3366cc; -} -.x-tree-node .x-tree-drag-append a span{ - background:#dddddd; - border:1px dotted gray; -} -.x-tree-node .x-tree-selected a span{ - background:#3366cc; - color:white; -} -.x-dd-drag-ghost .x-tree-node-indent, .x-dd-drag-ghost .x-tree-ec-icon{ - display:none !important; -} -.x-tree-drop-ok-append .x-dd-drop-icon{ - background-image: url(../images/default/tree/drop-add.gif); -} -.x-tree-drop-ok-above .x-dd-drop-icon{ - background-image: url(../images/default/tree/drop-over.gif); -} -.x-tree-drop-ok-below .x-dd-drop-icon{ - background-image: url(../images/default/tree/drop-under.gif); -} -.x-tree-drop-ok-between .x-dd-drop-icon{ - background-image: url(../images/default/tree/drop-between.gif); -} diff --git a/lib/web/extjs/resources/css/ytheme-aero.css b/lib/web/extjs/resources/css/ytheme-aero.css deleted file mode 100644 index 7e4da4814e6ebafb97572c685810c94f1a8217cb..0000000000000000000000000000000000000000 --- a/lib/web/extjs/resources/css/ytheme-aero.css +++ /dev/null @@ -1,582 +0,0 @@ -/* - * Ext JS Library 1.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -/* menus */ - -.x-menu { - border:1px solid; - border-color: #96b9e6 #8BB8F3 #8BB8F3 #96b9e6; - z-index: 15000; - zoom:1; - background:#c3daf9; - padding:2px; - -} -.x-menu-list{ - background: #fafafa; - border:1px solid #fff; - border-color:#a3bad9; -} -.x-menu-item-icon { - margin-right:8px; -} -.x-menu-sep { - margin-left:3px; -} -.x-menu-item-active { - color:#233d6d; - background:#c3daf9; - border:1px solid #fff; - padding:0; -} - -.x-date-mmenu .x-menu-list{ - padding:0; -} -.x-date-mmenu .x-menu-list{ - border:0 none; -} - -.x-menu .x-color-palette, .x-menu .x-date-picker{ - margin-left:26px; -} -.x-menu-plain .x-color-palette, .x-menu-plain .x-date-picker{ - margin:0; - border:0 none; -} -/** -* Tabs -*/ -.x-tabs-wrap, .x-layout-panel .x-tabs-top .x-tabs-wrap { - background:#deecfd; - border:1px solid #8db2e3; - padding-bottom:2px; - padding-top:0; -} -.x-tabs-strip-wrap{ - padding-top:1px; - background:#cedff5 url(../images/aero/tabs/tab-strip-bg.gif) repeat-x bottom; - border-bottom:1px solid #8db2e3; -} -.x-tabs-strip .x-tabs-text { - color:#15428b; - font:bold 11px tahoma,arial,verdana,sans-serif; -} -.x-tabs-strip .on .x-tabs-text { - cursor:default; - color:#15428b; -} -.x-tabs-top .x-tabs-strip .on .x-tabs-right { - background: url(../images/aero/tabs/tab-sprite.gif) no-repeat right 0; -} -.x-tabs-top .x-tabs-strip .on .x-tabs-left,.x-tabs-top .x-tabs-strip .on a:hover .x-tabs-left{ - background: url(../images/aero/tabs/tab-sprite.gif) no-repeat 0 -100px; -} -.x-tabs-top .x-tabs-strip .x-tabs-right { - background:transparent url(../images/aero/tabs/tab-sprite.gif) no-repeat right -50px; -} -.x-tabs-top .x-tabs-strip .x-tabs-left { - background:transparent url(../images/aero/tabs/tab-sprite.gif) no-repeat 0 -150px; -} -.x-tabs-top .x-tabs-body { - border:1px solid #8db2e3; - border-top:0 none; -} -.x-tabs-bottom .x-tabs-wrap, .x-layout-panel .x-tabs-bottom .x-tabs-wrap { - background:#deecfd; - border:1px solid #8db2e3; - padding-top:2px; - padding-bottom:0; -} -.x-tabs-bottom .x-tabs-strip-wrap{ - padding-top:0; - padding-bottom:1px; - background:#cedff5 url(../images/aero/tabs/tab-strip-btm-bg.gif) repeat-x top; - border-top:1px solid #8db2e3; - border-bottom:0 none; -} -.x-tabs-bottom .x-tabs-strip .x-tabs-right { - background:transparent url(../images/aero/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom right; -} -.x-tabs-bottom .x-tabs-strip .x-tabs-left { - background:transparent url(../images/aero/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom left; -} -.x-tabs-bottom .x-tabs-strip .on .x-tabs-right,.x-tabs-bottom .x-tabs-strip .on a:hover { - background: url(../images/aero/tabs/tab-btm-right-bg.gif) no-repeat bottom left; -} -.x-tabs-bottom .x-tabs-strip .on .x-tabs-left,.x-tabs-bottom .x-tabs-strip .on a:hover .x-tabs-left { - background: url(../images/aero/tabs/tab-btm-left-bg.gif) no-repeat bottom right; -} -.x-tabs-bottom .x-tabs-body { - border:1px solid #8db2e3; - border-bottom:0 none; -} -/* -* Basic-Dialog -*/ -.x-dlg-proxy { - background:#C7DFFC; - border:1px solid #A5CCF9; -} -.x-dlg-shadow{ - background:#cccccc; - opacity:.3; - -moz-opacity:.3; - filter: alpha(opacity=30); -} -.x-dlg { - background:transparent; -} -.x-dlg .x-dlg-hd { - background: url(../images/aero/basic-dialog/hd-sprite.gif) repeat-x 0 -82px; - background-color:#aabaca; - color:#15428b; - zoom:1; - padding-top:7px; -} -.x-dlg .x-dlg-hd-left { - opacity:.85; - -moz-opacity:.85; - filter:alpha(opacity=80); - background: url(../images/aero/basic-dialog/hd-sprite.gif) no-repeat 0 -41px; - zoom:1; -} -.x-dlg-modal .x-dlg-hd-left { - opacity:.75; - -moz-opacity:.75; - filter:alpha(opacity=70); -} - -.x-dlg .x-dlg-hd-right { - background: url(../images/aero/basic-dialog/hd-sprite.gif) no-repeat right 0; - zoom:1; -} -.x-dlg .x-dlg-dlg-body{ - padding:0 0 0; - position:absolute; - top:24px;left:0; - z-index:1; - border:0 none; - background:transparent; -} -.x-dlg .x-dlg-bd{ - background:#fff; - border:1px solid #96b9e6; -} -.x-dlg .x-dlg-ft{ - border:0 none; - background:transparent; - padding-bottom:8px; -} -.x-dlg .x-dlg-bg{ - filter:alpha(opacity=80); - opacity:.85; - -moz-opacity:.85; - zoom:1; -} -.x-dlg-modal .x-dlg-bg { - opacity:.75; - -moz-opacity:.75; - filter:alpha(opacity=70); -} -.x-dlg .x-dlg-bg-center { - padding: 2px 7px 7px 7px; - background:transparent url(../images/aero/basic-dialog/bg-center.gif) repeat-x bottom; - zoom:1; -} -.x-dlg .x-dlg-bg-left{ - padding-left:7px; - background:transparent url(../images/aero/basic-dialog/bg-left.gif) no-repeat bottom left; - zoom:1; -} -.x-dlg .x-dlg-bg-right{ - padding-right:7px; - background:transparent url(../images/aero/basic-dialog/bg-right.gif) no-repeat bottom right; - zoom:1; -} -.x-dlg-auto-tabs .x-dlg-dlg-body, .x-dlg-auto-layout .x-dlg-dlg-body{ - background:transparent; - border:0 none; -} -.x-dlg-auto-tabs .x-dlg-bd, .x-dlg-auto-layout .x-dlg-bd{ - background:#fff; - border:1px solid #e9f3f5; -} -.x-dlg-auto-tabs .x-tabs-top .x-tabs-body,.x-dlg-auto-tabs .x-tabs-bottom .x-tabs-body{ - border-color:#8db2e3; -} -.x-dlg-auto-tabs .x-tabs-top .x-tabs-wrap,.x-dlg-auto-tabs .x-tabs-bottom .x-tabs-wrap{ - border-color:#8db2e3; -} -.x-dlg .x-dlg-toolbox { - width:50px; - height:20px; - right:5px; - top:5px; -} -.x-dlg .x-dlg-close, .x-dlg .x-dlg-collapse { - width:21px; - height:20px; - margin:0; -} -.x-dlg .x-dlg-close { - background-image:url(../images/aero/basic-dialog/aero-close.gif); -} -.x-dlg .x-dlg-collapse { - background-image:url(../images/aero/basic-dialog/collapse.gif); -} -.x-dlg-collapsed { - border-bottom:1px solid #96b9e6; -} -.x-dlg .x-dlg-close-over { - background-image:url(../images/aero/basic-dialog/aero-close-over.gif); -} -.x-dlg .x-dlg-collapse-over { - background-image:url(../images/aero/basic-dialog/collapse-over.gif); -} -.x-dlg-collapsed .x-dlg-collapse { - background-image:url(../images/aero/basic-dialog/expand.gif); -} -.x-dlg-collapsed .x-dlg-collapse-over { - background-image:url(../images/aero/basic-dialog/expand-over.gif); -} -.x-dlg div.x-resizable-handle-east{ - background-image:url(../images/aero/s.gif); - border:0 none; -} -.x-dlg div.x-resizable-handle-south{ - background-image:url(../images/aero/s.gif); - border:0 none; -} -.x-dlg div.x-resizable-handle-west{ - background-image:url(../images/aero/s.gif); - border:0 none; -} -.x-dlg div.x-resizable-handle-southeast{ - background-image:url(../images/aero/basic-dialog/se-handle.gif); - background-position: bottom right; - width:9px; - height:9px; - border:0; - right:2px; - bottom:2px; -} -.x-dlg div.x-resizable-handle-southwest{ - background-image:url(../images/aero/s.gif); - background-position: top right; - margin-left:1px; - margin-bottom:1px; - border:0; -} -.x-dlg div.x-resizable-handle-north{ - background-image:url(../images/aero/s.gif); - border:0 none; -} - -#x-msg-box .x-dlg-bd{ - background:#CFE0F5; - border:0 none; -} -body.x-masked #x-msg-box .x-dlg-bd, body.x-body-masked #x-msg-box .x-dlg-bd{ - background:#c4d2e3; - border:0 none; -} -/* BorderLayout */ - -.x-layout-container{ - background:#deecfd; -} -.x-layout-collapsed{ - background-color:#deecfd; - border:1px solid #99bbe8; -} -.x-layout-collapsed-over{ - background-color:#F5F9FE; -} -.x-layout-panel{ - border:1px solid #99bbe8; -} -.x-layout-nested-layout .x-layout-panel { - border:0 none; -} -.x-layout-split{ - background-color:#deecfd; -} -.x-layout-panel-hd{ - background: #ebeadb url(../images/aero/grid/grid-hrow.gif) repeat-x; - border-bottom:1px solid #99bbe8; -} -.x-layout-panel-hd-text { - color:#15428b; - font:bold 11px tahoma,arial,verdana,sans-serif; -} - -.x-layout-split-h{ - background:#deecfd; -} -.x-layout-split-v{ - background:#deecfd; -} -.x-layout-panel .x-tabs-top .x-tabs-wrap{ - border:0 none; - border-bottom:1px solid #8db2e3; -} -.x-layout-panel .x-tabs-bottom .x-tabs-wrap{ - border:0 none; - border-top:1px solid #8db2e3; -} - -.x-layout-nested-layout .x-layout-panel-north { - border-bottom:1px solid #99bbe8; -} -.x-layout-nested-layout .x-layout-panel-south { - border-top:1px solid #99bbe8; -} -.x-layout-nested-layout .x-layout-panel-east { - border-left:1px solid #99bbe8; -} -.x-layout-nested-layout .x-layout-panel-west { - border-right:1px solid #99bbe8; -} -.x-layout-panel-dragover { - border: 2px solid #99bbe8; -} -.x-layout-panel-proxy { - background-image: url(../images/aero/layout/gradient-bg.gif); - background-color:#f3f2e7; - border:1px dashed #99bbe8; -} - -.x-layout-container .x-layout-tabs-body{ - border:0 none; -} -/** Resizable */ - -.x-resizable-proxy{ - border: 1px dashed #3b5a82; -} - -/* grid */ -.x-grid-hd-text { - color:#15428b; - font-weight:bold; -} -.x-grid-locked .x-grid-body td { - background: #FBFDFF; - border-right: 1px solid #deecfd; - border-bottom: 1px solid #deecfd !important; -} -.x-grid-locked .x-grid-body td .x-grid-cell-inner { - border-top:0 none; -} -.x-grid-locked .x-grid-row-alt td{ - background: #F5FAFE; -} -.x-grid-locked .x-grid-row-selected td{ - color: #fff !important; - background-color: #316ac5 !important; -} -.x-grid-hd{ - border-bottom:0; - background:none; -} -.x-grid-hd-row{ - height:auto; -} -.x-grid-hd-over { - border-bottom:0 none; -} -.x-grid-hd-over .x-grid-hd-body{ - background:none; - border-bottom:0 none; -} -.x-grid-hd-over .x-grid-hd-body{ - background-color: transparent; - border-bottom:0; -} -.x-grid-split { - background-image: url(../images/aero/grid/grid-blue-split.gif); -} -.x-grid-header{ - background: url(../images/aero/grid/grid-hrow.gif); - border:0 none; - border-bottom:1px solid #6f99cf; -} -.x-grid-row-alt{ - background-color: #f5f5f5; -} -.x-grid-row-over td, .x-grid-locked .x-grid-row-over td{ - background-color:#d9e8fb; -} -.x-grid-col { - border-right: 1px solid #eee; - border-bottom: 1px solid #eee; -} -.x-grid-header .x-grid-hd-inner { - padding-bottom: 1px; -} -.x-grid-header .x-grid-hd-text { - padding-bottom: 3px; -} -.x-grid-hd-over .x-grid-hd-inner { - border-bottom: 1px solid #316ac5; - padding-bottom: 0; -} -.x-grid-hd-over .x-grid-hd-text { - background: #d5e4f5; - border-bottom: 1px solid #fff; - padding-bottom: 2px; -} -.x-grid-header .sort-asc .x-grid-hd-inner, .x-grid-header .sort-desc .x-grid-hd-inner { - border-bottom: 1px solid #316ac5; - padding-bottom: 0; -} -.x-grid-header .sort-asc .x-grid-hd-text, .x-grid-header .sort-desc .x-grid-hd-text { - border-bottom: 0 none; - padding-bottom: 3px; -} -.x-grid-header .sort-asc .x-grid-sort-icon { - background-image: url(../images/aero/grid/sort_asc.gif); -} -.x-grid-header .sort-desc .x-grid-sort-icon { - background-image: url(../images/aero/grid/sort_desc.gif); -} -.x-dd-drag-proxy .x-grid-hd-inner{ - background: #ebeadb url(../images/aero/grid/grid-hrow.gif) repeat-x; - height:22px; - width:120px; -} - - -.x-grid-locked td.x-grid-row-marker, .x-grid-locked .x-grid-row-selected td.x-grid-row-marker{ - background: #ebeadb url(../images/aero/grid/grid-hrow.gif) repeat-x 0 0 !important; - vertical-align:middle !important; - color:black; - padding:0; - border-top:1px solid white; - border-bottom:1px solid #6f99cf !important; - border-right:1px solid #6f99cf !important; - text-align:center; -} -.x-grid-locked td.x-grid-row-marker div, .x-grid-locked .x-grid-row-selected td.x-grid-row-marker div{ - padding:0 4px; - color:#15428b !important; - text-align:center; -} - -/** Toolbar */ -.x-toolbar{ - padding:2px 2px 2px 2px; - background:#d0def0 url(../images/default/toolbar/tb-bg.gif) repeat-x; -} - -.x-toolbar .ytb-sep{ - background-image: url(../images/aero/grid/grid-blue-split.gif); -} - -.x-toolbar .x-btn-over .x-btn-left{ - background:url(../images/aero/toolbar/tb-btn-sprite.gif) no-repeat 0 0; -} -.x-toolbar .x-btn-over .x-btn-right{ - background:url(../images/aero/toolbar/tb-btn-sprite.gif) no-repeat 0 -21px; -} -.x-toolbar .x-btn-over .x-btn-center{ - background:url(../images/aero/toolbar/tb-btn-sprite.gif) repeat-x 0 -42px; -} - -.x-toolbar .x-btn-click .x-btn-left, .x-toolbar .x-btn-pressed .x-btn-left, .x-toolbar .x-btn-menu-active .x-btn-left{ - background:url(../images/aero/toolbar/tb-btn-sprite.gif) no-repeat 0 -63px; -} -.x-toolbar .x-btn-click .x-btn-right, .x-toolbar .x-btn-pressed .x-btn-right, .x-toolbar .x-btn-menu-active .x-btn-right{ - background:url(../images/aero/toolbar/tb-btn-sprite.gif) no-repeat 0 -84px; -} -.x-toolbar .x-btn-click .x-btn-center, .x-toolbar .x-btn-pressed .x-btn-center, .x-toolbar .x-btn-menu-active .x-btn-center{ - background:url(../images/aero/toolbar/tb-btn-sprite.gif) repeat-x 0 -105px; -} - - - - -/*************** TABS 2 *****************/ - - -/** -* Tabs -*/ -.x-tab-panel-header, .x-tab-panel-footer { - background:#deecfd; - border:1px solid #8db2e3; -} -.x-tab-panel-header { - background:#deecfd; - border:1px solid #8db2e3; - padding-bottom:2px; -} -.x-tab-panel-footer { - background:#deecfd; - border:1px solid #8db2e3; - padding-top:2px; -} - -.x-tab-strip-top{ - padding-top:1px; - background:#cedff5 url(../images/aero/tabs/tab-strip-bg.gif) repeat-x bottom; - border-bottom:1px solid #8db2e3; -} -.x-tab-strip-bottom{ - padding-bottom:1px; - background:#cedff5 url(../images/aero/tabs/tab-strip-btm-bg.gif) repeat-x top; - border-top:1px solid #8db2e3; - border-bottom:0 none; -} - -.x-tab-strip .x-tab-strip-text { - color:#15428b; - font:bold 11px tahoma,arial,verdana,sans-serif; -} -.x-tab-strip .x-tab-strip-active .x-tab-text { - cursor:default; - color:#15428b; -} - -.x-tab-strip-top .x-tab-strip-active .x-tab-right { - background: url(../images/aero/tabs/tab-sprite.gif) no-repeat right 0; -} -.x-tab-strip-top .x-tab-strip-active .x-tab-left { - background: url(../images/aero/tabs/tab-sprite.gif) no-repeat 0 -100px; -} -.x-tab-strip-top .x-tab-right { - background: url(../images/aero/tabs/tab-sprite.gif) no-repeat right -50px; -} -.x-tab-strip-top .x-tab-left { - background: url(../images/aero/tabs/tab-sprite.gif) no-repeat 0 -150px; -} - - -.x-tab-strip-bottom .x-tab-right { - background: url(../images/aero/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom left; -} -.x-tab-strip-bottom .x-tab-left { - background: url(../images/aero/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom right; -} -.x-tab-strip-bottom .x-tab-strip-active .x-tab-right { - background: url(../images/aero/tabs/tab-btm-right-bg.gif) no-repeat bottom left; -} -.x-tab-strip-bottom .x-tab-strip-active .x-tab-left { - background: url(../images/aero/tabs/tab-btm-left-bg.gif) no-repeat bottom right; -} - -.x-tab-panel-body-top { - border:1px solid #8db2e3; - border-top:0 none; -} - -.x-tab-panel-body-bottom { - border:1px solid #8db2e3; - border-bottom:0 none; -} \ No newline at end of file diff --git a/lib/web/extjs/resources/css/ytheme-galdaka.css b/lib/web/extjs/resources/css/ytheme-galdaka.css deleted file mode 100644 index dd0227e0701f8f5c567143ba027b3468ae69c2fc..0000000000000000000000000000000000000000 --- a/lib/web/extjs/resources/css/ytheme-galdaka.css +++ /dev/null @@ -1,533 +0,0 @@ -/*****************************************/ -/*galdaka theme - by Jose Alfonso Dacosta*/ -/*****************************************/ - -/*TABS*/ -.x-tabs-wrap { - border-bottom:1px solid #848284; -} -.x-tabs-strip .x-tabs-text { - font:bold 10px tahoma,arial,helvetica; -} -.x-tabs-strip .on .x-tabs-text { - color:#393939; -} -.x-tabs-strip .on .x-tabs-right { - background: url(../images/galdaka/tabs/tab-sprite.gif) no-repeat right 0; -} -.x-tabs-strip .on .x-tabs-left { - background: url(../images/galdaka/tabs/tab-sprite.gif) no-repeat 0 -100px; -} -.x-tabs-strip .x-tabs-right { - background: url(../images/galdaka/tabs/tab-sprite.gif) no-repeat right -50px; -} -.x-tabs-strip .x-tabs-left { - background: url(../images/galdaka/tabs/tab-sprite.gif) no-repeat 0 -150px; -} -.x-tabs-strip .x-tabs-closable .close-icon{ - background-image:url(../images/galdaka/layout/tab-close.gif); -} -.x-tabs-strip .on .close-icon{ - background-image:url(../images/galdaka/layout/tab-close.gif); -} -.x-tabs-strip .x-tabs-closable .close-over{ - background-image:url(../images/galdaka/layout/tab-close-on.gif); -} -.x-tabs-bottom .x-tabs-strip .x-tabs-right { - background: url(../images/galdaka/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom left; -} -.x-tabs-bottom .x-tabs-strip .x-tabs-left { - background: url(../images/galdaka/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom right; -} -.x-tabs-bottom .x-tabs-strip .on .x-tabs-right { - background: url(../images/galdaka/tabs/tab-btm-right-bg.gif) no-repeat bottom left; -} -.x-tabs-bottom .x-tabs-strip .on .x-tabs-left { - background: url(../images/galdaka/tabs/tab-btm-left-bg.gif) no-repeat bottom right; -} -.x-tabs-body { - border-bottom: 0px; - border-left: 0px; - border-right: 0px; -} -.x-tabs-bottom .x-tabs-wrap { - border-top:1px solid #848284; -} - -/*TOOLBAR*/ -.x-toolbar{ - background-color: #f2f2f3; - background: url(../images/galdaka/toolbar/fondoToolbar.gif); - background-repeat: repeat-x; - border: 0px solid #c0c0c0; - height: 20px; -} -.x-toolbar .x-tb-button-over{ - background:#c3d3ed url(../images/galdaka/toolbar/btn-over-bg.gif) repeat-x; - border:1px solid #7A7A7A; - padding:1px 2px; -} -.x-toolbar .x-btn-over .x-btn-left{ - background:url(../images/galdaka/toolbar/tb-btn-sprite.gif) no-repeat 0 0; -} -.x-toolbar .x-btn-over .x-btn-right{ - background:url(../images/galdaka/toolbar/tb-btn-sprite.gif) no-repeat 0 -21px; -} -.x-toolbar .x-btn-over .x-btn-center{ - background:url(../images/galdaka/toolbar/tb-btn-sprite.gif) repeat-x 0 -42px; -} -.x-toolbar .x-btn-click .x-btn-left, .x-toolbar .x-btn-pressed .x-btn-left, .x-toolbar .x-btn-menu-active .x-btn-left{ - background:url(../images/galdaka/toolbar/tb-btn-sprite.gif) no-repeat 0 -63px; -} -.x-toolbar .x-btn-click .x-btn-right, .x-toolbar .x-btn-pressed .x-btn-right, .x-toolbar .x-btn-menu-active .x-btn-right{ - background:url(../images/galdaka/toolbar/tb-btn-sprite.gif) no-repeat 0 -84px; -} -.x-toolbar .x-btn-click .x-btn-center, .x-toolbar .x-btn-pressed .x-btn-center, .x-toolbar .x-btn-menu-active .x-btn-center{ - background:url(../images/galdaka/toolbar/tb-btn-sprite.gif) repeat-x 0 -105px; -} -.x-toolbar .x-btn-menu-arrow-wrap .x-btn-center button { - background:transparent url(../images/galdaka/toolbar/btn-arrow.gif) no-repeat 0 0; -} -.x-toolbar .x-btn-text-icon .x-btn-menu-arrow-wrap .x-btn-center button { - background:transparent url(../images/galdaka/toolbar/btn-arrow.gif) no-repeat 0 3px; -} - -/*PAGING TOOLBAR*/ -.x-grid-page-first .x-btn-text{ - background-image: url(../images/galdaka/grid/page-first.gif); -} -.x-grid-page-last .x-btn-text{ - background-image: url(../images/galdaka/grid/page-last.gif); -} -.x-grid-page-next .x-btn-text{ - background-image: url(../images/galdaka/grid/page-next.gif); -} -.x-grid-page-prev .x-btn-text{ - background-image: url(../images/galdaka/grid/page-prev.gif); -} -.x-paging-info { - color:#000000; -} - -/*GRID*/ -.x-grid-col{ - border-right: 1px solid #f1efe2; - border-bottom: 1px solid #f1efe2; -} -.x-grid-row-alt{ - background: #fffbff; -} -.x-grid-row-over td{ - background: #f1f1f1; -} -.x-grid-header{ - background: #ebeadb url(../images/galdaka/grid/fondoCabeceraHover.gif) repeat-x; -} -.x-grid-hd-over .x-grid-hd-inner { - border-bottom: 1px solid #cccccc; -} -.x-grid-hd-over .x-grid-hd-text { - background: #fafafa url(../images/galdaka/grid/grid-hrow.gif) repeat-x 0 1px; - border-bottom: 1px solid #c0c0c0; -} -.x-grid-hd-text { - color: black; -} -.x-dd-drag-proxy .x-grid-hd-inner{ - background: #ebeadb url(../images/galdaka/grid/grid-hrow.gif) repeat-x; -} -.col-move-top{ - background:transparent url(../images/galdaka/grid/col-move-top.gif) no-repeat left top; -} -.col-move-bottom{ - background:transparent url(../images/galdaka/grid/col-move-bottom.gif) no-repeat left top; -} -.x-grid-row-selected td, .x-grid-locked .x-grid-row-selected td{ - background-color: #e4dce4 !important; -} -.x-grid-row-selected span, .x-grid-row-selected b, .x-grid-row-selected div, .x-grid-row-selected strong, .x-grid-row-selected i{ - color: black !important; -} -.x-grid-row-selected .x-grid-cell-text{ - color: black; -} -.x-grid-cell-selected{ - background-color: #e4dce4 !important; - color: black; -} -.x-grid-cell-selected span{ - color: black !important; -} -.x-grid-cell-selected .x-grid-cell-text{ - color: black; -} -.x-grid-bottombar .x-toolbar{ - border-top:1px solid #c0c0c0; -} - -/*RESIZEABLE*/ -.x-resizable-over .x-resizable-handle-east, .x-resizable-pinned .x-resizable-handle-east{ - background:url(../images/galdaka/sizer/e-handle.gif); - background-position: left; -} -.x-resizable-over .x-resizable-handle-east, .x-resizable-pinned .x-resizable-handle-west{ - background:url(../images/galdaka/sizer/e-handle.gif); - background-position: left; -} -.x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-south{ - background:url(../images/galdaka/sizer/s-handle.gif); - background-position: top; -} -.x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-north{ - background:url(../images/galdaka/sizer/s-handle.gif); - background-position: top; -} -.x-resizable-over .x-resizable-handle-southeast, .x-resizable-pinned .x-resizable-handle-southeast{ - background:url(../images/galdaka/sizer/se-handle.gif); - background-position: top left; -} -.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{ - background:url(../images/galdaka/sizer/nw-handle.gif); - background-position:bottom right; -} -.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{ - background:url(../images/galdaka/sizer/ne-handle.gif); - background-position: bottom left; -} -.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{ - background:url(../images/galdaka/sizer/sw-handle.gif); - background-position: top right; -} -.x-resizable-proxy{ - border: 1px dashed #615e55; -} - -/*LAYOUT*/ -.x-layout-container{ - background-color:#f6f1f3; -} -.x-layout-collapsed{ - background-color:#f6f1f3; - border:1px solid #c0c0c0; -} -.x-layout-collapsed-over{ - background-color:#e7e3e5; -} -.x-layout-panel{ - border:1px solid #c0c0c0; -} -.x-layout-split{ - background-color:#f6f1f3; -} -.x-layout-panel-hd{ - background-image: url(../images/galdaka/layout/panel-title-light-bg.gif); - border-bottom:1px solid #c0c0c0; -} -.x-layout-tools-button-over{ - border:1px solid #c0c0c0; -} -.x-layout-nested-layout .x-layout-panel-north { - border-bottom:1px solid #c0c0c0; -} -.x-layout-nested-layout .x-layout-panel-south { - border-top:1px solid #c0c0c0; -} -.x-layout-nested-layout .x-layout-panel-east { - border-left:1px solid #c0c0c0; -} -.x-layout-nested-layout .x-layout-panel-west { - border-right:1px solid #c0c0c0; -} -.x-layout-split-h{ - background-image:url(../images/galdaka/layout/e-handle.gif); -} -.x-layout-split-v{ - background-image:url(../images/galdaka/layout/s-handle.gif); -} -.x-layout-panel .x-tabs-wrap{ - background:url(../images/galdaka/layout/gradient-bg.gif); -} -.x-layout-close{ - background-image:url(../images/galdaka/layout/panel-close.gif); -} -.x-layout-stick{ - background-image:url(../images/galdaka/layout/stick.gif); -} -.x-layout-collapse-west,.x-layout-expand-east{ - background-image:url(../images/galdaka/layout/collapse.gif); -} -.x-layout-expand-west,.x-layout-collapse-east{ - background-image:url(../images/galdaka/layout/expand.gif); -} -.x-layout-collapse-north,.x-layout-expand-south{ - background-image:url(../images/galdaka/layout/ns-collapse.gif); -} -.x-layout-expand-north,.x-layout-collapse-south{ - background-image:url(../images/galdaka/layout/ns-expand.gif); -} -/*DIALOG*/ -.x-dlg-proxy { - background-image: url(../images/galdaka/basic-dialog/gradient-bg.gif); - background-color:#EAE8D5; - border:1px solid #b3b6b0; -} -.x-dlg-shadow{ - background:#aaaaaa; -} -.x-dlg-proxy .tabset{ - background:url(../images/galdaka/basic-dialog/gradient-bg.gif); -} - -.x-dlg .x-dlg-hd { - background: url(../images/galdaka/basic-dialog/hd-sprite.gif) repeat-x 0px -82px; - background-color:#333333; -} -.x-dlg .x-dlg-hd-left { - background: url(../images/galdaka/basic-dialog/hd-sprite.gif) no-repeat 0px -41px; -} -.x-dlg .x-dlg-hd-right { - background: url(../images/galdaka/basic-dialog/hd-sprite.gif) no-repeat right 0px; -} -.x-dlg .x-dlg-close { - width:19px; - height:19px; - top:-2px; - right:5px; - opacity:.85;-moz-opacity:.85;filter:alpha(opacity=80); - background-image:url(../images/galdaka/basic-dialog/close.gif); - zoom:1; -} -.x-dlg .x-dlg-close-over { - background-image:url(../images/galdaka/basic-dialog/close-over.gif); -} -.x-dlg .x-dlg-collapse { - background-image:url(../images/galdaka/basic-dialog/collapse.gif); -} -.x-dlg .x-dlg-collapse-over { - background-image:url(../images/galdaka/basic-dialog/collapse-over.gif); -} -.x-dlg-collapsed { - border-bottom:1px solid #96b9e6; -} -.x-dlg-collapsed .x-dlg-collapse { - background-image:url(.../images/galdaka/basic-dialog/expand.gif); -} -.x-dlg-collapsed .x-dlg-collapse-over { - background-image:url(../images/galdaka/basic-dialog/expand-over.gif); -} - -.x-dlg .x-dlg-dlg-body{ - background:#efefec; - border:1px solid #b3b6b0; - border-top:0px none; -} -.x-dlg .x-tabs-top .x-ui-ext-tabbody{ - border:1px solid #b3b6b0; - border-top:0px none; -} -.x-dlg .x-tabs-bottom .x-ui-ext-tabbody{ - border:1px solid #b3b6b0; - border-bottom:0px none; -} -.x-dlg .x-layout-container .x-ui-ext-tabbody{ - border:0px none; -} -.x-dlg div.x-resizable-handle-east{ - background-image:url(../images/galdaka/basic-dialog/e-handle.gif); -} -.x-dlg div.x-resizable-handle-south{ - background-image:url(../images/galdaka/basic-dialog/s-handle.gif); -} -.x-dlg div.x-resizable-handle-west{ - background-image:url(../images/galdaka/basic-dialog/e-handle.gif); -} -.x-dlg div.x-resizable-handle-southeast{ - background-image:url(../images/galdaka/basic-dialog/se-handle.gif); -} -.x-dlg div.x-resizable-handle-southwest{ - background-image:url(../images/galdaka/basic-dialog/sw-handle.gif); -} - -/*TREE*/ -.x-tree-node .x-tree-selected a span{ - background: #a8a6a6; -} - -/*MENU*/ -.x-menu { - border-color: #cecece #c0c0c0 #c0c0c0 #cecece; - background: #fff url(../images/galdaka/menu/menu.gif) repeat-y; -} -.x-menu-list-item{ - font:normal 11px Arial, Verdana, Helvetica, sans-serif,tahoma,"Lucida Sans Unicode",arial, sans-serif; -} -.x-menu-sep { - background:#bdbdbd; -} -.x-menu-item { - color:#000000; -} -.x-menu-item-active { - background:#f1f1f1; - border:1px solid #dcdcdc; -} -.x-menu-item-arrow{ - background:transparent url(../images/galdaka/menu/menu-parent.gif) no-repeat right; -} -.x-menu-check-item .x-menu-item-icon{ - background: transparent url(../images/galdaka/menu/unchecked.gif) no-repeat center; -} -.x-menu-item-checked .x-menu-item-icon{ - background-image:url(../images/galdaka/menu/checked.gif); -} -.x-menu-group-item .x-menu-item-icon{ - background: transparent; -} -.x-menu-item-checked .x-menu-group-item .x-menu-item-icon{ - background: transparent url(../images/galdaka/menu/group-checked.gif) no-repeat center; -} - -/*DATE-PICKER*/ -.x-date-middle,.x-date-left,.x-date-right { - background: url(../images/galdaka/basic-dialog/hd-sprite.gif) repeat-x 0 -83px; - font: bold 11px arial, verdana, "sans serif", tahoma, helvetica; -} -.x-date-right a { - background-image: url(../images/galdaka/shared/right-btn.gif); -} -.x-date-left a{ - background-image: url(../images/galdaka/shared/left-btn.gif); -} -.x-date-inner th { - background: #848484; - color: #FFFFFF; -} -.x-date-inner .x-date-selected a{ - background: #f6f6f6; - border: 1px solid #5e5e5e; -} -.x-date-inner .x-date-today a{ - border: 1px solid #dedede; -} -.x-date-bottom { - border-top: 1px solid #848484; - background: #e7e7e7; -} -.x-date-inner a:hover, .x-date-inner .x-date-disabled a:hover{ - background: #F0F0F0; -} - -/*FORM*/ -.x-form-field{ - font:normal 11px arial, verdana, tahoma, arial, helvetica, sans-serif; -} -.x-form-field-wrap .x-form-trigger{ - right: 0px; -} -.x-form-field-wrap .x-form-trigger{ - background:transparent url(../images/galdaka/form/trigger.gif) no-repeat 0 0; -} -.x-form-field-wrap .x-form-date-trigger{ - background:transparent url(../images/galdaka/form/date-trigger.gif) no-repeat 0 0; -} -.x-form-focus{ - border: 1px solid #000000; -} -.x-form-item { - font:normal 11px arial, verdana, tahoma, arial, helvetica, sans-serif; - color: #808594; -} -.x-form fieldset { - border:1px solid #dedede; -} -.x-form fieldset legend { - font: bold 11px verdana, tahoma, arial, helvetica, sans-serif; - color: #606060; -} - -/*COMBOBOX*/ -.x-combo-list { - border:1px solid #b5b8c8; -} -.x-combo-list-item { - font:normal 11px arial, tahoma, arial, helvetica, sans-serif; -} -.x-combo-list .x-combo-selected{ - background-color: #e7e7e7 !important; - border:1px solid #5e5e5e; -} - -/*BOX*/ -.x-box-blue .x-box-mc { - background-color: #e7e7e7; -} - -/*MASK*/ -.ext-el-mask-msg { - border:1px solid #5e5e5e; - background: #eeeeee url(../images/default/box/tb.gif) repeat-x 0 -16px; -} -.ext-el-mask-msg div { - border:1px solid #ccc; - font:bold 10px verdana, arial, tahoma, helvetica, sans-serif; -} - -/*LOADING MASK GRANDE (GEN�RICO PARA FORMULARIOS)*/ -#class .loading-indicator{ - font-size: 11px; - height:15px; -} -.loading-indicator { - background-color: white; - background-image: none; - padding-left:20px; - height:15px; - text-align:left; -} -#loading{ - position:absolute; - left:45%; - top:40%; - border:1px solid #979797; - padding:2px; - background:#c6c6c6; - width:130px; - text-align:center; - z-index:20001; -} -#loading .loading-indicator{ - border:1px solid #dedede; - color:#000000; - font: bold 10px verdana, tahoma,arial,helvetica; - padding:5px; - margin:0; -} - -/*QTIP GENERAL*/ -.x-tip .x-tip-top { - background: transparent url(../images/galdaka/qtip/tip-sprite.gif) no-repeat 0 -12px; -} -.x-tip .x-tip-top-left { - background: transparent url(../images/galdaka/qtip/tip-sprite.gif) no-repeat 0 0; -} -.x-tip .x-tip-top-right { - background: transparent url(../images/galdaka/qtip/tip-sprite.gif) no-repeat right 0; -} -.x-tip .x-tip-ft { - background: transparent url(../images/galdaka/qtip/tip-sprite.gif) no-repeat 0 -18px; -} -.x-tip .x-tip-ft-left { - background: transparent url(../images/galdaka/qtip/tip-sprite.gif) no-repeat 0 -6px; -} -.x-tip .x-tip-ft-right { - background: transparent url(../images/galdaka/qtip/tip-sprite.gif) no-repeat right -6px; -} -.x-tip .x-tip-bd { - font: normal 11px arial, tahoma,arial,helvetica,sans-serif; -} -.x-tip .x-tip-bd-left { - background: #fff url(../images/galdaka/qtip/tip-sprite.gif) no-repeat 0 -24px; -} -.x-tip .x-tip-bd-right { - background: transparent url(../images/galdaka/qtip/tip-sprite.gif) no-repeat right -24px; -} \ No newline at end of file diff --git a/lib/web/extjs/resources/css/ytheme-gray.css b/lib/web/extjs/resources/css/ytheme-gray.css deleted file mode 100644 index 1af230a8fc1933bfc02e77c2700bf8cdf959340a..0000000000000000000000000000000000000000 --- a/lib/web/extjs/resources/css/ytheme-gray.css +++ /dev/null @@ -1,438 +0,0 @@ -/* - * Ext JS Library 1.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - - -.ext-el-mask-msg { - border:1px solid #aaa; - background: #ddd url(../images/default/box/tb.gif) repeat-x 0 -16px; -} -.ext-el-mask-msg div { - border:1px solid #ccc; -} - -/* - Menu - */ -.x-menu { - border-color: #999 #999 #999 #999; - background-image:url(../images/gray/menu/menu.gif); -} -.x-menu-item-arrow{ - background-image:url(../images/gray/menu/menu-parent.gif); -} -.x-menu-item { - color:#222; -} -.x-menu-item-active { - background:#ddd; - border:1px solid #aaa; -} -.x-menu-sep { - background:#aaa; -} - -/* grid */ -.x-grid-header{ - background: #ebeadb url(../images/gray/grid/grid-hrow.gif) repeat-x; - overflow:hidden; - position:relative; - cursor:default; - width:100%; -} -.x-grid-hd-row{ - height:22px; -} -.x-grid-hd { - padding-right:1px; -} -.x-grid-hd-over .x-grid-hd-inner { - border-bottom: 1px solid #fcc247; -} -.x-grid-hd-over .x-grid-hd-text { - background: #faf9f4; - padding-bottom:1px; - border-bottom: 1px solid #f9a900; -} - -.x-grid-hd-text { - color:#000000; -} - -.x-grid-col { - border-right: 1px solid #f1efe2; - border-bottom: 1px solid #f1efe2; -} -.x-grid-row-alt{ - background:#fcfaf6; -} -.x-grid-row-over td{ - background:#f1f1f1; -} - - -.x-grid-locked .x-grid-body td { - background: #f0efe4; - border-right: 1px solid #D6D2C2; - border-bottom: 1px solid #D6D2C2 !important; -} - -.x-grid-locked .x-grid-header table{ - border-right:1px solid transparent; -} -.x-grid-locked .x-grid-body table{ - border-right:1px solid #c6c2b2; -} - -.x-grid-bottombar .x-toolbar{ - border-right:0 none; - border-bottom:0 none; - border-top:1px solid #f1efe2; -} - -.x-props-grid .x-grid-col-name{ - background-color: #f1efe2; -} - - - -.x-grid-locked td.x-grid-row-marker, .x-grid-locked .x-grid-row-selected td.x-grid-row-marker{ - background: #ebeadb url(../images/gray/grid/grid-hrow.gif) repeat-x 0 bottom !important; - vertical-align:middle !important; - color:black; - padding:0; - border-top:1px solid white; - border-bottom:none !important; - border-right:1px solid #d6d2c2 !important; - text-align:center; -} -.x-grid-locked td.x-grid-row-marker div, .x-grid-locked .x-grid-row-selected td.x-grid-row-marker div{ - padding:0 4px; - color:black !important; - text-align:center; -} - -/** -* Basic-Dialog -*/ -.x-dlg-proxy { - background-image: url(../images/gray/layout/gradient-bg.gif); - background-color:#EAE8D5; - border:1px solid #b3b6b0; -} -.x-dlg-shadow{ - background:#aaaaaa; -} -.x-dlg-proxy .tabset{ - background:url(../images/gray/layout/gradient-bg.gif); -} -.x-dlg .x-dlg-hd { - background: url(../images/gray/basic-dialog/hd-sprite.gif) repeat-x 0 -82px; - background-color:#333333; -} -.x-dlg .x-dlg-hd-left { - background: url(../images/gray/basic-dialog/hd-sprite.gif) no-repeat 0 -41px; -} -.x-dlg .x-dlg-hd-right { - background: url(../images/gray/basic-dialog/hd-sprite.gif) no-repeat right 0; -} -.x-dlg .x-dlg-dlg-body{ - background:#efefec; - border:1px solid #b3b6b0; - border-top:0 none; -} -.x-dlg .x-tabs-top .x-tabs-body{ - border:1px solid #b3b6b0; - border-top:0 none; -} -.x-dlg .x-tabs-bottom .x-tabs-body{ - border:1px solid #b3b6b0; - border-bottom:0 none; -} -.x-dlg .x-layout-container .x-tabs-body{ - border:0 none; -} -.x-dlg .x-dlg-close { - background-image:url(../images/gray/basic-dialog/close.gif); -} -.x-dlg .x-dlg-collapse { - background-image:url(../images/gray/basic-dialog/collapse.gif); -} -.x-dlg-collapsed .x-dlg-collapse { - background-image:url(../images/gray/basic-dialog/expand.gif); -} -.x-dlg div.x-resizable-handle-east{ - background-image:url(../images/gray/basic-dialog/e-handle.gif); - border:0 none; -} -.x-dlg div.x-resizable-handle-south{ - background-image:url(../images/gray/basic-dialog/s-handle.gif); - border:0 none; -} -.x-dlg div.x-resizable-handle-west{ - background-image:url(../images/gray/basic-dialog/e-handle.gif); - border:0 none; -} -.x-dlg div.x-resizable-handle-southeast{ - background-image:url(../images/gray/basic-dialog/se-handle.gif); - background-position: bottom right; - width:8px; - height:8px; - border:0; -} -.x-dlg div.x-resizable-handle-southwest{ - background-image:url(../images/gray/sizer/sw-handle-dark.gif); - background-position: top right; - margin-left:1px; - margin-bottom:1px; - border:0; -} -.x-dlg div.x-resizable-handle-north{ - background-image:url(../images/gray/s.gif); - border:0 none; -} - -/** -* Tabs -*/ -.x-tabs-wrap { - border-bottom:1px solid #aca899; -} -.x-tabs-strip .on .x-tabs-text { - cursor:default; - color:#333333; -} -.x-tabs-top .x-tabs-strip .on .x-tabs-right { - background: url(../images/gray/tabs/tab-sprite.gif) no-repeat right 0; -} -.x-tabs-top .x-tabs-strip .on .x-tabs-left { - background: url(../images/gray/tabs/tab-sprite.gif) no-repeat 0px -100px; -} -.x-tabs-top .x-tabs-strip .x-tabs-right { - background: url(../images/gray/tabs/tab-sprite.gif) no-repeat right -50px; -} -.x-tabs-top .x-tabs-strip .x-tabs-left { - background: url(../images/gray/tabs/tab-sprite.gif) no-repeat 0px -150px; -} -.x-tabs-strip .x-tabs-closable .close-icon{ - background-image:url(../images/gray/layout/tab-close.gif); -} -.x-tabs-strip .on .close-icon{ - background-image:url(../images/gray/layout/tab-close-on.gif); -} -.x-tabs-strip .x-tabs-closable .close-over{ - background-image:url(../images/gray/layout/tab-close-on.gif); -} -.x-tabs-body { - border:1px solid #aca899; - border-top:0 none; -} -.x-tabs-bottom .x-tabs-wrap { - border-bottom:0 none; - padding-top:0; - border-top:1px solid #aca899; -} -.x-tabs-bottom .x-tabs-strip .x-tabs-right { - background: url(../images/gray/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom left; -} -.x-tabs-bottom .x-tabs-strip .x-tabs-left { - background: url(../images/gray/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom right; -} -.x-tabs-bottom .x-tabs-strip .on .x-tabs-right { - background: url(../images/gray/tabs/tab-btm-right-bg.gif) no-repeat bottom left; -} -.x-tabs-bottom .x-tabs-strip .on .x-tabs-left { - background: url(../images/gray/tabs/tab-btm-left-bg.gif) no-repeat bottom right; -} - -.x-tabs-bottom .x-tabs-body { - border:1px solid #aca899; - border-bottom:0 none; -} - -.x-layout-container .x-layout-tabs-body{ - border:0 none; -} -/* QuickTips */ - -.x-tip .x-tip-top { - background-image: url(../images/gray/qtip/tip-sprite.gif); -} -.x-tip .x-tip-top-left { - background-image: url(../images/gray/qtip/tip-sprite.gif); -} -.x-tip .x-tip-top-right { - background-image: url(../images/gray/qtip/tip-sprite.gif); -} -.x-tip .x-tip-ft { - background-image: url(../images/gray/qtip/tip-sprite.gif); -} -.x-tip .x-tip-ft-left { - background-image: url(../images/gray/qtip/tip-sprite.gif); -} -.x-tip .x-tip-ft-right { - background-image: url(../images/gray/qtip/tip-sprite.gif); -} -.x-tip .x-tip-bd-left { - background-image: url(../images/gray/qtip/tip-sprite.gif); -} -.x-tip .x-tip-bd-right { - background-image: url(../images/gray/qtip/tip-sprite.gif); -} - -/* BorderLayout */ - -.x-layout-container{ - background-color:#f3f2e7; -} -.x-layout-collapsed{ - background-color:#f3f2e7; - border:1px solid #aca899; -} -.x-layout-collapsed-over{ - background-color:#fbfbef; -} -.x-layout-panel{ - border:1px solid #aca899; -} -.x-layout-nested-layout .x-layout-panel { - border:0 none; -} -.x-layout-split{ - background-color:#f3f2e7; -} -.x-layout-panel-hd{ - background-image: url(../images/gray/layout/panel-title-light-bg.gif); - border-bottom:1px solid #aca899; -} -.x-layout-tools-button-over{ - border:1px solid #aca899; -} -.x-layout-close{ - background-image:url(../images/gray/layout/panel-close.gif); -} -.x-layout-stick{ - background-image:url(../images/gray/layout/stick.gif); -} -.x-layout-collapse-west,.x-layout-expand-east{ - background-image:url(../images/gray/layout/collapse.gif); -} -.x-layout-expand-west,.x-layout-collapse-east{ - background-image:url(../images/gray/layout/expand.gif); -} -.x-layout-collapse-north,.x-layout-expand-south{ - background-image:url(../images/gray/layout/ns-collapse.gif); -} -.x-layout-expand-north,.x-layout-collapse-south{ - background-image:url(../images/gray/layout/ns-expand.gif); -} -.x-layout-split-h{ - background-image:url(../images/gray/sizer/e-handle-dark.gif); -} -.x-layout-split-v{ - background-image:url(../images/gray/sizer/s-handle-dark.gif); -} -.x-layout-panel .x-tabs-wrap{ - background:url(../images/gray/layout/gradient-bg.gif); -} -.x-layout-nested-layout .x-layout-panel-north { - border-bottom:1px solid #aca899; -} -.x-layout-nested-layout .x-layout-panel-south { - border-top:1px solid #aca899; -} -.x-layout-nested-layout .x-layout-panel-east { - border-left:1px solid #aca899; -} -.x-layout-nested-layout .x-layout-panel-west { - border-right:1px solid #aca899; -} -.x-layout-panel-dragover { - border: 2px solid #aca899; -} -.x-layout-panel-proxy { - background-image: url(../images/gray/layout/gradient-bg.gif); - background-color:#f3f2e7; - border:1px dashed #aca899; -} -/** Resizable */ - -.x-resizable-over .x-resizable-handle-east, .x-resizable-pinned .x-resizable-handle-east{ - background:url(../images/gray/sizer/e-handle.gif); - background-position: left; -} -.x-resizable-over .x-resizable-handle-east, .x-resizable-pinned .x-resizable-handle-west{ - background:url(../images/gray/sizer/e-handle.gif); - background-position: left; -} -.x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-south{ - background:url(../images/gray/sizer/s-handle.gif); - background-position: top; -} -.x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-north{ - background:url(../images/gray/sizer/s-handle.gif); - background-position: top; -} -.x-resizable-over .x-resizable-handle-southeast, .x-resizable-pinned .x-resizable-handle-southeast{ - background:url(../images/gray/sizer/se-handle.gif); - background-position: top left; -} -.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{ - background:url(../images/gray/sizer/nw-handle.gif); - background-position:bottom right; -} -.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{ - background:url(../images/gray/sizer/ne-handle.gif); - background-position: bottom left; -} -.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{ - background:url(../images/gray/sizer/sw-handle.gif); - background-position: top right; -} -.x-resizable-proxy{ - border: 1px dashed #615e55; -} - -/** Toolbar */ -.x-toolbar{ - border:0 none; - background: #efefe3 url(../images/gray/toolbar/gray-bg.gif) repeat-x; - padding:3px; -} -.x-toolbar .x-btn-over .x-btn-left, .x-toolbar .x-btn-pressed .x-btn-left, .x-toolbar .x-btn-menu-active .x-btn-left{ - background:url(../images/gray/toolbar/tb-btn-sprite.gif) no-repeat 0 0; -} -.x-toolbar .x-btn-over .x-btn-right, .x-toolbar .x-btn-pressed .x-btn-right, .x-toolbar .x-btn-menu-active .x-btn-right{ - background:url(../images/gray/toolbar/tb-btn-sprite.gif) no-repeat 0 -21px; -} -.x-toolbar .x-btn-over .x-btn-center, .x-toolbar .x-btn-pressed .x-btn-center, .x-toolbar .x-btn-menu-active .x-btn-center{ - background:url(../images/gray/toolbar/tb-btn-sprite.gif) repeat-x 0 -42px; -} -.x-toolbar .x-btn-over .x-btn-menu-arrow-wrap .x-btn-center button { - background-position: 0 -47px; -} -.x-paging-info { - color:#222222; -} - -/* combo box */ -.x-combo-list { - border:1px solid #999; - background:#dddddd; -} -.x-combo-list-hd { - color:#222; - background-image: url(../images/gray/layout/panel-title-light-bg.gif); - border-bottom:1px solid #aca899; -} -.x-resizable-pinned .x-combo-list-inner { - border-bottom:1px solid #aaa; -} -.x-combo-list .x-combo-selected{ - background:#ddd !important; - border:1px solid #aaa; -} \ No newline at end of file diff --git a/lib/web/extjs/resources/css/ytheme-vista.css b/lib/web/extjs/resources/css/ytheme-vista.css deleted file mode 100644 index 7c604952dd5f412008a5ec4f707fb35b8e383965..0000000000000000000000000000000000000000 --- a/lib/web/extjs/resources/css/ytheme-vista.css +++ /dev/null @@ -1,511 +0,0 @@ -/* - * Ext JS Library 1.0 - * Copyright(c) 2006-2007, Ext JS, LLC. - * licensing@extjs.com - * - * http://www.extjs.com/license - */ - -.ext-el-mask-msg { - border:1px solid #aaa; - background: #ddd url(../images/default/box/tb.gif) repeat-x 0 -16px; -} -.ext-el-mask-msg div { - border:1px solid #ccc; -} -/* - Menu - */ -.x-menu { - border-color: #999 #999 #999 #999; - background-image:url(../images/gray/menu/menu.gif); -} -.x-menu-item-arrow{ - background-image:url(../images/gray/menu/menu-parent.gif); -} -.x-menu-item { - color:#222; -} -.x-menu-item-active { - background:#ddd; - border:1px solid #aaa; -} -.x-menu-sep { - background:#aaa; -} -/** -* Tabs -*/ -.x-tabs-wrap { - background:#4f4f4f; - border-bottom:1px solid #b3b6b0; -} -.x-tabs-strip .x-tabs-text { - color:white; - font-weight:normal; -} -.x-tabs-strip .on .x-tabs-text { - cursor:default; - color:#333333; -} -.x-tabs-top .x-tabs-strip a.x-tabs-right { - background:transparent url(../images/vista/tabs/tab-sprite.gif) no-repeat right -50px; -} -.x-tabs-top .x-tabs-strip a .x-tabs-left{ - background:transparent url(../images/vista/tabs/tab-sprite.gif) no-repeat 0px -150px; -} -.x-tabs-top .x-tabs-strip .on .x-tabs-right { - background: url(../images/vista/tabs/tab-sprite.gif) no-repeat right 0; -} -.x-tabs-top .x-tabs-strip .on .x-tabs-left{ - background: url(../images/vista/tabs/tab-sprite.gif) no-repeat 0px -100px; -} -.x-tabs-strip .x-tabs-closable .close-icon{ - background-image:url(../images/vista/layout/tab-close.gif); -} -.x-tabs-strip .on .close-icon{ - background-image:url(../images/vista/layout/tab-close-on.gif); -} -.x-tabs-strip .x-tabs-closable .close-over{ - background-image:url(../images/vista/layout/tab-close-on.gif); -} -.x-tabs-body { - border:1px solid #b3b6b0; - border-top:0 none; -} - -.x-tabs-bottom .x-tabs-strip { - background:#4f4f4f; -} -.x-tabs-bottom .x-tabs-strip a.x-tabs-right { - background:transparent url(../images/vista/tabs/tab-btm-inactive-right-bg.gif) no-repeat bottom right; -} -.x-tabs-bottom .x-tabs-strip a .x-tabs-left{ - background:transparent url(../images/vista/tabs/tab-btm-inactive-left-bg.gif) no-repeat bottom left; -} -.x-tabs-bottom .x-tabs-wrap { - border-bottom:0 none; - padding-top:0; - border-top:1px solid #b3b6b0; -} -.x-tabs-bottom .x-tabs-strip .on .x-tabs-right { - background: url(../images/vista/tabs/tab-btm-right-bg.gif) no-repeat bottom left; -} -.x-tabs-bottom .x-tabs-strip .on .x-tabs-left { - background: url(../images/vista/tabs/tab-btm-left-bg.gif) no-repeat bottom right; -} - -.x-tabs-bottom .x-tabs-body { - border:1px solid #b3b6b0; - border-bottom:0 none; -} -/** -* Basic-Dialog -*/ -.x-dlg-proxy { - background:#d3d6d0; - border:2px solid #b3b6b0; -} -.x-dlg-shadow{ - background:#cccccc; - opacity:.3; - -moz-opacity:.3; - filter: alpha(opacity=30); -} -.x-dlg .x-dlg-hd { - background: url(../images/vista/basic-dialog/hd-sprite.gif) repeat-x 0 -82px; - background-color:#333333; - zoom:1; -} -.x-dlg .x-dlg-hd-left { - opacity:.95;-moz-opacity:.95;filter:alpha(opacity=90); - background: url(../images/vista/basic-dialog/hd-sprite.gif) no-repeat 0 -41px; - zoom:1; -} -.x-dlg .x-dlg-hd-right { - background: url(../images/vista/basic-dialog/hd-sprite.gif) no-repeat right 0; - zoom:1; -} -.x-dlg .x-dlg-dlg-body{ - background:#fff; - border:0 none; - border-top:0 none; - padding:0 0px 0px; - position:absolute; - top:24px;left:0; - z-index:1; -} -.x-dlg-auto-tabs .x-dlg-dlg-body{ - background:transparent; -} -.x-dlg-auto-tabs .x-tabs-top .x-tabs-wrap{ - background:transparent; -} -.x-dlg .x-dlg-ft{ - border-top:1px solid #b3b6b0; - background:#F0F0F0; - padding-bottom:8px; -} -.x-dlg .x-dlg-bg{ - opacity:.90;-moz-opacity:.90;filter:alpha(opacity=85); - zoom:1; -} -.x-dlg .x-dlg-bg-left,.x-dlg .x-dlg-bg-center,.x-dlg .x-dlg-bg-right{ -} -.x-dlg .x-dlg-bg-center { - padding: 0px 4px 4px 4px; - background:transparent url(../images/vista/basic-dialog/bg-center.gif) repeat-x bottom; - zoom:1; -} -.x-dlg .x-dlg-bg-left{ - padding-left:4px; - background:transparent url(../images/vista/basic-dialog/bg-left.gif) no-repeat bottom left; - zoom:1; -} -.x-dlg .x-dlg-bg-right{ - padding-right:4px; - background:transparent url(../images/vista/basic-dialog/bg-right.gif) no-repeat bottom right; - zoom:1; -} -.x-dlg .x-tabs-top .x-tabs-body{ - border:0 none; -} -.x-dlg .x-tabs-bottom .x-tabs-body{ - border:1px solid #b3b6b0; - border-bottom:0 none; -} -.x-dlg .x-layout-container .x-tabs-body{ - border:0 none; -} -.x-dlg .x-dlg-close { - background-image:url(../images/vista/basic-dialog/close.gif); -} -.x-dlg .x-dlg-collapse { - background-image:url(../images/vista/basic-dialog/collapse.gif); -} -.x-dlg-collapsed .x-dlg-collapse { - background-image:url(../images/vista/basic-dialog/expand.gif); -} -.x-dlg div.x-resizable-handle-east{ - background-image:url(../images/vista/s.gif); - border:0 none; -} -.x-dlg div.x-resizable-handle-south{ - background-image:url(../images/vista/s.gif); - border:0 none; -} -.x-dlg div.x-resizable-handle-west{ - background-image:url(../images/vista/s.gif); - border:0 none; -} -.x-dlg div.x-resizable-handle-southeast{ - background-image:url(../images/vista/s.gif); - background-position: bottom right; - width:8px; - height:8px; - border:0; -} -.x-dlg div.x-resizable-handle-southwest{ - background-image:url(../images/vista/s.gif); - background-position: top right; - margin-left:1px; - margin-bottom:1px; - border:0; -} -.x-dlg div.x-resizable-handle-north{ - background-image:url(../images/vista/s.gif); - border:0 none; -} - -/* QuickTips */ - -.x-tip .x-tip-top { - background-image: url(../images/vista/qtip/tip-sprite.gif); -} -.x-tip .x-tip-top-left { - background-image: url(../images/vista/qtip/tip-sprite.gif); -} -.x-tip .x-tip-top-right { - background-image: url(../images/vista/qtip/tip-sprite.gif); -} -.x-tip .x-tip-ft { - background-image: url(../images/vista/qtip/tip-sprite.gif); -} -.x-tip .x-tip-ft-left { - background-image: url(../images/vista/qtip/tip-sprite.gif); -} -.x-tip .x-tip-ft-right { - background-image: url(../images/vista/qtip/tip-sprite.gif); -} -.x-tip .x-tip-bd-left { - background-image: url(../images/vista/qtip/tip-sprite.gif); -} -.x-tip .x-tip-bd-right { - background-image: url(../images/vista/qtip/tip-sprite.gif); -} - -.x-tip .x-tip-bd-inner { - padding:2px; -} - -/* BorderLayout */ -.x-layout-container{ - background:#4f4f4f; -} -.x-layout-collapsed{ - background-color:#9f9f9f; - border:1px solid #4c535c; -} -.x-layout-collapsed-over{ - background-color:#bfbfbf; -} -.x-layout-panel{ - border:1px solid #4c535c; -} -.x-layout-nested-layout .x-layout-panel { - border:0 none; -} -.x-layout-split{ - background-color:#f3f2e7; -} -.x-layout-panel-hd{ - background-image: url(../images/vista/layout/panel-title-bg.gif); - border-bottom:1px solid #b5bac1; - color:white; -} -.x-layout-panel-hd-text{ - color:white; -} -.x-layout-tools-button-over{ - border:1px solid #4c535c; - background:#9f9f9f url(../images/vista/layout/panel-title-bg.gif) repeat-x; -} -.x-layout-close{ - background-image:url(../images/vista/layout/tab-close.gif); -} - -.x-layout-stick{ - background-image:url(../images/vista/layout/stick.gif); -} -.x-layout-collapse-west,.x-layout-expand-east{ - background-image:url(../images/vista/layout/collapse.gif); -} -.x-layout-expand-west,.x-layout-collapse-east{ - background-image:url(../images/vista/layout/expand.gif); -} -.x-layout-collapse-north,.x-layout-expand-south{ - background-image:url(../images/vista/layout/ns-collapse.gif); -} -.x-layout-expand-north,.x-layout-collapse-south{ - background-image:url(../images/vista/layout/ns-expand.gif); -} -.x-layout-split-h{ - background:#9f9f9f; -} -.x-layout-split-v{ - background:#9f9f9f; -} -.x-layout-panel .x-tabs-wrap{ - background:#4f4f4f; -} -.x-layout-nested-layout .x-layout-panel-north { - border-bottom:1px solid #4c535c; -} -.x-layout-nested-layout .x-layout-panel-south { - border-top:1px solid #4c535c; -} -.x-layout-nested-layout .x-layout-panel-east { - border-left:1px solid #4c535c; -} -.x-layout-nested-layout .x-layout-panel-west { - border-right:1px solid #4c535c; -} -.x-layout-panel-dragover { - border: 2px solid #4c535c; -} -.x-layout-panel-proxy { - background-image: url(../images/vista/layout/gradient-bg.gif); - background-color:#f3f2e7; - border:1px dashed #4c535c; -} - -.x-layout-container .x-layout-tabs-body{ - border:0 none; -} -/** Resizable */ - -.x-resizable-over .x-resizable-handle-east, .x-resizable-pinned .x-resizable-handle-east{ - background:url(../images/vista/sizer/e-handle.gif); - background-position: left; -} -.x-resizable-over .x-resizable-handle-east, .x-resizable-pinned .x-resizable-handle-west{ - background:url(../images/vista/sizer/e-handle.gif); - background-position: left; -} -.x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-south{ - background:url(../images/vista/sizer/s-handle.gif); - background-position: top; -} -.x-resizable-over .x-resizable-handle-south, .x-resizable-pinned .x-resizable-handle-north{ - background:url(../images/vista/sizer/s-handle.gif); - background-position: top; -} -.x-resizable-over .x-resizable-handle-southeast, .x-resizable-pinned .x-resizable-handle-southeast{ - background:url(../images/vista/sizer/se-handle.gif); - background-position: top left; -} -.x-resizable-over .x-resizable-handle-northwest,.x-resizable-pinned .x-resizable-handle-northwest{ - background:url(../images/vista/sizer/nw-handle.gif); - background-position:bottom right; -} -.x-resizable-over .x-resizable-handle-northeast,.x-resizable-pinned .x-resizable-handle-northeast{ - background:url(../images/vista/sizer/ne-handle.gif); - background-position: bottom left; -} -.x-resizable-over .x-resizable-handle-southwest,.x-resizable-pinned .x-resizable-handle-southwest{ - background:url(../images/vista/sizer/sw-handle.gif); - background-position: top right; -} -.x-resizable-proxy{ - border: 1px dashed #615e55; -} - -/** Toolbar */ -.x-toolbar{ - border:0 none; - background: #efefe3 url(../images/vista/toolbar/gray-bg.gif) repeat-x; - padding:3px; -} -.x-toolbar .ytb-button-over{ - border:1px solid transparent; - border-bottom:1px solid #bbbbbb; - border-top:1px solid #eeeeee; - background:#9f9f9f url(../images/vista/grid/grid-vista-hd.gif) repeat-x; -} - -.x-paging-info { - color:#000; -} -/* grid */ -.x-grid-topbar .x-toolbar{ - border:0; - border-bottom:1px solid #555; -} -.x-grid-bottombar .x-toolbar{ - border:0; - border-top:1px solid #555; -} -.x-grid-locked .x-grid-body td { - background: #fafafa; - border-right: 1px solid #e1e1e1; - border-bottom: 1px solid #e1e1e1 !important; -} -.x-grid-locked .x-grid-body td .x-grid-cell-inner { - border-top:0 none; -} -.x-grid-locked .x-grid-row-alt td{ - background: #f1f1f1; -} -.x-grid-locked .x-grid-row-selected td{ - color: #fff !important; - background-color: #316ac5 !important; -} -.x-grid-hd{ - border-bottom:0; - background:none; -} -.x-grid-hd-row{ - height:auto; -} -.x-grid-split { - background-image: url(../images/vista/grid/grid-split.gif); -} -.x-grid-header{ - background: url(../images/vista/grid/grid-vista-hd.gif); - border:0 none; - border-bottom:1px solid #555; -} -.x-grid-row-alt{ - background-color: #f5f5f5; -} -.x-grid-row-over td{ - background-color:#eeeeee; -} -.x-grid-col { - border-right: 1px solid #eee; - border-bottom: 1px solid #eee; -} -.x-grid-header .x-grid-hd-inner { - padding-bottom: 1px; -} -.x-grid-header .x-grid-hd-text { - padding-bottom: 3px; - color:#333333; -} -.x-grid-hd-over .x-grid-hd-inner { - border-bottom: 1px solid #555; - padding-bottom: 0; -} -.x-grid-hd-over .x-grid-hd-text { - background-color: #fafafa; - border-bottom: 1px solid #555; - padding-bottom: 2px; -} -.x-grid-header .sort-asc .x-grid-hd-inner, .x-grid-header .sort-desc .x-grid-hd-inner { - border-bottom: 1px solid #555; - padding-bottom: 0; -} -.x-grid-header .sort-asc .x-grid-hd-text, .x-grid-header .sort-desc .x-grid-hd-text { - border-bottom: 1px solid #3b5a82; - padding-bottom: 2px; -} -.x-dd-drag-proxy .x-grid-hd-inner{ - background: url(../images/vista/grid/grid-vista-hd.gif) repeat-x; - height:22px; - width:120px; -} -.x-props-grid .x-grid-col-name{ - background-color: #eee; -} -/* toolbar */ -.x-toolbar .ytb-sep{ - background-image: url(../images/vista/grid/grid-split.gif); -} - -.x-toolbar .x-btn-over .x-btn-left{ - background:url(../images/vista/toolbar/tb-btn-sprite.gif) no-repeat 0 0px; -} -.x-toolbar .x-btn-over .x-btn-right{ - background:url(../images/vista/toolbar/tb-btn-sprite.gif) no-repeat 0 -21px; -} -.x-toolbar .x-btn-over .x-btn-center{ - background:url(../images/vista/toolbar/tb-btn-sprite.gif) repeat-x 0 -42px; -} - -.x-toolbar .x-btn-click .x-btn-left, .x-toolbar .x-btn-pressed .x-btn-left, .x-toolbar .x-btn-menu-active .x-btn-left{ - background:url(../images/vista/toolbar/tb-btn-sprite.gif) no-repeat 0 -63px; -} -.x-toolbar .x-btn-click .x-btn-right, .x-toolbar .x-btn-pressed .x-btn-right, .x-toolbar .x-btn-menu-active .x-btn-right{ - background:url(../images/vista/toolbar/tb-btn-sprite.gif) no-repeat 0 -84px; -} -.x-toolbar .x-btn-click .x-btn-center, .x-toolbar .x-btn-pressed .x-btn-center, .x-toolbar .x-btn-menu-active .x-btn-center{ - background:url(../images/vista/toolbar/tb-btn-sprite.gif) repeat-x 0 -105px; -} - -/* combo box */ -.x-combo-list { - border:1px solid #999; - background:#dddddd; -} -.x-combo-list-hd { - background-image: url(../images/vista/layout/panel-title-bg.gif); - border-bottom:1px solid #b5bac1; - color:white; -} -.x-resizable-pinned .x-combo-list-inner { - border-bottom:1px solid #aaa; -} -.x-combo-list .x-combo-selected{ - background:#ddd !important; - border:1px solid #aaa; -} \ No newline at end of file diff --git a/lib/web/jquery/jquery.js b/lib/web/jquery.js similarity index 100% rename from lib/web/jquery/jquery.js rename to lib/web/jquery.js diff --git a/lib/web/jquery/autocomplete/autocomplete.css b/lib/web/jquery/autocomplete/autocomplete.css deleted file mode 100644 index 4000a35a15c352984f83fadfa13a8d8e730b846a..0000000000000000000000000000000000000000 --- a/lib/web/jquery/autocomplete/autocomplete.css +++ /dev/null @@ -1,5 +0,0 @@ -.autocomplete-suggestions { border: 1px solid #999; background: #FFF; cursor: default; overflow: auto; -webkit-box-shadow: 1px 4px 3px rgba(50, 50, 50, 0.64); -moz-box-shadow: 1px 4px 3px rgba(50, 50, 50, 0.64); box-shadow: 1px 4px 3px rgba(50, 50, 50, 0.64); } -.autocomplete-suggestion { padding: 2px 5px; white-space: nowrap; overflow: hidden; } -.autocomplete-no-suggestion { padding: 2px 5px;} -.autocomplete-selected { background: #F0F0F0; } -.autocomplete-suggestions strong { font-weight: normal; color: #3399FF; } \ No newline at end of file diff --git a/lib/web/jquery/autocomplete/jquery.autocomplete.js b/lib/web/jquery/autocomplete/jquery.autocomplete.js deleted file mode 100644 index 07fa5ca10200e95b83878c3d516fbf6f77f76819..0000000000000000000000000000000000000000 --- a/lib/web/jquery/autocomplete/jquery.autocomplete.js +++ /dev/null @@ -1,915 +0,0 @@ -/** -* Ajax Autocomplete for jQuery, version 1.2.11 -* (c) 2014 Tomas Kirda -* -* Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license. -* For details, see the web site: https://github.com/devbridge/jQuery-Autocomplete -* -*/ - -/*jslint browser: true, white: true, plusplus: true */ -/*global define, window, document, jQuery, exports */ - -// Expose plugin as an AMD module if AMD loader is present: -(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(['jquery'], factory); - } else if (typeof exports === 'object' && typeof require === 'function') { - // Browserify - factory(require('jquery')); - } else { - // Browser globals - factory(jQuery); - } -}(function ($) { - 'use strict'; - - var - utils = (function () { - return { - escapeRegExChars: function (value) { - return value.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); - }, - createNode: function (containerClass) { - var div = document.createElement('div'); - div.className = containerClass; - div.style.position = 'absolute'; - div.style.display = 'none'; - return div; - } - }; - }()), - - keys = { - ESC: 27, - TAB: 9, - RETURN: 13, - LEFT: 37, - UP: 38, - RIGHT: 39, - DOWN: 40 - }; - - function Autocomplete(el, options) { - var noop = function () { }, - that = this, - defaults = { - ajaxSettings: {}, - autoSelectFirst: false, - appendTo: document.body, - serviceUrl: null, - lookup: null, - onSelect: null, - width: 'auto', - minChars: 1, - maxHeight: 300, - deferRequestBy: 0, - params: {}, - formatResult: Autocomplete.formatResult, - delimiter: null, - zIndex: 9999, - type: 'GET', - noCache: false, - onSearchStart: noop, - onSearchComplete: noop, - onSearchError: noop, - containerClass: 'autocomplete-suggestions', - tabDisabled: false, - dataType: 'text', - currentRequest: null, - triggerSelectOnValidInput: true, - preventBadQueries: true, - lookupFilter: function (suggestion, originalQuery, queryLowerCase) { - return suggestion.value.toLowerCase().indexOf(queryLowerCase) !== -1; - }, - paramName: 'query', - transformResult: function (response) { - return typeof response === 'string' ? $.parseJSON(response) : response; - }, - showNoSuggestionNotice: false, - noSuggestionNotice: 'No results', - orientation: 'bottom', - forceFixPosition: false - }; - - // Shared variables: - that.element = el; - that.el = $(el); - that.suggestions = []; - that.badQueries = []; - that.selectedIndex = -1; - that.currentValue = that.element.value; - that.intervalId = 0; - that.cachedResponse = {}; - that.onChangeInterval = null; - that.onChange = null; - that.isLocal = false; - that.suggestionsContainer = null; - that.noSuggestionsContainer = null; - that.options = $.extend({}, defaults, options); - that.classes = { - selected: 'autocomplete-selected', - suggestion: 'autocomplete-suggestion' - }; - that.hint = null; - that.hintValue = ''; - that.selection = null; - - // Initialize and set options: - that.initialize(); - that.setOptions(options); - } - - Autocomplete.utils = utils; - - $.Autocomplete = Autocomplete; - - Autocomplete.formatResult = function (suggestion, currentValue) { - var pattern = '(' + utils.escapeRegExChars(currentValue) + ')'; - - return suggestion.value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>'); - }; - - Autocomplete.prototype = { - - killerFn: null, - - initialize: function () { - var that = this, - suggestionSelector = '.' + that.classes.suggestion, - selected = that.classes.selected, - options = that.options, - container; - - // Remove autocomplete attribute to prevent native suggestions: - that.element.setAttribute('autocomplete', 'off'); - - that.killerFn = function (e) { - if ($(e.target).closest('.' + that.options.containerClass).length === 0) { - that.killSuggestions(); - that.disableKillerFn(); - } - }; - - // html() deals with many types: htmlString or Element or Array or jQuery - that.noSuggestionsContainer = $('<div class="autocomplete-no-suggestion"></div>') - .html(this.options.noSuggestionNotice).get(0); - - that.suggestionsContainer = Autocomplete.utils.createNode(options.containerClass); - - container = $(that.suggestionsContainer); - - container.appendTo(options.appendTo); - - // Only set width if it was provided: - if (options.width !== 'auto') { - container.width(options.width); - } - - // Listen for mouse over event on suggestions list: - container.on('mouseover.autocomplete', suggestionSelector, function () { - that.activate($(this).data('index')); - }); - - // Deselect active element when mouse leaves suggestions container: - container.on('mouseout.autocomplete', function () { - that.selectedIndex = -1; - container.children('.' + selected).removeClass(selected); - }); - - // Listen for click event on suggestions list: - container.on('click.autocomplete', suggestionSelector, function () { - that.select($(this).data('index')); - }); - - that.fixPositionCapture = function () { - if (that.visible) { - that.fixPosition(); - } - }; - - $(window).on('resize.autocomplete', that.fixPositionCapture); - - that.el.on('keydown.autocomplete', function (e) { that.onKeyPress(e); }); - that.el.on('keyup.autocomplete', function (e) { that.onKeyUp(e); }); - that.el.on('blur.autocomplete', function () { that.onBlur(); }); - that.el.on('focus.autocomplete', function () { that.onFocus(); }); - that.el.on('change.autocomplete', function (e) { that.onKeyUp(e); }); - }, - - onFocus: function () { - var that = this; - that.fixPosition(); - if (that.options.minChars <= that.el.val().length) { - that.onValueChange(); - } - }, - - onBlur: function () { - this.enableKillerFn(); - }, - - setOptions: function (suppliedOptions) { - var that = this, - options = that.options; - - $.extend(options, suppliedOptions); - - that.isLocal = $.isArray(options.lookup); - - if (that.isLocal) { - options.lookup = that.verifySuggestionsFormat(options.lookup); - } - - options.orientation = that.validateOrientation(options.orientation, 'bottom'); - - // Adjust height, width and z-index: - $(that.suggestionsContainer).css({ - 'max-height': options.maxHeight + 'px', - 'width': options.width + 'px', - 'z-index': options.zIndex - }); - }, - - - clearCache: function () { - this.cachedResponse = {}; - this.badQueries = []; - }, - - clear: function () { - this.clearCache(); - this.currentValue = ''; - this.suggestions = []; - }, - - disable: function () { - var that = this; - that.disabled = true; - if (that.currentRequest) { - that.currentRequest.abort(); - } - }, - - enable: function () { - this.disabled = false; - }, - - fixPosition: function () { - // Use only when container has already its content - - var that = this, - $container = $(that.suggestionsContainer), - containerParent = $container.parent().get(0); - // Fix position automatically when appended to body. - // In other cases force parameter must be given. - if (containerParent !== document.body && !that.options.forceFixPosition) - return; - - // Choose orientation - var orientation = that.options.orientation, - containerHeight = $container.outerHeight(), - height = that.el.outerHeight(), - offset = that.el.offset(), - styles = { 'top': offset.top, 'left': offset.left }; - - if (orientation == 'auto') { - var viewPortHeight = $(window).height(), - scrollTop = $(window).scrollTop(), - topOverflow = -scrollTop + offset.top - containerHeight, - bottomOverflow = scrollTop + viewPortHeight - (offset.top + height + containerHeight); - - orientation = (Math.max(topOverflow, bottomOverflow) === topOverflow) - ? 'top' - : 'bottom'; - } - - if (orientation === 'top') { - styles.top += -containerHeight; - } else { - styles.top += height; - } - - // If container is not positioned to body, - // correct its position using offset parent offset - if(containerParent !== document.body) { - var opacity = $container.css('opacity'), - parentOffsetDiff; - - if (!that.visible){ - $container.css('opacity', 0).show(); - } - - parentOffsetDiff = $container.offsetParent().offset(); - styles.top -= parentOffsetDiff.top; - styles.left -= parentOffsetDiff.left; - - if (!that.visible){ - $container.css('opacity', opacity).hide(); - } - } - - // -2px to account for suggestions border. - if (that.options.width === 'auto') { - styles.width = (that.el.outerWidth() - 2) + 'px'; - } - - $container.css(styles); - }, - - enableKillerFn: function () { - var that = this; - $(document).on('click.autocomplete', that.killerFn); - }, - - disableKillerFn: function () { - var that = this; - $(document).off('click.autocomplete', that.killerFn); - }, - - killSuggestions: function () { - var that = this; - that.stopKillSuggestions(); - that.intervalId = window.setInterval(function () { - that.hide(); - that.stopKillSuggestions(); - }, 50); - }, - - stopKillSuggestions: function () { - window.clearInterval(this.intervalId); - }, - - isCursorAtEnd: function () { - var that = this, - valLength = that.el.val().length, - selectionStart = that.element.selectionStart, - range; - - if (typeof selectionStart === 'number') { - return selectionStart === valLength; - } - if (document.selection) { - range = document.selection.createRange(); - range.moveStart('character', -valLength); - return valLength === range.text.length; - } - return true; - }, - - onKeyPress: function (e) { - var that = this; - - // If suggestions are hidden and user presses arrow down, display suggestions: - if (!that.disabled && !that.visible && e.which === keys.DOWN && that.currentValue) { - that.suggest(); - return; - } - - if (that.disabled || !that.visible) { - return; - } - - switch (e.which) { - case keys.ESC: - that.el.val(that.currentValue); - that.hide(); - break; - case keys.RIGHT: - if (that.hint && that.options.onHint && that.isCursorAtEnd()) { - that.selectHint(); - break; - } - return; - case keys.TAB: - if (that.hint && that.options.onHint) { - that.selectHint(); - return; - } - // Fall through to RETURN - case keys.RETURN: - if (that.selectedIndex === -1) { - that.hide(); - return; - } - that.select(that.selectedIndex); - if (e.which === keys.TAB && that.options.tabDisabled === false) { - return; - } - break; - case keys.UP: - that.moveUp(); - break; - case keys.DOWN: - that.moveDown(); - break; - default: - return; - } - - // Cancel event if function did not return: - e.stopImmediatePropagation(); - e.preventDefault(); - }, - - onKeyUp: function (e) { - var that = this; - - if (that.disabled) { - return; - } - - switch (e.which) { - case keys.UP: - case keys.DOWN: - return; - } - - clearInterval(that.onChangeInterval); - - if (that.currentValue !== that.el.val()) { - that.findBestHint(); - if (that.options.deferRequestBy > 0) { - // Defer lookup in case when value changes very quickly: - that.onChangeInterval = setInterval(function () { - that.onValueChange(); - }, that.options.deferRequestBy); - } else { - that.onValueChange(); - } - } - }, - - onValueChange: function () { - var that = this, - options = that.options, - value = that.el.val(), - query = that.getQuery(value), - index; - - if (that.selection && that.currentValue !== query) { - that.selection = null; - (options.onInvalidateSelection || $.noop).call(that.element); - } - - clearInterval(that.onChangeInterval); - that.currentValue = value; - that.selectedIndex = -1; - - // Check existing suggestion for the match before proceeding: - if (options.triggerSelectOnValidInput) { - index = that.findSuggestionIndex(query); - if (index !== -1) { - that.select(index); - return; - } - } - - if (query.length < options.minChars) { - that.hide(); - } else { - that.getSuggestions(query); - } - }, - - findSuggestionIndex: function (query) { - var that = this, - index = -1, - queryLowerCase = query.toLowerCase(); - - $.each(that.suggestions, function (i, suggestion) { - if (suggestion.value.toLowerCase() === queryLowerCase) { - index = i; - return false; - } - }); - - return index; - }, - - getQuery: function (value) { - var delimiter = this.options.delimiter, - parts; - - if (!delimiter) { - return value; - } - parts = value.split(delimiter); - return $.trim(parts[parts.length - 1]); - }, - - getSuggestionsLocal: function (query) { - var that = this, - options = that.options, - queryLowerCase = query.toLowerCase(), - filter = options.lookupFilter, - limit = parseInt(options.lookupLimit, 10), - data; - - data = { - suggestions: $.grep(options.lookup, function (suggestion) { - return filter(suggestion, query, queryLowerCase); - }) - }; - - if (limit && data.suggestions.length > limit) { - data.suggestions = data.suggestions.slice(0, limit); - } - - return data; - }, - - getSuggestions: function (q) { - var response, - that = this, - options = that.options, - serviceUrl = options.serviceUrl, - params, - cacheKey, - ajaxSettings; - - options.params[options.paramName] = q; - params = options.ignoreParams ? null : options.params; - - if (that.isLocal) { - response = that.getSuggestionsLocal(q); - } else { - if ($.isFunction(serviceUrl)) { - serviceUrl = serviceUrl.call(that.element, q); - } - cacheKey = serviceUrl + '?' + $.param(params || {}); - response = that.cachedResponse[cacheKey]; - } - - if (response && $.isArray(response.suggestions)) { - that.suggestions = response.suggestions; - that.suggest(); - } else if (!that.isBadQuery(q)) { - if (options.onSearchStart.call(that.element, options.params) === false) { - return; - } - if (that.currentRequest) { - that.currentRequest.abort(); - } - - ajaxSettings = { - url: serviceUrl, - data: params, - type: options.type, - dataType: options.dataType - }; - - $.extend(ajaxSettings, options.ajaxSettings); - - that.currentRequest = $.ajax(ajaxSettings).done(function (data) { - var result; - that.currentRequest = null; - result = options.transformResult(data); - that.processResponse(result, q, cacheKey); - options.onSearchComplete.call(that.element, q, result.suggestions); - }).fail(function (jqXHR, textStatus, errorThrown) { - options.onSearchError.call(that.element, q, jqXHR, textStatus, errorThrown); - }); - } - }, - - isBadQuery: function (q) { - if (!this.options.preventBadQueries){ - return false; - } - - var badQueries = this.badQueries, - i = badQueries.length; - - while (i--) { - if (q.indexOf(badQueries[i]) === 0) { - return true; - } - } - - return false; - }, - - hide: function () { - var that = this; - that.visible = false; - that.selectedIndex = -1; - $(that.suggestionsContainer).hide(); - that.signalHint(null); - }, - - show: function () { - this.visible = true; - $(this.suggestionsContainer).show(); - }, - - toggle: function () { - this.visible ? this.hide() : this.show(); - }, - - suggest: function () { - if (this.suggestions.length === 0) { - this.options.showNoSuggestionNotice ? this.noSuggestions() : this.hide(); - return; - } - - var that = this, - options = that.options, - formatResult = options.formatResult, - value = that.getQuery(that.currentValue), - className = that.classes.suggestion, - classSelected = that.classes.selected, - container = $(that.suggestionsContainer), - noSuggestionsContainer = $(that.noSuggestionsContainer), - beforeRender = options.beforeRender, - html = '', - index; - - if (options.triggerSelectOnValidInput) { - index = that.findSuggestionIndex(value); - if (index !== -1) { - that.select(index); - return; - } - } - - // Build suggestions inner HTML: - $.each(that.suggestions, function (i, suggestion) { - html += '<div class="' + className + '" data-index="' + i + '">' + formatResult(suggestion, value) + '</div>'; - }); - - this.adjustContainerWidth(); - - noSuggestionsContainer.detach(); - container.html(html); - - // Select first value by default: - if (options.autoSelectFirst) { - that.selectedIndex = 0; - container.children().first().addClass(classSelected); - } - - if ($.isFunction(beforeRender)) { - beforeRender.call(that.element, container); - } - - that.fixPosition(); - - container.show(); - that.visible = true; - - that.findBestHint(); - }, - - noSuggestions: function() { - var that = this, - container = $(that.suggestionsContainer), - noSuggestionsContainer = $(that.noSuggestionsContainer); - - this.adjustContainerWidth(); - - // Some explicit steps. Be careful here as it easy to get - // noSuggestionsContainer removed from DOM if not detached properly. - noSuggestionsContainer.detach(); - container.empty(); // clean suggestions if any - container.append(noSuggestionsContainer); - - that.fixPosition(); - - container.show(); - that.visible = true; - }, - - adjustContainerWidth: function() { - var that = this, - options = that.options, - width, - container = $(that.suggestionsContainer); - - // If width is auto, adjust width before displaying suggestions, - // because if instance was created before input had width, it will be zero. - // Also it adjusts if input width has changed. - // -2px to account for suggestions border. - if (options.width === 'auto') { - width = that.el.outerWidth() - 2; - container.width(width > 0 ? width : 300); - } - }, - - findBestHint: function () { - var that = this, - value = that.el.val().toLowerCase(), - bestMatch = null; - - if (!value) { - return; - } - - $.each(that.suggestions, function (i, suggestion) { - var foundMatch = suggestion.value.toLowerCase().indexOf(value) === 0; - if (foundMatch) { - bestMatch = suggestion; - } - return !foundMatch; - }); - - that.signalHint(bestMatch); - }, - - signalHint: function (suggestion) { - var hintValue = '', - that = this; - if (suggestion) { - hintValue = that.currentValue + suggestion.value.substr(that.currentValue.length); - } - if (that.hintValue !== hintValue) { - that.hintValue = hintValue; - that.hint = suggestion; - (this.options.onHint || $.noop)(hintValue); - } - }, - - verifySuggestionsFormat: function (suggestions) { - // If suggestions is string array, convert them to supported format: - if (suggestions.length && typeof suggestions[0] === 'string') { - return $.map(suggestions, function (value) { - return { value: value, data: null }; - }); - } - - return suggestions; - }, - - validateOrientation: function(orientation, fallback) { - orientation = $.trim(orientation || '').toLowerCase(); - - if($.inArray(orientation, ['auto', 'bottom', 'top']) === -1){ - orientation = fallback; - } - - return orientation; - }, - - processResponse: function (result, originalQuery, cacheKey) { - var that = this, - options = that.options; - - result.suggestions = that.verifySuggestionsFormat(result.suggestions); - - // Cache results if cache is not disabled: - if (!options.noCache) { - that.cachedResponse[cacheKey] = result; - if (options.preventBadQueries && result.suggestions.length === 0) { - that.badQueries.push(originalQuery); - } - } - - // Return if originalQuery is not matching current query: - if (originalQuery !== that.getQuery(that.currentValue)) { - return; - } - - that.suggestions = result.suggestions; - that.suggest(); - }, - - activate: function (index) { - var that = this, - activeItem, - selected = that.classes.selected, - container = $(that.suggestionsContainer), - children = container.children(); - - container.children('.' + selected).removeClass(selected); - - that.selectedIndex = index; - - if (that.selectedIndex !== -1 && children.length > that.selectedIndex) { - activeItem = children.get(that.selectedIndex); - $(activeItem).addClass(selected); - return activeItem; - } - - return null; - }, - - selectHint: function () { - var that = this, - i = $.inArray(that.hint, that.suggestions); - - that.select(i); - }, - - select: function (i) { - var that = this; - that.hide(); - that.onSelect(i); - }, - - moveUp: function () { - var that = this; - - if (that.selectedIndex === -1) { - return; - } - - if (that.selectedIndex === 0) { - $(that.suggestionsContainer).children().first().removeClass(that.classes.selected); - that.selectedIndex = -1; - that.el.val(that.currentValue); - that.findBestHint(); - return; - } - - that.adjustScroll(that.selectedIndex - 1); - }, - - moveDown: function () { - var that = this; - - if (that.selectedIndex === (that.suggestions.length - 1)) { - return; - } - - that.adjustScroll(that.selectedIndex + 1); - }, - - adjustScroll: function (index) { - var that = this, - activeItem = that.activate(index), - offsetTop, - upperBound, - lowerBound, - heightDelta = 25; - - if (!activeItem) { - return; - } - - offsetTop = activeItem.offsetTop; - upperBound = $(that.suggestionsContainer).scrollTop(); - lowerBound = upperBound + that.options.maxHeight - heightDelta; - - if (offsetTop < upperBound) { - $(that.suggestionsContainer).scrollTop(offsetTop); - } else if (offsetTop > lowerBound) { - $(that.suggestionsContainer).scrollTop(offsetTop - that.options.maxHeight + heightDelta); - } - - that.el.val(that.getValue(that.suggestions[index].value)); - that.signalHint(null); - }, - - onSelect: function (index) { - var that = this, - onSelectCallback = that.options.onSelect, - suggestion = that.suggestions[index]; - - that.currentValue = that.getValue(suggestion.value); - - if (that.currentValue !== that.el.val()) { - that.el.val(that.currentValue); - } - - that.signalHint(null); - that.suggestions = []; - that.selection = suggestion; - - if ($.isFunction(onSelectCallback)) { - onSelectCallback.call(that.element, suggestion); - } - }, - - getValue: function (value) { - var that = this, - delimiter = that.options.delimiter, - currentValue, - parts; - - if (!delimiter) { - return value; - } - - currentValue = that.currentValue; - parts = currentValue.split(delimiter); - - if (parts.length === 1) { - return value; - } - - return currentValue.substr(0, currentValue.length - parts[parts.length - 1].length) + value; - }, - - dispose: function () { - var that = this; - that.el.off('.autocomplete').removeData('autocomplete'); - that.disableKillerFn(); - $(window).off('resize.autocomplete', that.fixPositionCapture); - $(that.suggestionsContainer).remove(); - } - }; - - return Autocomplete; -})); \ No newline at end of file diff --git a/lib/web/jquery/farbtastic/css/farbtastic.css b/lib/web/jquery/farbtastic/css/farbtastic.css deleted file mode 100644 index 901b467bbfdf9023d9459bc32f7b8d5b81dec44d..0000000000000000000000000000000000000000 --- a/lib/web/jquery/farbtastic/css/farbtastic.css +++ /dev/null @@ -1,45 +0,0 @@ -/* - Farbtastic --------------------------------------- */ -.farbtastic { - display: none; - position: relative; - right: -120px; - top: -50px; - z-index: 1; -} - -.farbtastic * { - position: absolute; - cursor: crosshair; -} - -.farbtastic, .farbtastic .wheel { - width: 195px; - height: 195px; -} - -.farbtastic .color, .farbtastic .overlay { - top: 47px; - left: 47px; - width: 101px; - height: 101px; -} - -.farbtastic .wheel { - background: url(../images/wheel.png) no-repeat; - width: 195px; - height: 195px; -} - -.farbtastic .overlay { - background: url(../images/mask.png) no-repeat; -} - -.farbtastic .marker { - width: 17px; - height: 17px; - margin: -8px 0 0 -8px; - overflow: hidden; - background: url(../images/marker.png) no-repeat; -} diff --git a/lib/web/jquery/farbtastic/images/marker.png b/lib/web/jquery/farbtastic/images/marker.png deleted file mode 100644 index 3929bbb51dd950802bb9bf12a397d1ac1e140610..0000000000000000000000000000000000000000 Binary files a/lib/web/jquery/farbtastic/images/marker.png and /dev/null differ diff --git a/lib/web/jquery/farbtastic/images/mask.png b/lib/web/jquery/farbtastic/images/mask.png deleted file mode 100644 index b0a4d406fb645fc8d7e6891ffd85d11b3e181030..0000000000000000000000000000000000000000 Binary files a/lib/web/jquery/farbtastic/images/mask.png and /dev/null differ diff --git a/lib/web/jquery/farbtastic/images/wheel.png b/lib/web/jquery/farbtastic/images/wheel.png deleted file mode 100644 index 97b343d98c744561e1acb8f98d2b1a24a5bc0da2..0000000000000000000000000000000000000000 Binary files a/lib/web/jquery/farbtastic/images/wheel.png and /dev/null differ diff --git a/lib/web/jquery/farbtastic/jquery.farbtastic.js b/lib/web/jquery/farbtastic/jquery.farbtastic.js deleted file mode 100644 index c6a5b4524988c0c46337fe0601a430affb7856eb..0000000000000000000000000000000000000000 --- a/lib/web/jquery/farbtastic/jquery.farbtastic.js +++ /dev/null @@ -1,351 +0,0 @@ -/** - * Farbtastic Color Picker 1.2 - * © 2008 Steven Wittens - * - * 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 2 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, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -define([ - "jquery" -], function(jQuery){ - -jQuery.fn.farbtastic = function (callback) { - jQuery.farbtastic(this, callback); - return this; -}; - -jQuery.farbtastic = function (container, callback) { - var container = jQuery(container).get(0); - return container.farbtastic || (container.farbtastic = new jQuery._farbtastic(container, callback)); -} - -jQuery._farbtastic = function (container, callback) { - // Store farbtastic object - var fb = this; - - // Insert markup - jQuery(container).html('<div class="farbtastic"><div class="color"></div><div class="wheel"></div><div class="overlay"></div><div class="h-marker marker"></div><div class="sl-marker marker"></div></div>'); - var e = jQuery('.farbtastic', container); - fb.wheel = jQuery('.wheel', container).get(0); - // Dimensions - fb.radius = 84; - fb.square = 100; - fb.width = 194; - - // Fix background PNGs in IE6 - if (navigator.appVersion.match(/MSIE [0-6]\./)) { - jQuery('*', e).each(function () { - if (this.currentStyle.backgroundImage != 'none') { - var image = this.currentStyle.backgroundImage; - image = this.currentStyle.backgroundImage.substring(5, image.length - 2); - jQuery(this).css({ - 'backgroundImage': 'none', - 'filter': "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='" + image + "')" - }); - } - }); - } - - /** - * Link to the given element(s) or callback. - */ - fb.linkTo = function (callback) { - // Unbind previous nodes - if (typeof fb.callback == 'object') { - jQuery(fb.callback).unbind('keyup', fb.updateValue); - } - - // Reset color - fb.color = null; - - // Bind callback or elements - if (typeof callback == 'function') { - fb.callback = callback; - } - else if (typeof callback == 'object' || typeof callback == 'string') { - fb.callback = jQuery(callback); - fb.callback.bind('keyup', fb.updateValue); - if (fb.callback.get(0).value) { - fb.setColor(fb.callback.get(0).value); - } - } - return this; - } - fb.updateValue = function (event) { - if (this.value && this.value != fb.color) { - fb.setColor(this.value); - } - } - - /** - * Change color with HTML syntax #123456 - */ - fb.setColor = function (color) { - var unpack = fb.unpack(color); - if (fb.color != color && unpack) { - fb.color = color; - fb.rgb = unpack; - fb.hsl = fb.RGBToHSL(fb.rgb); - fb.updateDisplay(); - } - return this; - } - - /** - * Change color with HSL triplet [0..1, 0..1, 0..1] - */ - fb.setHSL = function (hsl) { - fb.hsl = hsl; - fb.rgb = fb.HSLToRGB(hsl); - fb.color = fb.pack(fb.rgb); - fb.updateDisplay(); - return this; - } - - ///////////////////////////////////////////////////// - - /** - * Retrieve the coordinates of the given event relative to the center - * of the widget. - */ - fb.widgetCoords = function (event) { - var x, y; - var el = event.target || event.srcElement; - var reference = fb.wheel; - - if (typeof event.offsetX != 'undefined') { - // Use offset coordinates and find common offsetParent - var pos = { x: event.offsetX, y: event.offsetY }; - - // Send the coordinates upwards through the offsetParent chain. - var e = el; - while (e) { - e.mouseX = pos.x; - e.mouseY = pos.y; - pos.x += e.offsetLeft; - pos.y += e.offsetTop; - e = e.offsetParent; - } - - // Look for the coordinates starting from the wheel widget. - var e = reference; - var offset = { x: 0, y: 0 } - while (e) { - if (typeof e.mouseX != 'undefined') { - x = e.mouseX - offset.x; - y = e.mouseY - offset.y; - break; - } - offset.x += e.offsetLeft; - offset.y += e.offsetTop; - e = e.offsetParent; - } - - // Reset stored coordinates - e = el; - while (e) { - e.mouseX = undefined; - e.mouseY = undefined; - e = e.offsetParent; - } - } - else { - // Use absolute coordinates - var pos = fb.absolutePosition(reference); - x = (event.pageX || 0*(event.clientX + jQuery('html').get(0).scrollLeft)) - pos.x; - y = (event.pageY || 0*(event.clientY + jQuery('html').get(0).scrollTop)) - pos.y; - } - // Subtract distance to middle - return { x: x - fb.width / 2, y: y - fb.width / 2 }; - } - - /** - * Mousedown handler - */ - fb.mousedown = function (event) { - // Capture mouse - if (!document.dragging) { - jQuery(document).bind('mousemove', fb.mousemove).bind('mouseup', fb.mouseup); - document.dragging = true; - } - - // Check which area is being dragged - var pos = fb.widgetCoords(event); - fb.circleDrag = Math.max(Math.abs(pos.x), Math.abs(pos.y)) * 2 > fb.square; - - // Process - fb.mousemove(event); - return false; - } - - /** - * Mousemove handler - */ - fb.mousemove = function (event) { - // Get coordinates relative to color picker center - var pos = fb.widgetCoords(event); - - // Set new HSL parameters - if (fb.circleDrag) { - var hue = Math.atan2(pos.x, -pos.y) / 6.28; - if (hue < 0) hue += 1; - fb.setHSL([hue, fb.hsl[1], fb.hsl[2]]); - } - else { - var sat = Math.max(0, Math.min(1, -(pos.x / fb.square) + .5)); - var lum = Math.max(0, Math.min(1, -(pos.y / fb.square) + .5)); - fb.setHSL([fb.hsl[0], sat, lum]); - } - return false; - } - - /** - * Mouseup handler - */ - fb.mouseup = function () { - // Uncapture mouse - jQuery(document).unbind('mousemove', fb.mousemove); - jQuery(document).unbind('mouseup', fb.mouseup); - document.dragging = false; - } - - /** - * Update the markers and styles - */ - fb.updateDisplay = function () { - // Markers - var angle = fb.hsl[0] * 6.28; - jQuery('.h-marker', e).css({ - left: Math.round(Math.sin(angle) * fb.radius + fb.width / 2) + 'px', - top: Math.round(-Math.cos(angle) * fb.radius + fb.width / 2) + 'px' - }); - - jQuery('.sl-marker', e).css({ - left: Math.round(fb.square * (.5 - fb.hsl[1]) + fb.width / 2) + 'px', - top: Math.round(fb.square * (.5 - fb.hsl[2]) + fb.width / 2) + 'px' - }); - - // Saturation/Luminance gradient - jQuery('.color', e).css('backgroundColor', fb.pack(fb.HSLToRGB([fb.hsl[0], 1, 0.5]))); - - // Linked elements or callback - if (typeof fb.callback == 'object') { - // Set background/foreground color - jQuery(fb.callback).css({ - backgroundColor: fb.color, - color: fb.hsl[2] > 0.5 ? '#000' : '#fff' - }); - - // Change linked value - jQuery(fb.callback).each(function() { - if (this.value && this.value != fb.color) { - this.value = fb.color; - } - }); - } - else if (typeof fb.callback == 'function') { - fb.callback.call(fb, fb.color); - } - } - - /** - * Get absolute position of element - */ - fb.absolutePosition = function (el) { - var r = { x: el.offsetLeft, y: el.offsetTop }; - // Resolve relative to offsetParent - if (el.offsetParent) { - var tmp = fb.absolutePosition(el.offsetParent); - r.x += tmp.x; - r.y += tmp.y; - } - return r; - }; - - /* Various color utility functions */ - fb.pack = function (rgb) { - var r = Math.round(rgb[0] * 255); - var g = Math.round(rgb[1] * 255); - var b = Math.round(rgb[2] * 255); - return '#' + (r < 16 ? '0' : '') + r.toString(16) + - (g < 16 ? '0' : '') + g.toString(16) + - (b < 16 ? '0' : '') + b.toString(16); - } - - fb.unpack = function (color) { - if (color.length == 7) { - return [parseInt('0x' + color.substring(1, 3)) / 255, - parseInt('0x' + color.substring(3, 5)) / 255, - parseInt('0x' + color.substring(5, 7)) / 255]; - } - else if (color.length == 4) { - return [parseInt('0x' + color.substring(1, 2)) / 15, - parseInt('0x' + color.substring(2, 3)) / 15, - parseInt('0x' + color.substring(3, 4)) / 15]; - } - } - - fb.HSLToRGB = function (hsl) { - var m1, m2, r, g, b; - var h = hsl[0], s = hsl[1], l = hsl[2]; - m2 = (l <= 0.5) ? l * (s + 1) : l + s - l*s; - m1 = l * 2 - m2; - return [this.hueToRGB(m1, m2, h+0.33333), - this.hueToRGB(m1, m2, h), - this.hueToRGB(m1, m2, h-0.33333)]; - } - - fb.hueToRGB = function (m1, m2, h) { - h = (h < 0) ? h + 1 : ((h > 1) ? h - 1 : h); - if (h * 6 < 1) return m1 + (m2 - m1) * h * 6; - if (h * 2 < 1) return m2; - if (h * 3 < 2) return m1 + (m2 - m1) * (0.66666 - h) * 6; - return m1; - } - - fb.RGBToHSL = function (rgb) { - var min, max, delta, h, s, l; - var r = rgb[0], g = rgb[1], b = rgb[2]; - min = Math.min(r, Math.min(g, b)); - max = Math.max(r, Math.max(g, b)); - delta = max - min; - l = (min + max) / 2; - s = 0; - if (l > 0 && l < 1) { - s = delta / (l < 0.5 ? (2 * l) : (2 - 2 * l)); - } - h = 0; - if (delta > 0) { - if (max == r && max != g) h += (g - b) / delta; - if (max == g && max != b) h += (2 + (b - r) / delta); - if (max == b && max != r) h += (4 + (r - g) / delta); - h /= 6; - } - return [h, s, l]; - } - - // Install mousedown handler (the others are set on the document on-demand) - jQuery('*', e).mousedown(fb.mousedown); - - // Init color - fb.setColor('#000000'); - - // Set linked elements/callback - if (callback) { - fb.linkTo(callback); - } -} - -}); \ No newline at end of file diff --git a/lib/web/jquery/fileUploader/bootstrap.js b/lib/web/jquery/fileUploader/bootstrap.js deleted file mode 100644 index 10747cbd61d0c05289a2cc82a702ed8433f0a73a..0000000000000000000000000000000000000000 --- a/lib/web/jquery/fileUploader/bootstrap.js +++ /dev/null @@ -1,3 +0,0 @@ -require([ - "jquery/file-uploader" -]); \ No newline at end of file diff --git a/lib/web/jquery/jquery-ui-1.9.2.js b/lib/web/jquery/jquery-ui-1.9.2.js index cc141602954f86adcce844f8ee003507e05ad12f..d556f0d7f605fcc1ab4dad10ebd7ee6d3e5bc35c 100644 --- a/lib/web/jquery/jquery-ui-1.9.2.js +++ b/lib/web/jquery/jquery-ui-1.9.2.js @@ -3,17 +3,6 @@ * Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.effect.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js, jquery.ui.menu.js, jquery.ui.position.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js * Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */ -(function (factory) { - if (typeof define === 'function' && define.amd) { - define([ - "jquery", - "jquery/jquery.cookie" - ], factory); - } else { - factory(jQuery); - } -}(function (jQuery) { - (function( $, undefined ) { var uuid = 0, @@ -14942,5 +14931,3 @@ $.widget( "ui.tooltip", { }); }( jQuery ) ); - -})); \ No newline at end of file diff --git a/lib/web/jquery/jquery-ui.js b/lib/web/jquery/jquery-ui.js index b64228ac1c49c7a42ab36d6163ed59cd57d534af..63e278a8fd46100febc22f2874248550058a9732 100644 --- a/lib/web/jquery/jquery-ui.js +++ b/lib/web/jquery/jquery-ui.js @@ -2,10 +2,7 @@ * http://jqueryui.com * Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.effect.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js, jquery.ui.menu.js, jquery.ui.position.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js * Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */ -define([ - "jquery", - "jquery/jquery.cookie" -], function(jQuery){ + (function( $, undefined ) { var uuid = 0, @@ -15042,5 +15039,3 @@ $.widget( "ui.tooltip", { }); }( jQuery ) ); - -}); \ No newline at end of file diff --git a/lib/web/jquery/jquery.min.js b/lib/web/jquery/jquery.min.js index 73f33fb3aa529308d1f3f2f4fc253c4abed95374..046e93aa15e754747f529679e8c1567377f1bd6d 100644 --- a/lib/web/jquery/jquery.min.js +++ b/lib/web/jquery/jquery.min.js @@ -1,4 +1,4 @@ /*! jQuery v1.11.0 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ !function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k="".trim,l={},m="1.11.0",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return a-parseFloat(a)>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(l.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:k&&!k.call("\ufeff\xa0")?function(a){return null==a?"":k.call(a)}:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||n.guid++,e):void 0},now:function(){return+new Date},support:l}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s="sizzle"+-new Date,t=a.document,u=0,v=0,w=eb(),x=eb(),y=eb(),z=function(a,b){return a===b&&(j=!0),0},A="undefined",B=1<<31,C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=D.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",M=L.replace("w","w#"),N="\\["+K+"*("+L+")"+K+"*(?:([*^$|!~]?=)"+K+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+M+")|)|)"+K+"*\\]",O=":("+L+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+N.replace(3,8)+")*)|.*)\\)|)",P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(O),U=new RegExp("^"+M+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L.replace("w","w*")+")"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=/'|\\/g,ab=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),bb=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{G.apply(D=H.call(t.childNodes),t.childNodes),D[t.childNodes.length].nodeType}catch(cb){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function db(a,b,d,e){var f,g,h,i,j,m,p,q,u,v;if((b?b.ownerDocument||b:t)!==l&&k(b),b=b||l,d=d||[],!a||"string"!=typeof a)return d;if(1!==(i=b.nodeType)&&9!==i)return[];if(n&&!e){if(f=Z.exec(a))if(h=f[1]){if(9===i){if(g=b.getElementById(h),!g||!g.parentNode)return d;if(g.id===h)return d.push(g),d}else if(b.ownerDocument&&(g=b.ownerDocument.getElementById(h))&&r(b,g)&&g.id===h)return d.push(g),d}else{if(f[2])return G.apply(d,b.getElementsByTagName(a)),d;if((h=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(h)),d}if(c.qsa&&(!o||!o.test(a))){if(q=p=s,u=b,v=9===i&&a,1===i&&"object"!==b.nodeName.toLowerCase()){m=ob(a),(p=b.getAttribute("id"))?q=p.replace(_,"\\$&"):b.setAttribute("id",q),q="[id='"+q+"'] ",j=m.length;while(j--)m[j]=q+pb(m[j]);u=$.test(a)&&mb(b.parentNode)||b,v=m.join(",")}if(v)try{return G.apply(d,u.querySelectorAll(v)),d}catch(w){}finally{p||b.removeAttribute("id")}}}return xb(a.replace(P,"$1"),b,d,e)}function eb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function fb(a){return a[s]=!0,a}function gb(a){var b=l.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function hb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function ib(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||B)-(~a.sourceIndex||B);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function jb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function kb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function lb(a){return fb(function(b){return b=+b,fb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function mb(a){return a&&typeof a.getElementsByTagName!==A&&a}c=db.support={},f=db.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},k=db.setDocument=function(a){var b,e=a?a.ownerDocument||a:t,g=e.defaultView;return e!==l&&9===e.nodeType&&e.documentElement?(l=e,m=e.documentElement,n=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){k()},!1):g.attachEvent&&g.attachEvent("onunload",function(){k()})),c.attributes=gb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=gb(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(e.getElementsByClassName)&&gb(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=gb(function(a){return m.appendChild(a).id=s,!e.getElementsByName||!e.getElementsByName(s).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==A&&n){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ab,bb);return function(a){var c=typeof a.getAttributeNode!==A&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==A?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==A&&n?b.getElementsByClassName(a):void 0},p=[],o=[],(c.qsa=Y.test(e.querySelectorAll))&&(gb(function(a){a.innerHTML="<select t=''><option selected=''></option></select>",a.querySelectorAll("[t^='']").length&&o.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||o.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll(":checked").length||o.push(":checked")}),gb(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&o.push("name"+K+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||o.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),o.push(",.*:")})),(c.matchesSelector=Y.test(q=m.webkitMatchesSelector||m.mozMatchesSelector||m.oMatchesSelector||m.msMatchesSelector))&&gb(function(a){c.disconnectedMatch=q.call(a,"div"),q.call(a,"[s!='']:x"),p.push("!=",O)}),o=o.length&&new RegExp(o.join("|")),p=p.length&&new RegExp(p.join("|")),b=Y.test(m.compareDocumentPosition),r=b||Y.test(m.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},z=b?function(a,b){if(a===b)return j=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===t&&r(t,a)?-1:b===e||b.ownerDocument===t&&r(t,b)?1:i?I.call(i,a)-I.call(i,b):0:4&d?-1:1)}:function(a,b){if(a===b)return j=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],k=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:i?I.call(i,a)-I.call(i,b):0;if(f===g)return ib(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)k.unshift(c);while(h[d]===k[d])d++;return d?ib(h[d],k[d]):h[d]===t?-1:k[d]===t?1:0},e):l},db.matches=function(a,b){return db(a,null,null,b)},db.matchesSelector=function(a,b){if((a.ownerDocument||a)!==l&&k(a),b=b.replace(S,"='$1']"),!(!c.matchesSelector||!n||p&&p.test(b)||o&&o.test(b)))try{var d=q.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return db(b,l,null,[a]).length>0},db.contains=function(a,b){return(a.ownerDocument||a)!==l&&k(a),r(a,b)},db.attr=function(a,b){(a.ownerDocument||a)!==l&&k(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!n):void 0;return void 0!==f?f:c.attributes||!n?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},db.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},db.uniqueSort=function(a){var b,d=[],e=0,f=0;if(j=!c.detectDuplicates,i=!c.sortStable&&a.slice(0),a.sort(z),j){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return i=null,a},e=db.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=db.selectors={cacheLength:50,createPseudo:fb,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ab,bb),a[3]=(a[4]||a[5]||"").replace(ab,bb),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||db.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&db.error(a[0]),a},PSEUDO:function(a){var b,c=!a[5]&&a[2];return V.CHILD.test(a[0])?null:(a[3]&&void 0!==a[4]?a[2]=a[4]:c&&T.test(c)&&(b=ob(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ab,bb).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=w[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&w(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==A&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=db.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),t=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&t){k=q[s]||(q[s]={}),j=k[a]||[],n=j[0]===u&&j[1],m=j[0]===u&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[u,n,m];break}}else if(t&&(j=(b[s]||(b[s]={}))[a])&&j[0]===u)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(t&&((l[s]||(l[s]={}))[a]=[u,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||db.error("unsupported pseudo: "+a);return e[s]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?fb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:fb(function(a){var b=[],c=[],d=g(a.replace(P,"$1"));return d[s]?fb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:fb(function(a){return function(b){return db(a,b).length>0}}),contains:fb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:fb(function(a){return U.test(a||"")||db.error("unsupported lang: "+a),a=a.replace(ab,bb).toLowerCase(),function(b){var c;do if(c=n?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===m},focus:function(a){return a===l.activeElement&&(!l.hasFocus||l.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:lb(function(){return[0]}),last:lb(function(a,b){return[b-1]}),eq:lb(function(a,b,c){return[0>c?c+b:c]}),even:lb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:lb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:lb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:lb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=jb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=kb(b);function nb(){}nb.prototype=d.filters=d.pseudos,d.setFilters=new nb;function ob(a,b){var c,e,f,g,h,i,j,k=x[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=Q.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?db.error(a):x(a,i).slice(0)}function pb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function qb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=v++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[u,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[s]||(b[s]={}),(h=i[d])&&h[0]===u&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function rb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function sb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function tb(a,b,c,d,e,f){return d&&!d[s]&&(d=tb(d)),e&&!e[s]&&(e=tb(e,f)),fb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||wb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:sb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=sb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=sb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ub(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],i=g||d.relative[" "],j=g?1:0,k=qb(function(a){return a===b},i,!0),l=qb(function(a){return I.call(b,a)>-1},i,!0),m=[function(a,c,d){return!g&&(d||c!==h)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>j;j++)if(c=d.relative[a[j].type])m=[qb(rb(m),c)];else{if(c=d.filter[a[j].type].apply(null,a[j].matches),c[s]){for(e=++j;f>e;e++)if(d.relative[a[e].type])break;return tb(j>1&&rb(m),j>1&&pb(a.slice(0,j-1).concat({value:" "===a[j-2].type?"*":""})).replace(P,"$1"),c,e>j&&ub(a.slice(j,e)),f>e&&ub(a=a.slice(e)),f>e&&pb(a))}m.push(c)}return rb(m)}function vb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,i,j,k){var m,n,o,p=0,q="0",r=f&&[],s=[],t=h,v=f||e&&d.find.TAG("*",k),w=u+=null==t?1:Math.random()||.1,x=v.length;for(k&&(h=g!==l&&g);q!==x&&null!=(m=v[q]);q++){if(e&&m){n=0;while(o=a[n++])if(o(m,g,i)){j.push(m);break}k&&(u=w)}c&&((m=!o&&m)&&p--,f&&r.push(m))}if(p+=q,c&&q!==p){n=0;while(o=b[n++])o(r,s,g,i);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=E.call(j));s=sb(s)}G.apply(j,s),k&&!f&&s.length>0&&p+b.length>1&&db.uniqueSort(j)}return k&&(u=w,h=t),r};return c?fb(f):f}g=db.compile=function(a,b){var c,d=[],e=[],f=y[a+" "];if(!f){b||(b=ob(a)),c=b.length;while(c--)f=ub(b[c]),f[s]?d.push(f):e.push(f);f=y(a,vb(e,d))}return f};function wb(a,b,c){for(var d=0,e=b.length;e>d;d++)db(a,b[d],c);return c}function xb(a,b,e,f){var h,i,j,k,l,m=ob(a);if(!f&&1===m.length){if(i=m[0]=m[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&c.getById&&9===b.nodeType&&n&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(ab,bb),b)||[])[0],!b)return e;a=a.slice(i.shift().value.length)}h=V.needsContext.test(a)?0:i.length;while(h--){if(j=i[h],d.relative[k=j.type])break;if((l=d.find[k])&&(f=l(j.matches[0].replace(ab,bb),$.test(i[0].type)&&mb(b.parentNode)||b))){if(i.splice(h,1),a=f.length&&pb(i),!a)return G.apply(e,f),e;break}}}return g(a,m)(f,b,!n,e,$.test(a)&&mb(b.parentNode)||b),e}return c.sortStable=s.split("").sort(z).join("")===s,c.detectDuplicates=!!j,k(),c.sortDetached=gb(function(a){return 1&a.compareDocumentPosition(l.createElement("div"))}),gb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||hb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&gb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||hb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),gb(function(a){return null==a.getAttribute("disabled")})||hb(J,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),db}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=a.document,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,B=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:A.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:z,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=z.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return y.find(a);this.length=1,this[0]=d}return this.context=z,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};B.prototype=n.fn,y=n(z);var C=/^(?:parents|prev(?:Until|All))/,D={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!n(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function E(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return E(a,"nextSibling")},prev:function(a){return E(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(D[a]||(e=n.unique(e)),C.test(a)&&(e=e.reverse())),this.pushStack(e)}});var F=/\S+/g,G={};function H(a){var b=G[a]={};return n.each(a.match(F)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?G[a]||H(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&n.each(arguments,function(a,c){var d;while((d=n.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){if(a===!0?!--n.readyWait:!n.isReady){if(!z.body)return setTimeout(n.ready);n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(z,[n]),n.fn.trigger&&n(z).trigger("ready").off("ready"))}}});function J(){z.addEventListener?(z.removeEventListener("DOMContentLoaded",K,!1),a.removeEventListener("load",K,!1)):(z.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(z.addEventListener||"load"===event.type||"complete"===z.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===z.readyState)setTimeout(n.ready);else if(z.addEventListener)z.addEventListener("DOMContentLoaded",K,!1),a.addEventListener("load",K,!1);else{z.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&z.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!n.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}J(),n.ready()}}()}return I.promise(b)};var L="undefined",M;for(M in n(l))break;l.ownLast="0"!==M,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c=z.getElementsByTagName("body")[0];c&&(a=z.createElement("div"),a.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",b=z.createElement("div"),c.appendChild(a).appendChild(b),typeof b.style.zoom!==L&&(b.style.cssText="border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1",(l.inlineBlockNeedsLayout=3===b.offsetWidth)&&(c.style.zoom=1)),c.removeChild(a),a=b=null)}),function(){var a=z.createElement("div");if(null==l.deleteExpando){l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}}a=null}(),n.acceptData=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(n.acceptData(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f }}function S(a,b,c){if(n.acceptData(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d]));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=["Top","Right","Bottom","Left"],V=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},W=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},X=/^(?:checkbox|radio)$/i;!function(){var a=z.createDocumentFragment(),b=z.createElement("div"),c=z.createElement("input");if(b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a>",l.leadingWhitespace=3===b.firstChild.nodeType,l.tbody=!b.getElementsByTagName("tbody").length,l.htmlSerialize=!!b.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==z.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,a.appendChild(c),l.appendChecked=c.checked,b.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,a.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",l.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){l.noCloneEvent=!1}),b.cloneNode(!0).click()),null==l.deleteExpando){l.deleteExpando=!0;try{delete b.test}catch(d){l.deleteExpando=!1}}a=b=c=null}(),function(){var b,c,d=z.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),l[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var Y=/^(?:input|select|textarea)$/i,Z=/^key/,$=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,ab=/^([^.]*)(?:\.(.+)|)$/;function bb(){return!0}function cb(){return!1}function db(){try{return z.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof n===L||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(F)||[""],h=b.length;while(h--)f=ab.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(F)||[""],j=b.length;while(j--)if(h=ab.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,m,o=[d||z],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||z,3!==d.nodeType&&8!==d.nodeType&&!_.test(p+n.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[n.expando]?b:new n.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),k=n.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!n.isWindow(d)){for(i=k.delegateType||p,_.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||z)&&o.push(l.defaultView||l.parentWindow||a)}m=0;while((h=o[m++])&&!b.isPropagationStopped())b.type=m>1?i:k.bindType||p,f=(n._data(h,"events")||{})[b.type]&&n._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&n.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&n.acceptData(d)&&g&&d[p]&&!n.isWindow(d)){l=d[g],l&&(d[g]=null),n.event.triggered=p;try{d[p]()}catch(r){}n.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((n.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?n(c,this).index(i)>=0:n.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=$.test(e)?this.mouseHooks:Z.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||z),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||z,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==db()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===db()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=z.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===L&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&(a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault())?bb:cb):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:cb,isPropagationStopped:cb,isImmediatePropagationStopped:cb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=bb,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=bb,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=bb,this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submitBubbles||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?b.form:void 0;c&&!n._data(c,"submitBubbles")&&(n.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),n._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.changeBubbles||(n.event.special.change={setup:function(){return Y.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),n.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),n.event.simulate("change",this,a,!0)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;Y.test(b.nodeName)&&!n._data(b,"changeBubbles")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a,!0)}),n._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!Y.test(this.nodeName)}}),l.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=cb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return n().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=cb),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});function eb(a){var b=fb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var fb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gb=/ jQuery\d+="(?:null|\d+)"/g,hb=new RegExp("<(?:"+fb+")[\\s/>]","i"),ib=/^\s+/,jb=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,kb=/<([\w:]+)/,lb=/<tbody/i,mb=/<|&#?\w+;/,nb=/<(?:script|style|link)/i,ob=/checked\s*(?:[^=]|=\s*.checked.)/i,pb=/^$|\/(?:java|ecma)script/i,qb=/^true\/(.*)/,rb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,sb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},tb=eb(z),ub=tb.appendChild(z.createElement("div"));sb.optgroup=sb.option,sb.tbody=sb.tfoot=sb.colgroup=sb.caption=sb.thead,sb.th=sb.td;function vb(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==L?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==L?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,vb(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function wb(a){X.test(a.type)&&(a.defaultChecked=a.checked)}function xb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function yb(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function zb(a){var b=qb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ab(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}function Bb(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Cb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(yb(b).text=a.text,zb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&X.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}n.extend({clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!hb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ub.innerHTML=a.outerHTML,ub.removeChild(f=ub.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=vb(f),h=vb(a),g=0;null!=(e=h[g]);++g)d[g]&&Cb(e,d[g]);if(b)if(c)for(h=h||vb(a),d=d||vb(f),g=0;null!=(e=h[g]);g++)Bb(e,d[g]);else Bb(a,f);return d=vb(f,"script"),d.length>0&&Ab(d,!i&&vb(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k,m=a.length,o=eb(b),p=[],q=0;m>q;q++)if(f=a[q],f||0===f)if("object"===n.type(f))n.merge(p,f.nodeType?[f]:f);else if(mb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(kb.exec(f)||["",""])[1].toLowerCase(),k=sb[i]||sb._default,h.innerHTML=k[1]+f.replace(jb,"<$1></$2>")+k[2],e=k[0];while(e--)h=h.lastChild;if(!l.leadingWhitespace&&ib.test(f)&&p.push(b.createTextNode(ib.exec(f)[0])),!l.tbody){f="table"!==i||lb.test(f)?"<table>"!==k[1]||lb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)n.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}n.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),l.appendChecked||n.grep(vb(p,"input"),wb),q=0;while(f=p[q++])if((!d||-1===n.inArray(f,d))&&(g=n.contains(f.ownerDocument,f),h=vb(o.appendChild(f),"script"),g&&Ab(h),c)){e=0;while(f=h[e++])pb.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.deleteExpando,m=n.event.special;null!=(d=a[h]);h++)if((b||n.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k?delete d[i]:typeof d.removeAttribute!==L?d.removeAttribute(i):d[i]=null,c.push(f))}}}),n.fn.extend({text:function(a){return W(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||z).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=xb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(vb(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&Ab(vb(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(vb(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return W(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(gb,""):void 0;if(!("string"!=typeof a||nb.test(a)||!l.htmlSerialize&&hb.test(a)||!l.leadingWhitespace&&ib.test(a)||sb[(kb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(jb,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(vb(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(vb(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,k=this.length,m=this,o=k-1,p=a[0],q=n.isFunction(p);if(q||k>1&&"string"==typeof p&&!l.checkClone&&ob.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(k&&(i=n.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=n.map(vb(i,"script"),yb),f=g.length;k>j;j++)d=i,j!==o&&(d=n.clone(d,!0,!0),f&&n.merge(g,vb(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,n.map(g,zb),j=0;f>j;j++)d=g[j],pb.test(d.type||"")&&!n._data(d,"globalEval")&&n.contains(h,d)&&(d.src?n._evalUrl&&n._evalUrl(d.src):n.globalEval((d.text||d.textContent||d.innerHTML||"").replace(rb,"")));i=c=null}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],g=n(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Db,Eb={};function Fb(b,c){var d=n(c.createElement(b)).appendTo(c.body),e=a.getDefaultComputedStyle?a.getDefaultComputedStyle(d[0]).display:n.css(d[0],"display");return d.detach(),e}function Gb(a){var b=z,c=Eb[a];return c||(c=Fb(a,b),"none"!==c&&c||(Db=(Db||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Db[0].contentWindow||Db[0].contentDocument).document,b.write(),b.close(),c=Fb(a,b),Db.detach()),Eb[a]=c),c}!function(){var a,b,c=z.createElement("div"),d="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";c.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],a.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(a.style.opacity),l.cssFloat=!!a.style.cssFloat,c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===c.style.backgroundClip,a=c=null,l.shrinkWrapBlocks=function(){var a,c,e,f;if(null==b){if(a=z.getElementsByTagName("body")[0],!a)return;f="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",c=z.createElement("div"),e=z.createElement("div"),a.appendChild(c).appendChild(e),b=!1,typeof e.style.zoom!==L&&(e.style.cssText=d+";width:1px;padding:1px;zoom:1",e.innerHTML="<div></div>",e.firstChild.style.width="5px",b=3!==e.offsetWidth),a.removeChild(c),a=c=e=null}return b}}();var Hb=/^margin/,Ib=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Jb,Kb,Lb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Jb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),Ib.test(g)&&Hb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):z.documentElement.currentStyle&&(Jb=function(a){return a.currentStyle},Kb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Jb(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ib.test(g)&&!Lb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Mb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h=z.createElement("div"),i="border:0;width:0;height:0;position:absolute;top:0;left:-9999px",j="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;padding:0;margin:0;border:0";h.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",b=h.getElementsByTagName("a")[0],b.style.cssText="float:left;opacity:.5",l.opacity=/^0.5/.test(b.style.opacity),l.cssFloat=!!b.style.cssFloat,h.style.backgroundClip="content-box",h.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===h.style.backgroundClip,b=h=null,n.extend(l,{reliableHiddenOffsets:function(){if(null!=c)return c;var a,b,d,e=z.createElement("div"),f=z.getElementsByTagName("body")[0];if(f)return e.setAttribute("className","t"),e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=z.createElement("div"),a.style.cssText=i,f.appendChild(a).appendChild(e),e.innerHTML="<table><tr><td></td><td>t</td></tr></table>",b=e.getElementsByTagName("td"),b[0].style.cssText="padding:0;margin:0;border:0;display:none",d=0===b[0].offsetHeight,b[0].style.display="",b[1].style.display="none",c=d&&0===b[0].offsetHeight,f.removeChild(a),e=f=null,c},boxSizing:function(){return null==d&&k(),d},boxSizingReliable:function(){return null==e&&k(),e},pixelPosition:function(){return null==f&&k(),f},reliableMarginRight:function(){var b,c,d,e;if(null==g&&a.getComputedStyle){if(b=z.getElementsByTagName("body")[0],!b)return;c=z.createElement("div"),d=z.createElement("div"),c.style.cssText=i,b.appendChild(c).appendChild(d),e=d.appendChild(z.createElement("div")),e.style.cssText=d.style.cssText=j,e.style.marginRight=e.style.width="0",d.style.width="1px",g=!parseFloat((a.getComputedStyle(e,null)||{}).marginRight),b.removeChild(c)}return g}});function k(){var b,c,h=z.getElementsByTagName("body")[0];h&&(b=z.createElement("div"),c=z.createElement("div"),b.style.cssText=i,h.appendChild(b).appendChild(c),c.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;display:block;padding:1px;border:1px;width:4px;margin-top:1%;top:1%",n.swap(h,null!=h.style.zoom?{zoom:1}:{},function(){d=4===c.offsetWidth}),e=!0,f=!1,g=!0,a.getComputedStyle&&(f="1%"!==(a.getComputedStyle(c,null)||{}).top,e="4px"===(a.getComputedStyle(c,null)||{width:"4px"}).width),h.removeChild(b),c=h=null)}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Nb=/alpha\([^)]*\)/i,Ob=/opacity\s*=\s*([^)]*)/,Pb=/^(none|table(?!-c[ea]).+)/,Qb=new RegExp("^("+T+")(.*)$","i"),Rb=new RegExp("^([+-])=("+T+")","i"),Sb={position:"absolute",visibility:"hidden",display:"block"},Tb={letterSpacing:0,fontWeight:400},Ub=["Webkit","O","Moz","ms"];function Vb(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ub.length;while(e--)if(b=Ub[e]+c,b in a)return b;return d}function Wb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&V(d)&&(f[g]=n._data(d,"olddisplay",Gb(d.nodeName)))):f[g]||(e=V(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Xb(a,b,c){var d=Qb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Yb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+U[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+U[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+U[f]+"Width",!0,e))):(g+=n.css(a,"padding"+U[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+U[f]+"Width",!0,e)));return g}function Zb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Jb(a),g=l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Kb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ib.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Yb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Kb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=Vb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Rb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]="",i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Vb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Kb(a,b,d)),"normal"===f&&b in Tb&&(f=Tb[b]),""===c||c?(e=parseFloat(f),c===!0||n.isNumeric(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?0===a.offsetWidth&&Pb.test(n.css(a,"display"))?n.swap(a,Sb,function(){return Zb(a,b,d)}):Zb(a,b,d):void 0},set:function(a,c,d){var e=d&&Jb(a);return Xb(a,c,d?Yb(a,b,d,l.boxSizing()&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Ob.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Nb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Nb.test(f)?f.replace(Nb,e):f+" "+e)}}),n.cssHooks.marginRight=Mb(l.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},Kb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+U[d]+b]=f[d]||f[d-2]||f[0];return e}},Hb.test(a)||(n.cssHooks[a+b].set=Xb)}),n.fn.extend({css:function(a,b){return W(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Jb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b) -},a,b,arguments.length>1)},show:function(){return Wb(this,!0)},hide:function(){return Wb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function $b(a,b,c,d,e){return new $b.prototype.init(a,b,c,d,e)}n.Tween=$b,$b.prototype={constructor:$b,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=$b.propHooks[this.prop];return a&&a.get?a.get(this):$b.propHooks._default.get(this)},run:function(a){var b,c=$b.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):$b.propHooks._default.set(this),this}},$b.prototype.init.prototype=$b.prototype,$b.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},$b.propHooks.scrollTop=$b.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=$b.prototype.init,n.fx.step={};var _b,ac,bc=/^(?:toggle|show|hide)$/,cc=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),dc=/queueHooks$/,ec=[jc],fc={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=cc.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&cc.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function gc(){return setTimeout(function(){_b=void 0}),_b=n.now()}function hc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=U[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function ic(a,b,c){for(var d,e=(fc[b]||[]).concat(fc["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function jc(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&V(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k=Gb(a.nodeName),"none"===j&&(j=k),"inline"===j&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==k?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],bc.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}if(!n.isEmptyObject(o)){r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=ic(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function kc(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function lc(a,b,c){var d,e,f=0,g=ec.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=_b||gc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:_b||gc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(kc(k,j.opts.specialEasing);g>f;f++)if(d=ec[f].call(j,a,k,j.opts))return d;return n.map(k,ic,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(lc,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],fc[c]=fc[c]||[],fc[c].unshift(b)},prefilter:function(a,b){b?ec.unshift(a):ec.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=lc(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&dc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(hc(b,!0),a,d,e)}}),n.each({slideDown:hc("show"),slideUp:hc("hide"),slideToggle:hc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(_b=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),_b=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ac||(ac=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(ac),ac=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e=z.createElement("div");e.setAttribute("className","t"),e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=e.getElementsByTagName("a")[0],c=z.createElement("select"),d=c.appendChild(z.createElement("option")),b=e.getElementsByTagName("input")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==e.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=d.selected,l.enctype=!!z.createElement("form").enctype,c.disabled=!0,l.optDisabled=!d.disabled,b=z.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value,a=b=c=d=e=null}();var mc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(mc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.text(a)}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(l.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var nc,oc,pc=n.expr.attrHandle,qc=/^(?:checked|selected)$/i,rc=l.getSetAttribute,sc=l.input;n.fn.extend({attr:function(a,b){return W(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===L?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?oc:nc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(F);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?sc&&rc||!qc.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(rc?c:d)},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),oc={set:function(a,b,c){return b===!1?n.removeAttr(a,c):sc&&rc||!qc.test(c)?a.setAttribute(!rc&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=pc[b]||n.find.attr;pc[b]=sc&&rc||!qc.test(b)?function(a,b,d){var e,f;return d||(f=pc[b],pc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,pc[b]=f),e}:function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),sc&&rc||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):nc&&nc.set(a,b,c)}}),rc||(nc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},pc.id=pc.name=pc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:nc.set},n.attrHooks.contenteditable={set:function(a,b,c){nc.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var tc=/^(?:input|select|textarea|button|object)$/i,uc=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return W(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):tc.test(a.nodeName)||uc.test(a.nodeName)&&a.href?0:-1}}}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var vc=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(F)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===L||"boolean"===c)&&(this.className&&n._data(this,"__className__",this.className),this.className=this.className||a===!1?"":n._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(vc," ").indexOf(b)>=0)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var wc=n.now(),xc=/\?/,yc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(yc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var zc,Ac,Bc=/#.*$/,Cc=/([?&])_=[^&]*/,Dc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Ec=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Fc=/^(?:GET|HEAD)$/,Gc=/^\/\//,Hc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ic={},Jc={},Kc="*/".concat("*");try{Ac=location.href}catch(Lc){Ac=z.createElement("a"),Ac.href="",Ac=Ac.href}zc=Hc.exec(Ac.toLowerCase())||[];function Mc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(F)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nc(a,b,c,d){var e={},f=a===Jc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Oc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Pc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Qc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ac,type:"GET",isLocal:Ec.test(zc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Oc(Oc(a,n.ajaxSettings),b):Oc(n.ajaxSettings,a)},ajaxPrefilter:Mc(Ic),ajaxTransport:Mc(Jc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Dc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||Ac)+"").replace(Bc,"").replace(Gc,zc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(F)||[""],null==k.crossDomain&&(c=Hc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===zc[1]&&c[2]===zc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(zc[3]||("http:"===zc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),Nc(Ic,k,b,v),2===t)return v;h=k.global,h&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Fc.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(xc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Cc.test(e)?e.replace(Cc,"$1_="+wc++):e+(xc.test(e)?"&":"?")+"_="+wc++)),k.ifModified&&(n.lastModified[e]&&v.setRequestHeader("If-Modified-Since",n.lastModified[e]),n.etag[e]&&v.setRequestHeader("If-None-Match",n.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Kc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Nc(Jc,k,b,v)){v.readyState=1,h&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Pc(k,v,c)),u=Qc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(n.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!l.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||n.css(a,"display"))},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var Rc=/%20/g,Sc=/\[\]$/,Tc=/\r?\n/g,Uc=/^(?:submit|button|image|reset|file)$/i,Vc=/^(?:input|select|textarea|keygen)/i;function Wc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Sc.test(a)?d(a,e):Wc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Wc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Wc(c,a[c],b,e);return d.join("&").replace(Rc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Vc.test(this.nodeName)&&!Uc.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Tc,"\r\n")}}):{name:b.name,value:c.replace(Tc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&$c()||_c()}:$c;var Xc=0,Yc={},Zc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Yc)Yc[a](void 0,!0)}),l.cors=!!Zc&&"withCredentials"in Zc,Zc=l.ajax=!!Zc,Zc&&n.ajaxTransport(function(a){if(!a.crossDomain||l.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Xc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Yc[g],b=void 0,f.onreadystatechange=n.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Yc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function $c(){try{return new a.XMLHttpRequest}catch(b){}}function _c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=z.head||n("head")[0]||z.documentElement;return{send:function(d,e){b=z.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var ad=[],bd=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=ad.pop()||n.expando+"_"+wc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(bd.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&bd.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(bd,"$1"+e):b.jsonp!==!1&&(b.url+=(xc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,ad.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||z;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var cd=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&cd)return cd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=a.slice(h,a.length),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&n.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var dd=a.document.documentElement;function ed(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?(typeof e.getBoundingClientRect!==L&&(d=e.getBoundingClientRect()),c=ed(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||dd;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||dd})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return W(this,function(a,d,e){var f=ed(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Mb(l.pixelPosition,function(a,c){return c?(c=Kb(a,b),Ib.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return W(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var fd=a.jQuery,gd=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=gd),b&&a.jQuery===n&&(a.jQuery=fd),n},typeof b===L&&(a.jQuery=a.$=n),n}); +},a,b,arguments.length>1)},show:function(){return Wb(this,!0)},hide:function(){return Wb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){V(this)?n(this).show():n(this).hide()})}});function $b(a,b,c,d,e){return new $b.prototype.init(a,b,c,d,e)}n.Tween=$b,$b.prototype={constructor:$b,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=$b.propHooks[this.prop];return a&&a.get?a.get(this):$b.propHooks._default.get(this)},run:function(a){var b,c=$b.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):$b.propHooks._default.set(this),this}},$b.prototype.init.prototype=$b.prototype,$b.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},$b.propHooks.scrollTop=$b.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=$b.prototype.init,n.fx.step={};var _b,ac,bc=/^(?:toggle|show|hide)$/,cc=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),dc=/queueHooks$/,ec=[jc],fc={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=cc.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&cc.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function gc(){return setTimeout(function(){_b=void 0}),_b=n.now()}function hc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=U[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function ic(a,b,c){for(var d,e=(fc[b]||[]).concat(fc["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function jc(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&V(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k=Gb(a.nodeName),"none"===j&&(j=k),"inline"===j&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==k?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],bc.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}if(!n.isEmptyObject(o)){r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=ic(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function kc(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function lc(a,b,c){var d,e,f=0,g=ec.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=_b||gc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:_b||gc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(kc(k,j.opts.specialEasing);g>f;f++)if(d=ec[f].call(j,a,k,j.opts))return d;return n.map(k,ic,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(lc,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],fc[c]=fc[c]||[],fc[c].unshift(b)},prefilter:function(a,b){b?ec.unshift(a):ec.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(V).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=lc(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&dc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(hc(b,!0),a,d,e)}}),n.each({slideDown:hc("show"),slideUp:hc("hide"),slideToggle:hc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(_b=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),_b=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ac||(ac=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(ac),ac=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e=z.createElement("div");e.setAttribute("className","t"),e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=e.getElementsByTagName("a")[0],c=z.createElement("select"),d=c.appendChild(z.createElement("option")),b=e.getElementsByTagName("input")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==e.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=d.selected,l.enctype=!!z.createElement("form").enctype,c.disabled=!0,l.optDisabled=!d.disabled,b=z.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value,a=b=c=d=e=null}();var mc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(mc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.text(a)}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(l.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var nc,oc,pc=n.expr.attrHandle,qc=/^(?:checked|selected)$/i,rc=l.getSetAttribute,sc=l.input;n.fn.extend({attr:function(a,b){return W(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===L?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?oc:nc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(F);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?sc&&rc||!qc.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(rc?c:d)},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),oc={set:function(a,b,c){return b===!1?n.removeAttr(a,c):sc&&rc||!qc.test(c)?a.setAttribute(!rc&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=pc[b]||n.find.attr;pc[b]=sc&&rc||!qc.test(b)?function(a,b,d){var e,f;return d||(f=pc[b],pc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,pc[b]=f),e}:function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),sc&&rc||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):nc&&nc.set(a,b,c)}}),rc||(nc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},pc.id=pc.name=pc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:nc.set},n.attrHooks.contenteditable={set:function(a,b,c){nc.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var tc=/^(?:input|select|textarea|button|object)$/i,uc=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return W(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):tc.test(a.nodeName)||uc.test(a.nodeName)&&a.href?0:-1}}}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var vc=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(F)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(vc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(F)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===L||"boolean"===c)&&(this.className&&n._data(this,"__className__",this.className),this.className=this.className||a===!1?"":n._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(vc," ").indexOf(b)>=0)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var wc=n.now(),xc=/\?/,yc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(yc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var zc,Ac,Bc=/#.*$/,Cc=/([?&])_=[^&]*/,Dc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Ec=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Fc=/^(?:GET|HEAD)$/,Gc=/^\/\//,Hc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ic={},Jc={},Kc="*/".concat("*");try{Ac=location.href}catch(Lc){Ac=z.createElement("a"),Ac.href="",Ac=Ac.href}zc=Hc.exec(Ac.toLowerCase())||[];function Mc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(F)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nc(a,b,c,d){var e={},f=a===Jc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Oc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Pc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Qc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ac,type:"GET",isLocal:Ec.test(zc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Oc(Oc(a,n.ajaxSettings),b):Oc(n.ajaxSettings,a)},ajaxPrefilter:Mc(Ic),ajaxTransport:Mc(Jc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Dc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||Ac)+"").replace(Bc,"").replace(Gc,zc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(F)||[""],null==k.crossDomain&&(c=Hc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===zc[1]&&c[2]===zc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(zc[3]||("http:"===zc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),Nc(Ic,k,b,v),2===t)return v;h=k.global,h&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Fc.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(xc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Cc.test(e)?e.replace(Cc,"$1_="+wc++):e+(xc.test(e)?"&":"?")+"_="+wc++)),k.ifModified&&(n.lastModified[e]&&v.setRequestHeader("If-Modified-Since",n.lastModified[e]),n.etag[e]&&v.setRequestHeader("If-None-Match",n.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Kc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Nc(Jc,k,b,v)){v.readyState=1,h&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Pc(k,v,c)),u=Qc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(n.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!l.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||n.css(a,"display"))},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var Rc=/%20/g,Sc=/\[\]$/,Tc=/\r?\n/g,Uc=/^(?:submit|button|image|reset|file)$/i,Vc=/^(?:input|select|textarea|keygen)/i;function Wc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||Sc.test(a)?d(a,e):Wc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Wc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Wc(c,a[c],b,e);return d.join("&").replace(Rc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Vc.test(this.nodeName)&&!Uc.test(a)&&(this.checked||!X.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(Tc,"\r\n")}}):{name:b.name,value:c.replace(Tc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&$c()||_c()}:$c;var Xc=0,Yc={},Zc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Yc)Yc[a](void 0,!0)}),l.cors=!!Zc&&"withCredentials"in Zc,Zc=l.ajax=!!Zc,Zc&&n.ajaxTransport(function(a){if(!a.crossDomain||l.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Xc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Yc[g],b=void 0,f.onreadystatechange=n.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Yc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function $c(){try{return new a.XMLHttpRequest}catch(b){}}function _c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=z.head||n("head")[0]||z.documentElement;return{send:function(d,e){b=z.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var ad=[],bd=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=ad.pop()||n.expando+"_"+wc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(bd.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&bd.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(bd,"$1"+e):b.jsonp!==!1&&(b.url+=(xc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,ad.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||z;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var cd=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&cd)return cd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=a.slice(h,a.length),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&n.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var dd=a.document.documentElement;function ed(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?(typeof e.getBoundingClientRect!==L&&(d=e.getBoundingClientRect()),c=ed(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||dd;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||dd})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return W(this,function(a,d,e){var f=ed(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Mb(l.pixelPosition,function(a,c){return c?(c=Kb(a,b),Ib.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return W(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var fd=a.jQuery,gd=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=gd),b&&a.jQuery===n&&(a.jQuery=fd),n},typeof b===L&&(a.jQuery=a.$=n),n}); \ No newline at end of file diff --git a/lib/web/jquery/jquery.mousewheel.js b/lib/web/jquery/jquery.mousewheel.js deleted file mode 100644 index 38b60951b201bedf3e1005ed49cbd1c0834d5815..0000000000000000000000000000000000000000 --- a/lib/web/jquery/jquery.mousewheel.js +++ /dev/null @@ -1,84 +0,0 @@ -/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net) - * Licensed under the MIT License (LICENSE.txt). - * - * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers. - * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix. - * Thanks to: Seamus Leahy for adding deltaX and deltaY - * - * Version: 3.0.6 - * - * Requires: 1.2.2+ - */ - -(function($) { - -var types = ['DOMMouseScroll', 'mousewheel']; - -if ($.event.fixHooks) { - for ( var i=types.length; i; ) { - $.event.fixHooks[ types[--i] ] = $.event.mouseHooks; - } -} - -$.event.special.mousewheel = { - setup: function() { - if ( this.addEventListener ) { - for ( var i=types.length; i; ) { - this.addEventListener( types[--i], handler, false ); - } - } else { - this.onmousewheel = handler; - } - }, - - teardown: function() { - if ( this.removeEventListener ) { - for ( var i=types.length; i; ) { - this.removeEventListener( types[--i], handler, false ); - } - } else { - this.onmousewheel = null; - } - } -}; - -$.fn.extend({ - mousewheel: function(fn) { - return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel"); - }, - - unmousewheel: function(fn) { - return this.unbind("mousewheel", fn); - } -}); - - -function handler(event) { - var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0; - event = $.event.fix(orgEvent); - event.type = "mousewheel"; - - // Old school scrollwheel delta - if ( orgEvent.wheelDelta ) { delta = orgEvent.wheelDelta/120; } - if ( orgEvent.detail ) { delta = -orgEvent.detail/3; } - - // New school multidimensional scroll (touchpads) deltas - deltaY = delta; - - // Gecko - if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) { - deltaY = 0; - deltaX = -1*delta; - } - - // Webkit - if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; } - if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; } - - // Add event and delta to the front of the arguments - args.unshift(event, delta, deltaX, deltaY); - - return ($.event.dispatch || $.event.handle).apply(this, args); -} - -})(jQuery); diff --git a/lib/web/jquery/jquery.popups.js b/lib/web/jquery/jquery.popups.js deleted file mode 100644 index 8849f53c3203c30f8cd2aefbb79b66b5e7062439..0000000000000000000000000000000000000000 --- a/lib/web/jquery/jquery.popups.js +++ /dev/null @@ -1,244 +0,0 @@ -/* ======================================================================== - * Bootstrap: modal.js v3.1.0 - * http://getbootstrap.com/javascript/#modals - * ======================================================================== - * Copyright 2011-2014 Twitter, Inc. - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * ======================================================================== */ - - -+function ($) { - 'use strict'; - - // POPUP CLASS DEFINITION - // ====================== - - var Popup = function (element, options) { - this.options = options - this.$element = $(element) - this.$overlay = - this.isShown = null - - if (this.options.remote) { - this.$element - .find('.popup.content') - .load(this.options.remote, $.proxy(function () { - this.$element.trigger('loaded.bs.popup') - }, this)) - } - } - - Popup.DEFAULTS = { - overlay: true, - keyboard: true, - show: true - } - - Popup.prototype.toggle = function (_relatedTarget) { - return this[!this.isShown ? 'show' : 'hide'](_relatedTarget) - } - - Popup.prototype.show = function (_relatedTarget) { - var that = this - var e = $.Event('show.bs.popup', { relatedTarget: _relatedTarget }) - - this.$element.trigger(e) - - if (this.isShown || e.isDefaultPrevented()) return - - this.isShown = true - - this.escape() - - this.$element.on('click.dismiss.bs.popup', '[data-dismiss="popup"]', $.proxy(this.hide, this)) - - this.overlay(function () { - var transition = $.support.transition && that.$element.hasClass('fade') - - if (!that.$element.parent().length) { - that.$element.appendTo(document.body) // don't move popups dom position - } - - that.$element - .show() - .scrollTop(0) - - if (transition) { - that.$element[0].offsetWidth // force reflow - } - - that.$element - .addClass('active') - .attr('aria-hidden', false) - - that.enforceFocus() - - var e = $.Event('shown.bs.popup', { relatedTarget: _relatedTarget }) - - // transition ? - // that.$element.find('.popup-dialog') // wait for popup to slide in - // .one($.support.transition.end, function () { - // that.$element.focus().trigger(e) - // }) - // .emulateTransitionEnd(300) : - that.$element.focus().trigger(e) - }) - } - - Popup.prototype.hide = function (e) { - if (e) e.preventDefault() - - e = $.Event('hide.bs.popup') - - this.$element.trigger(e) - - if (!this.isShown || e.isDefaultPrevented()) return - - this.isShown = false - - this.escape() - - $(document).off('focusin.bs.popup') - - this.$element - .removeClass('active') - .attr('aria-hidden', true) - .off('click.dismiss.bs.popup') - - // $.support.transition && this.$element.hasClass('fade') ? - // this.$element - // .one($.support.transition.end, $.proxy(this.hidePopup, this)) - // .emulateTransitionEnd(300) : - this.hidePopup() - } - - Popup.prototype.enforceFocus = function () { - $(document) - .off('focusin.bs.popup') // guard against infinite focus loop - .on('focusin.bs.popup', $.proxy(function (e) { - if (this.$element[0] !== e.target && !this.$element.has(e.target).length) { - this.$element.focus() - } - }, this)) - } - - Popup.prototype.escape = function () { - if (this.isShown && this.options.keyboard) { - this.$element.on('keyup.dismiss.bs.popup', $.proxy(function (e) { - e.which == 27 && this.hide() - }, this)) - } else if (!this.isShown) { - this.$element.off('keyup.dismiss.bs.popup') - } - } - - Popup.prototype.hidePopup = function () { - var that = this - this.$element.hide() - this.overlay(function () { - that.removeBackdrop() - that.$element.trigger('hidden.bs.popup') - }) - } - - Popup.prototype.removeBackdrop = function () { - this.$overlay && this.$overlay.remove() - this.$overlay = null - } - - Popup.prototype.overlay = function (callback) { - var animate = this.$element.hasClass('fade') ? 'fade' : '' - - if (this.isShown && this.options.overlay) { - var doAnimate = $.support.transition && animate - - this.$overlay = $('<div class="window overlay ' + animate + '" />') - .appendTo(document.body) - - this.$element.on('click.dismiss.bs.popup', $.proxy(function (e) { - if (e.target !== e.currentTarget) return - this.options.overlay == 'static' - ? this.$element[0].focus.call(this.$element[0]) - : this.hide.call(this) - }, this)) - - if (doAnimate) this.$overlay[0].offsetWidth // force reflow - - this.$overlay.addClass('active') - - if (!callback) return - - // doAnimate ? - // this.$overlay - // .one($.support.transition.end, callback) - // .emulateTransitionEnd(150) : - callback() - - } else if (!this.isShown && this.$overlay) { - this.$overlay.removeClass('active') - - // $.support.transition && this.$element.hasClass('fade') ? - // this.$overlay - // .one($.support.transition.end, callback) - // .emulateTransitionEnd(150) : - callback() - - } else if (callback) { - callback() - } - } - - - // POPUP PLUGIN DEFINITION - // ======================= - - var old = $.fn.popup - - $.fn.popup = function (option, _relatedTarget) { - return this.each(function () { - var $this = $(this) - var data = $this.data('bs.popup') - var options = $.extend({}, Popup.DEFAULTS, $this.data(), typeof option == 'object' && option) - - if (!data) $this.data('bs.popup', (data = new Popup(this, options))) - if (typeof option == 'string') data[option](_relatedTarget) - else if (options.show) data.show(_relatedTarget) - }) - } - - $.fn.popup.Constructor = Popup - - - // POPUP NO CONFLICT - // ================= - - $.fn.popup.noConflict = function () { - $.fn.popup = old - return this - } - - - // POPUP DATA-API - // ============== - - $(document).on('click.bs.popup.data-api', '[data-toggle="popup"]', function (e) { - var $this = $(this) - var href = $this.attr('href') - var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7 - var option = $target.data('bs.popup') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) - - if ($this.is('a')) e.preventDefault() - - $target - .popup(option, this) - .one('hide', function () { - $this.is(':visible') && $this.focus() - }) - }) - - $(document) - .on('show.bs.popup', '.popup', function () { $(document.body).addClass('popup-open') }) - .on('hidden.bs.popup', '.popup', function () { $(document.body).removeClass('popup-open') }) - - -}(jQuery); \ No newline at end of file diff --git a/lib/web/legacy-build.min.js b/lib/web/legacy-build.min.js new file mode 100644 index 0000000000000000000000000000000000000000..60e39b33097e4d5d1f81d11292293240700a089a --- /dev/null +++ b/lib/web/legacy-build.min.js @@ -0,0 +1,8 @@ +var Prototype={Version:"1.7",Browser:(function(){var ua=navigator.userAgent;var isOpera=Object.prototype.toString.call(window.opera)=="[object Opera]";return{IE:!!window.attachEvent&&!isOpera,Opera:isOpera,WebKit:ua.indexOf("AppleWebKit/")>-1,Gecko:ua.indexOf("Gecko")>-1&&ua.indexOf("KHTML")===-1,MobileSafari:/Apple.*Mobile/.test(ua)}})(),BrowserFeatures:{XPath:!!document.evaluate,SelectorsAPI:!!document.querySelector,ElementExtensions:(function(){var constructor=window.Element||window.HTMLElement;return !!(constructor&&constructor.prototype)})(),SpecificElementExtensions:(function(){if(typeof window.HTMLDivElement!=="undefined"){return true}var div=document.createElement("div"),form=document.createElement("form"),isSupported=false;if(div.__proto__&&(div.__proto__!==form.__proto__)){isSupported=true}div=form=null;return isSupported})()},ScriptFragment:"<script[^>]*>([\\S\\s]*?)<\/script>",JSONFilter:/^\/\*-secure-([\s\S]*)\*\/\s*$/,emptyFunction:function(){},K:function(x){return x}};if(Prototype.Browser.MobileSafari){Prototype.BrowserFeatures.SpecificElementExtensions=false}var Abstract={};var Try={these:function(){var returnValue;for(var i=0,length=arguments.length;i<length;i++){var lambda=arguments[i];try{returnValue=lambda();break}catch(e){}}return returnValue}};var Class=(function(){var IS_DONTENUM_BUGGY=(function(){for(var p in {toString:1}){if(p==="toString"){return false}}return true})();function subclass(){}function create(){var parent=null,properties=$A(arguments);if(Object.isFunction(properties[0])){parent=properties.shift()}function klass(){this.initialize.apply(this,arguments)}Object.extend(klass,Class.Methods);klass.superclass=parent;klass.subclasses=[];if(parent){subclass.prototype=parent.prototype;klass.prototype=new subclass;parent.subclasses.push(klass)}for(var i=0,length=properties.length;i<length;i++){klass.addMethods(properties[i])}if(!klass.prototype.initialize){klass.prototype.initialize=Prototype.emptyFunction}klass.prototype.constructor=klass;return klass}function addMethods(source){var ancestor=this.superclass&&this.superclass.prototype,properties=Object.keys(source);if(IS_DONTENUM_BUGGY){if(source.toString!=Object.prototype.toString){properties.push("toString")}if(source.valueOf!=Object.prototype.valueOf){properties.push("valueOf")}}for(var i=0,length=properties.length;i<length;i++){var property=properties[i],value=source[property];if(ancestor&&Object.isFunction(value)&&value.argumentNames()[0]=="$super"){var method=value;value=(function(m){return function(){return ancestor[m].apply(this,arguments)}})(property).wrap(method);value.valueOf=method.valueOf.bind(method);value.toString=method.toString.bind(method)}this.prototype[property]=value}return this}return{create:create,Methods:{addMethods:addMethods}}})();(function(){var _toString=Object.prototype.toString,NULL_TYPE="Null",UNDEFINED_TYPE="Undefined",BOOLEAN_TYPE="Boolean",NUMBER_TYPE="Number",STRING_TYPE="String",OBJECT_TYPE="Object",FUNCTION_CLASS="[object Function]",BOOLEAN_CLASS="[object Boolean]",NUMBER_CLASS="[object Number]",STRING_CLASS="[object String]",ARRAY_CLASS="[object Array]",DATE_CLASS="[object Date]",NATIVE_JSON_STRINGIFY_SUPPORT=window.JSON&&typeof JSON.stringify==="function"&&JSON.stringify(0)==="0"&&typeof JSON.stringify(Prototype.K)==="undefined";function Type(o){switch(o){case null:return NULL_TYPE;case (void 0):return UNDEFINED_TYPE}var type=typeof o;switch(type){case"boolean":return BOOLEAN_TYPE;case"number":return NUMBER_TYPE;case"string":return STRING_TYPE}return OBJECT_TYPE}function extend(destination,source){for(var property in source){destination[property]=source[property]}return destination}function inspect(object){try{if(isUndefined(object)){return"undefined"}if(object===null){return"null"}return object.inspect?object.inspect():String(object)}catch(e){if(e instanceof RangeError){return"..."}throw e}}function toJSON(value){return Str("",{"":value},[])}function Str(key,holder,stack){var value=holder[key],type=typeof value;if(Type(value)===OBJECT_TYPE&&typeof value.toJSON==="function"){value=value.toJSON(key)}var _class=_toString.call(value);switch(_class){case NUMBER_CLASS:case BOOLEAN_CLASS:case STRING_CLASS:value=value.valueOf()}switch(value){case null:return"null";case true:return"true";case false:return"false"}type=typeof value;switch(type){case"string":return value.inspect(true);case"number":return isFinite(value)?String(value):"null";case"object":for(var i=0,length=stack.length;i<length;i++){if(stack[i]===value){throw new TypeError()}}stack.push(value);var partial=[];if(_class===ARRAY_CLASS){for(var i=0,length=value.length;i<length;i++){var str=Str(i,value,stack);partial.push(typeof str==="undefined"?"null":str)}partial="["+partial.join(",")+"]"}else{var keys=Object.keys(value);for(var i=0,length=keys.length;i<length;i++){var key=keys[i],str=Str(key,value,stack);if(typeof str!=="undefined"){partial.push(key.inspect(true)+":"+str)}}partial="{"+partial.join(",")+"}"}stack.pop();return partial}}function stringify(object){return JSON.stringify(object)}function toQueryString(object){return $H(object).toQueryString()}function toHTML(object){return object&&object.toHTML?object.toHTML():String.interpret(object)}function keys(object){if(Type(object)!==OBJECT_TYPE){throw new TypeError()}var results=[];for(var property in object){if(object.hasOwnProperty(property)){results.push(property)}}return results}function values(object){var results=[];for(var property in object){results.push(object[property])}return results}function clone(object){return extend({},object)}function isElement(object){return !!(object&&object.nodeType==1)}function isArray(object){return _toString.call(object)===ARRAY_CLASS}var hasNativeIsArray=(typeof Array.isArray=="function")&&Array.isArray([])&&!Array.isArray({});if(hasNativeIsArray){isArray=Array.isArray}function isHash(object){return object instanceof Hash}function isFunction(object){return _toString.call(object)===FUNCTION_CLASS}function isString(object){return _toString.call(object)===STRING_CLASS}function isNumber(object){return _toString.call(object)===NUMBER_CLASS}function isDate(object){return _toString.call(object)===DATE_CLASS}function isUndefined(object){return typeof object==="undefined"}extend(Object,{extend:extend,inspect:inspect,toJSON:NATIVE_JSON_STRINGIFY_SUPPORT?stringify:toJSON,toQueryString:toQueryString,toHTML:toHTML,keys:Object.keys||keys,values:values,clone:clone,isElement:isElement,isArray:isArray,isHash:isHash,isFunction:isFunction,isString:isString,isNumber:isNumber,isDate:isDate,isUndefined:isUndefined})})();Object.extend(Function.prototype,(function(){var slice=Array.prototype.slice;function update(array,args){var arrayLength=array.length,length=args.length;while(length--){array[arrayLength+length]=args[length]}return array}function merge(array,args){array=slice.call(array,0);return update(array,args)}function argumentNames(){var names=this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1].replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g,"").replace(/\s+/g,"").split(",");return names.length==1&&!names[0]?[]:names}function bindAsEventListener(context){var __method=this,args=slice.call(arguments,1);return function(event){var a=update([event||window.event],args);return __method.apply(context,a)}}function curry(){if(!arguments.length){return this}var __method=this,args=slice.call(arguments,0);return function(){var a=merge(args,arguments);return __method.apply(this,a)}}function delay(timeout){var __method=this,args=slice.call(arguments,1);timeout=timeout*1000;return window.setTimeout(function(){return __method.apply(__method,args)},timeout)}function defer(){var args=update([0.01],arguments);return this.delay.apply(this,args)}function wrap(wrapper){var __method=this;return function(){var a=update([__method.bind(this)],arguments);return wrapper.apply(this,a)}}function methodize(){if(this._methodized){return this._methodized}var __method=this;return this._methodized=function(){var a=update([this],arguments);return __method.apply(null,a)}}return{argumentNames:argumentNames,bindAsEventListener:bindAsEventListener,curry:curry,delay:delay,defer:defer,wrap:wrap,methodize:methodize}})());(function(proto){function toISOString(){return this.getUTCFullYear()+"-"+(this.getUTCMonth()+1).toPaddedString(2)+"-"+this.getUTCDate().toPaddedString(2)+"T"+this.getUTCHours().toPaddedString(2)+":"+this.getUTCMinutes().toPaddedString(2)+":"+this.getUTCSeconds().toPaddedString(2)+"Z"}function toJSON(){return this.toISOString()}if(!proto.toISOString){proto.toISOString=toISOString}if(!proto.toJSON){proto.toJSON=toJSON}})(Date.prototype);RegExp.prototype.match=RegExp.prototype.test;RegExp.escape=function(str){return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")};var PeriodicalExecuter=Class.create({initialize:function(callback,frequency){this.callback=callback;this.frequency=frequency;this.currentlyExecuting=false;this.registerCallback()},registerCallback:function(){this.timer=setInterval(this.onTimerEvent.bind(this),this.frequency*1000)},execute:function(){this.callback(this)},stop:function(){if(!this.timer){return}clearInterval(this.timer);this.timer=null},onTimerEvent:function(){if(!this.currentlyExecuting){try{this.currentlyExecuting=true;this.execute();this.currentlyExecuting=false}catch(e){this.currentlyExecuting=false;throw e}}}});Object.extend(String,{interpret:function(value){return value==null?"":String(value)},specialChar:{"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r","\\":"\\\\"}});Object.extend(String.prototype,(function(){var NATIVE_JSON_PARSE_SUPPORT=window.JSON&&typeof JSON.parse==="function"&&JSON.parse('{"test": true}').test;function prepareReplacement(replacement){if(Object.isFunction(replacement)){return replacement}var template=new Template(replacement);return function(match){return template.evaluate(match)}}function gsub(pattern,replacement){var result="",source=this,match;replacement=prepareReplacement(replacement);if(Object.isString(pattern)){pattern=RegExp.escape(pattern)}if(!(pattern.length||pattern.source)){replacement=replacement("");return replacement+source.split("").join(replacement)+replacement}while(source.length>0){if(match=source.match(pattern)){result+=source.slice(0,match.index);result+=String.interpret(replacement(match));source=source.slice(match.index+match[0].length)}else{result+=source,source=""}}return result}function sub(pattern,replacement,count){replacement=prepareReplacement(replacement);count=Object.isUndefined(count)?1:count;return this.gsub(pattern,function(match){if(--count<0){return match[0]}return replacement(match)})}function scan(pattern,iterator){this.gsub(pattern,iterator);return String(this)}function truncate(length,truncation){length=length||30;truncation=Object.isUndefined(truncation)?"...":truncation;return this.length>length?this.slice(0,length-truncation.length)+truncation:String(this)}function strip(){return this.replace(/^\s+/,"").replace(/\s+$/,"")}function stripTags(){return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi,"")}function stripScripts(){return this.replace(new RegExp(Prototype.ScriptFragment,"img"),"")}function extractScripts(){var matchAll=new RegExp(Prototype.ScriptFragment,"img"),matchOne=new RegExp(Prototype.ScriptFragment,"im");return(this.match(matchAll)||[]).map(function(scriptTag){return(scriptTag.match(matchOne)||["",""])[1]})}function evalScripts(){return this.extractScripts().map(function(script){return eval(script)})}function escapeHTML(){return this.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function unescapeHTML(){return this.stripTags().replace(/</g,"<").replace(/>/g,">").replace(/&/g,"&")}function toQueryParams(separator){var match=this.strip().match(/([^?#]*)(#.*)?$/);if(!match){return{}}return match[1].split(separator||"&").inject({},function(hash,pair){if((pair=pair.split("="))[0]){var key=decodeURIComponent(pair.shift()),value=pair.length>1?pair.join("="):pair[0];if(value!=undefined){value=decodeURIComponent(value)}if(key in hash){if(!Object.isArray(hash[key])){hash[key]=[hash[key]]}hash[key].push(value)}else{hash[key]=value}}return hash})}function toArray(){return this.split("")}function succ(){return this.slice(0,this.length-1)+String.fromCharCode(this.charCodeAt(this.length-1)+1)}function times(count){return count<1?"":new Array(count+1).join(this)}function camelize(){return this.replace(/-+(.)?/g,function(match,chr){return chr?chr.toUpperCase():""})}function capitalize(){return this.charAt(0).toUpperCase()+this.substring(1).toLowerCase()}function underscore(){return this.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/-/g,"_").toLowerCase()}function dasherize(){return this.replace(/_/g,"-")}function inspect(useDoubleQuotes){var escapedString=this.replace(/[\x00-\x1f\\]/g,function(character){if(character in String.specialChar){return String.specialChar[character]}return"\\u00"+character.charCodeAt().toPaddedString(2,16)});if(useDoubleQuotes){return'"'+escapedString.replace(/"/g,'\\"')+'"'}return"'"+escapedString.replace(/'/g,"\\'")+"'"}function unfilterJSON(filter){return this.replace(filter||Prototype.JSONFilter,"$1")}function isJSON(){var str=this;if(str.blank()){return false}str=str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@");str=str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]");str=str.replace(/(?:^|:|,)(?:\s*\[)+/g,"");return(/^[\],:{}\s]*$/).test(str)}function evalJSON(sanitize){var json=this.unfilterJSON(),cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;if(cx.test(json)){json=json.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}try{if(!sanitize||json.isJSON()){return eval("("+json+")")}}catch(e){}throw new SyntaxError("Badly formed JSON string: "+this.inspect())}function parseJSON(){var json=this.unfilterJSON();return JSON.parse(json)}function include(pattern){return this.indexOf(pattern)>-1}function startsWith(pattern){return this.lastIndexOf(pattern,0)===0}function endsWith(pattern){var d=this.length-pattern.length;return d>=0&&this.indexOf(pattern,d)===d}function empty(){return this==""}function blank(){return/^\s*$/.test(this)}function interpolate(object,pattern){return new Template(this,pattern).evaluate(object)}return{gsub:gsub,sub:sub,scan:scan,truncate:truncate,strip:String.prototype.trim||strip,stripTags:stripTags,stripScripts:stripScripts,extractScripts:extractScripts,evalScripts:evalScripts,escapeHTML:escapeHTML,unescapeHTML:unescapeHTML,toQueryParams:toQueryParams,parseQuery:toQueryParams,toArray:toArray,succ:succ,times:times,camelize:camelize,capitalize:capitalize,underscore:underscore,dasherize:dasherize,inspect:inspect,unfilterJSON:unfilterJSON,isJSON:isJSON,evalJSON:NATIVE_JSON_PARSE_SUPPORT?parseJSON:evalJSON,include:include,startsWith:startsWith,endsWith:endsWith,empty:empty,blank:blank,interpolate:interpolate}})());var Template=Class.create({initialize:function(template,pattern){this.template=template.toString();this.pattern=pattern||Template.Pattern},evaluate:function(object){if(object&&Object.isFunction(object.toTemplateReplacements)){object=object.toTemplateReplacements()}return this.template.gsub(this.pattern,function(match){if(object==null){return(match[1]+"")}var before=match[1]||"";if(before=="\\"){return match[2]}var ctx=object,expr=match[3],pattern=/^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;match=pattern.exec(expr);if(match==null){return before}while(match!=null){var comp=match[1].startsWith("[")?match[2].replace(/\\\\]/g,"]"):match[1];ctx=ctx[comp];if(null==ctx||""==match[3]){break}expr=expr.substring("["==match[3]?match[1].length:match[0].length);match=pattern.exec(expr)}return before+String.interpret(ctx)})}});Template.Pattern=/(^|.|\r|\n)(#\{(.*?)\})/;var $break={};var Enumerable=(function(){function each(iterator,context){var index=0;try{this._each(function(value){iterator.call(context,value,index++)})}catch(e){if(e!=$break){throw e}}return this}function eachSlice(number,iterator,context){var index=-number,slices=[],array=this.toArray();if(number<1){return array}while((index+=number)<array.length){slices.push(array.slice(index,index+number))}return slices.collect(iterator,context)}function all(iterator,context){iterator=iterator||Prototype.K;var result=true;this.each(function(value,index){result=result&&!!iterator.call(context,value,index);if(!result){throw $break}});return result}function any(iterator,context){iterator=iterator||Prototype.K;var result=false;this.each(function(value,index){if(result=!!iterator.call(context,value,index)){throw $break}});return result}function collect(iterator,context){iterator=iterator||Prototype.K;var results=[];this.each(function(value,index){results.push(iterator.call(context,value,index))});return results}function detect(iterator,context){var result;this.each(function(value,index){if(iterator.call(context,value,index)){result=value;throw $break}});return result}function findAll(iterator,context){var results=[];this.each(function(value,index){if(iterator.call(context,value,index)){results.push(value)}});return results}function grep(filter,iterator,context){iterator=iterator||Prototype.K;var results=[];if(Object.isString(filter)){filter=new RegExp(RegExp.escape(filter))}this.each(function(value,index){if(filter.match(value)){results.push(iterator.call(context,value,index))}});return results}function include(object){if(Object.isFunction(this.indexOf)){if(this.indexOf(object)!=-1){return true}}var found=false;this.each(function(value){if(value==object){found=true;throw $break}});return found}function inGroupsOf(number,fillWith){fillWith=Object.isUndefined(fillWith)?null:fillWith;return this.eachSlice(number,function(slice){while(slice.length<number){slice.push(fillWith)}return slice})}function inject(memo,iterator,context){this.each(function(value,index){memo=iterator.call(context,memo,value,index)});return memo}function invoke(method){var args=$A(arguments).slice(1);return this.map(function(value){return value[method].apply(value,args)})}function max(iterator,context){iterator=iterator||Prototype.K;var result;this.each(function(value,index){value=iterator.call(context,value,index);if(result==null||value>=result){result=value}});return result}function min(iterator,context){iterator=iterator||Prototype.K;var result;this.each(function(value,index){value=iterator.call(context,value,index);if(result==null||value<result){result=value}});return result}function partition(iterator,context){iterator=iterator||Prototype.K;var trues=[],falses=[];this.each(function(value,index){(iterator.call(context,value,index)?trues:falses).push(value)});return[trues,falses]}function pluck(property){var results=[];this.each(function(value){results.push(value[property])});return results}function reject(iterator,context){var results=[];this.each(function(value,index){if(!iterator.call(context,value,index)){results.push(value)}});return results}function sortBy(iterator,context){return this.map(function(value,index){return{value:value,criteria:iterator.call(context,value,index)}}).sort(function(left,right){var a=left.criteria,b=right.criteria;return a<b?-1:a>b?1:0}).pluck("value")}function toArray(){return this.map(Prototype.K)}function zip(){var iterator=Prototype.K,args=$A(arguments);if(Object.isFunction(args.last())){iterator=args.pop()}var collections=[this].concat(args).map($A);return this.map(function(value,index){return iterator(collections.pluck(index))})}function size(){return this.toArray().length}function inspect(){return"#<Enumerable:"+this.toArray().inspect()+">"}return{each:each,eachSlice:eachSlice,all:all,any:any,collect:collect,detect:detect,findAll:findAll,select:findAll,grep:grep,include:include,member:include,inGroupsOf:inGroupsOf,inject:inject,invoke:invoke,partition:partition,pluck:pluck,reject:reject,sortBy:sortBy,toArray:toArray,entries:toArray,zip:zip,size:size,inspect:inspect,find:detect,map:Array.prototype.map}})();function $A(iterable){if(!iterable){return[]}if("toArray" in Object(iterable)){return iterable.toArray()}var length=iterable.length||0,results=new Array(length);while(length--){results[length]=iterable[length]}return results}function $w(string){if(!Object.isString(string)){return[]}string=string.strip();return string?string.split(/\s+/):[]}Array.from=$A;(function(){var arrayProto=Array.prototype,slice=arrayProto.slice,_each=arrayProto.forEach;function each(iterator,context){for(var i=0,length=this.length>>>0;i<length;i++){if(i in this){iterator.call(context,this[i],i,this)}}}if(!_each){_each=each}function clear(){this.length=0;return this}function first(){return this[0]}function last(){return this[this.length-1]}function compact(){return this.select(function(value){return value!=null})}function flatten(){return this.inject([],function(array,value){if(Object.isArray(value)){return array.concat(value.flatten())}array.push(value);return array})}function without(){var values=slice.call(arguments,0);return this.select(function(value){return !values.include(value)})}function reverse(inline){return(inline===false?this.toArray():this)._reverse()}function uniq(sorted){return this.inject([],function(array,value,index){if(0==index||(sorted?array.last()!=value:!array.include(value))){array.push(value)}return array})}function intersect(array){return this.uniq().findAll(function(item){return array.detect(function(value){return item===value})})}function clone(){return slice.call(this,0)}function size(){return this.length}function inspect(){return"["+this.map(Object.inspect).join(", ")+"]"}function indexOf(item,i){i||(i=0);var length=this.length;if(i<0){i=length+i}for(;i<length;i++){if(this[i]===item){return i}}return -1}function lastIndexOf(item,i){i=isNaN(i)?this.length:(i<0?this.length+i:i)+1;var n=this.slice(0,i).reverse().indexOf(item);return(n<0)?n:i-n-1}function concat(){var array=slice.call(this,0),item;for(var i=0,length=arguments.length;i<length;i++){item=arguments[i];if(Object.isArray(item)&&!("callee" in item)){for(var j=0,arrayLength=item.length;j<arrayLength;j++){array.push(item[j])}}else{array.push(item)}}return array}Object.extend(arrayProto,Enumerable);if(!arrayProto._reverse){arrayProto._reverse=arrayProto.reverse}Object.extend(arrayProto,{_each:_each,clear:clear,first:first,last:last,compact:compact,flatten:flatten,without:without,reverse:reverse,uniq:uniq,intersect:intersect,clone:clone,toArray:clone,size:size,inspect:inspect});var CONCAT_ARGUMENTS_BUGGY=(function(){return[].concat(arguments)[0][0]!==1})(1,2);if(CONCAT_ARGUMENTS_BUGGY){arrayProto.concat=concat}if(!arrayProto.indexOf){arrayProto.indexOf=indexOf}if(!arrayProto.lastIndexOf){arrayProto.lastIndexOf=lastIndexOf}})();function $H(object){return new Hash(object)}var Hash=Class.create(Enumerable,(function(){function initialize(object){this._object=Object.isHash(object)?object.toObject():Object.clone(object)}function _each(iterator){for(var key in this._object){var value=this._object[key],pair=[key,value];pair.key=key;pair.value=value;iterator(pair)}}function set(key,value){return this._object[key]=value}function get(key){if(this._object[key]!==Object.prototype[key]){return this._object[key]}}function unset(key){var value=this._object[key];delete this._object[key];return value}function toObject(){return Object.clone(this._object)}function keys(){return this.pluck("key")}function values(){return this.pluck("value")}function index(value){var match=this.detect(function(pair){return pair.value===value});return match&&match.key}function merge(object){return this.clone().update(object)}function update(object){return new Hash(object).inject(this,function(result,pair){result.set(pair.key,pair.value);return result})}function toQueryPair(key,value){if(Object.isUndefined(value)){return key}return key+"="+encodeURIComponent(String.interpret(value))}function toQueryString(){return this.inject([],function(results,pair){var key=encodeURIComponent(pair.key),values=pair.value;if(values&&typeof values=="object"){if(Object.isArray(values)){var queryValues=[];for(var i=0,len=values.length,value;i<len;i++){value=values[i];queryValues.push(toQueryPair(key,value))}return results.concat(queryValues)}}else{results.push(toQueryPair(key,values))}return results}).join("&")}function inspect(){return"#<Hash:{"+this.map(function(pair){return pair.map(Object.inspect).join(": ")}).join(", ")+"}>"}function clone(){return new Hash(this)}return{initialize:initialize,_each:_each,set:set,get:get,unset:unset,toObject:toObject,toTemplateReplacements:toObject,keys:keys,values:values,index:index,merge:merge,update:update,toQueryString:toQueryString,inspect:inspect,toJSON:toObject,clone:clone}})());Hash.from=$H;Object.extend(Number.prototype,(function(){function toColorPart(){return this.toPaddedString(2,16)}function succ(){return this+1}function times(iterator,context){$R(0,this,true).each(iterator,context);return this}function toPaddedString(length,radix){var string=this.toString(radix||10);return"0".times(length-string.length)+string}function abs(){return Math.abs(this)}function round(){return Math.round(this)}function ceil(){return Math.ceil(this)}function floor(){return Math.floor(this)}return{toColorPart:toColorPart,succ:succ,times:times,toPaddedString:toPaddedString,abs:abs,round:round,ceil:ceil,floor:floor}})());function $R(start,end,exclusive){return new ObjectRange(start,end,exclusive)}var ObjectRange=Class.create(Enumerable,(function(){function initialize(start,end,exclusive){this.start=start;this.end=end;this.exclusive=exclusive}function _each(iterator){var value=this.start;while(this.include(value)){iterator(value);value=value.succ()}}function include(value){if(value<this.start){return false}if(this.exclusive){return value<this.end}return value<=this.end}return{initialize:initialize,_each:_each,include:include}})());var Ajax={getTransport:function(){return Try.these(function(){return new XMLHttpRequest()},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")})||false},activeRequestCount:0};Ajax.Responders={responders:[],_each:function(iterator){this.responders._each(iterator)},register:function(responder){if(!this.include(responder)){this.responders.push(responder)}},unregister:function(responder){this.responders=this.responders.without(responder)},dispatch:function(callback,request,transport,json){this.each(function(responder){if(Object.isFunction(responder[callback])){try{responder[callback].apply(responder,[request,transport,json])}catch(e){}}})}};Object.extend(Ajax.Responders,Enumerable);Ajax.Responders.register({onCreate:function(){Ajax.activeRequestCount++},onComplete:function(){Ajax.activeRequestCount--}});Ajax.Base=Class.create({initialize:function(options){this.options={method:"post",asynchronous:true,contentType:"application/x-www-form-urlencoded",encoding:"UTF-8",parameters:"",evalJSON:true,evalJS:true};Object.extend(this.options,options||{});this.options.method=this.options.method.toLowerCase();if(Object.isHash(this.options.parameters)){this.options.parameters=this.options.parameters.toObject()}}});Ajax.Request=Class.create(Ajax.Base,{_complete:false,initialize:function($super,url,options){$super(options);this.transport=Ajax.getTransport();this.request(url)},request:function(url){this.url=url;this.method=this.options.method;var params=Object.isString(this.options.parameters)?this.options.parameters:Object.toQueryString(this.options.parameters);if(!["get","post"].include(this.method)){params+=(params?"&":"")+"_method="+this.method;this.method="post"}if(params&&this.method==="get"){this.url+=(this.url.include("?")?"&":"?")+params}this.parameters=params.toQueryParams();try{var response=new Ajax.Response(this);if(this.options.onCreate){this.options.onCreate(response)}Ajax.Responders.dispatch("onCreate",this,response);this.transport.open(this.method.toUpperCase(),this.url,this.options.asynchronous);if(this.options.asynchronous){this.respondToReadyState.bind(this).defer(1)}this.transport.onreadystatechange=this.onStateChange.bind(this);this.setRequestHeaders();this.body=this.method=="post"?(this.options.postBody||params):null;this.transport.send(this.body);if(!this.options.asynchronous&&this.transport.overrideMimeType){this.onStateChange()}}catch(e){this.dispatchException(e)}},onStateChange:function(){var readyState=this.transport.readyState;if(readyState>1&&!((readyState==4)&&this._complete)){this.respondToReadyState(this.transport.readyState)}},setRequestHeaders:function(){var headers={"X-Requested-With":"XMLHttpRequest","X-Prototype-Version":Prototype.Version,Accept:"text/javascript, text/html, application/xml, text/xml, */*"};if(this.method=="post"){headers["Content-type"]=this.options.contentType+(this.options.encoding?"; charset="+this.options.encoding:"");if(this.transport.overrideMimeType&&(navigator.userAgent.match(/Gecko\/(\d{4})/)||[0,2005])[1]<2005){headers.Connection="close"}}if(typeof this.options.requestHeaders=="object"){var extras=this.options.requestHeaders;if(Object.isFunction(extras.push)){for(var i=0,length=extras.length;i<length;i+=2){headers[extras[i]]=extras[i+1]}}else{$H(extras).each(function(pair){headers[pair.key]=pair.value})}}for(var name in headers){this.transport.setRequestHeader(name,headers[name])}},success:function(){var status=this.getStatus();return !status||(status>=200&&status<300)||status==304},getStatus:function(){try{if(this.transport.status===1223){return 204}return this.transport.status||0}catch(e){return 0}},respondToReadyState:function(readyState){var state=Ajax.Request.Events[readyState],response=new Ajax.Response(this);if(state=="Complete"){try{this._complete=true;(this.options["on"+response.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(response,response.headerJSON)}catch(e){this.dispatchException(e)}var contentType=response.getHeader("Content-type");if(this.options.evalJS=="force"||(this.options.evalJS&&this.isSameOrigin()&&contentType&&contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse()}}try{(this.options["on"+state]||Prototype.emptyFunction)(response,response.headerJSON);Ajax.Responders.dispatch("on"+state,this,response,response.headerJSON)}catch(e){this.dispatchException(e)}if(state=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction}},isSameOrigin:function(){var m=this.url.match(/^\s*https?:\/\/[^\/]*/);return !m||(m[0]=="#{protocol}//#{domain}#{port}".interpolate({protocol:location.protocol,domain:document.domain,port:location.port?":"+location.port:""}))},getHeader:function(name){try{return this.transport.getResponseHeader(name)||null}catch(e){return null}},evalResponse:function(){try{return eval((this.transport.responseText||"").unfilterJSON())}catch(e){this.dispatchException(e)}},dispatchException:function(exception){(this.options.onException||Prototype.emptyFunction)(this,exception);Ajax.Responders.dispatch("onException",this,exception)}});Ajax.Request.Events=["Uninitialized","Loading","Loaded","Interactive","Complete"];Ajax.Response=Class.create({initialize:function(request){this.request=request;var transport=this.transport=request.transport,readyState=this.readyState=transport.readyState;if((readyState>2&&!Prototype.Browser.IE)||readyState==4){this.status=this.getStatus();this.statusText=this.getStatusText();this.responseText=String.interpret(transport.responseText);this.headerJSON=this._getHeaderJSON()}if(readyState==4){var xml=transport.responseXML;this.responseXML=Object.isUndefined(xml)?null:xml;this.responseJSON=this._getResponseJSON()}},status:0,statusText:"",getStatus:Ajax.Request.prototype.getStatus,getStatusText:function(){try{return this.transport.statusText||""}catch(e){return""}},getHeader:Ajax.Request.prototype.getHeader,getAllHeaders:function(){try{return this.getAllResponseHeaders()}catch(e){return null}},getResponseHeader:function(name){return this.transport.getResponseHeader(name)},getAllResponseHeaders:function(){return this.transport.getAllResponseHeaders()},_getHeaderJSON:function(){var json=this.getHeader("X-JSON");if(!json){return null}json=decodeURIComponent(escape(json));try{return json.evalJSON(this.request.options.sanitizeJSON||!this.request.isSameOrigin())}catch(e){this.request.dispatchException(e)}},_getResponseJSON:function(){var options=this.request.options;if(!options.evalJSON||(options.evalJSON!="force"&&!(this.getHeader("Content-type")||"").include("application/json"))||this.responseText.blank()){return null}try{return this.responseText.evalJSON(options.sanitizeJSON||!this.request.isSameOrigin())}catch(e){this.request.dispatchException(e)}}});Ajax.Updater=Class.create(Ajax.Request,{initialize:function($super,container,url,options){this.container={success:(container.success||container),failure:(container.failure||(container.success?null:container))};options=Object.clone(options);var onComplete=options.onComplete;options.onComplete=(function(response,json){this.updateContent(response.responseText);if(Object.isFunction(onComplete)){onComplete(response,json)}}).bind(this);$super(url,options)},updateContent:function(responseText){var receiver=this.container[this.success()?"success":"failure"],options=this.options;if(!options.evalScripts){responseText=responseText.stripScripts()}if(receiver=$(receiver)){if(options.insertion){if(Object.isString(options.insertion)){var insertion={};insertion[options.insertion]=responseText;receiver.insert(insertion)}else{options.insertion(receiver,responseText)}}else{receiver.update(responseText)}}}});Ajax.PeriodicalUpdater=Class.create(Ajax.Base,{initialize:function($super,container,url,options){$super(options);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=container;this.url=url;this.start()},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent()},stop:function(){this.updater.options.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments)},updateComplete:function(response){if(this.options.decay){this.decay=(response.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=response.responseText}this.timer=this.onTimerEvent.bind(this).delay(this.decay*this.frequency)},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options)}});function $(element){if(arguments.length>1){for(var i=0,elements=[],length=arguments.length;i<length;i++){elements.push($(arguments[i]))}return elements}if(Object.isString(element)){element=document.getElementById(element)}return Element.extend(element)}if(Prototype.BrowserFeatures.XPath){document._getElementsByXPath=function(expression,parentElement){var results=[];var query=document.evaluate(expression,$(parentElement)||document,null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);for(var i=0,length=query.snapshotLength;i<length;i++){results.push(Element.extend(query.snapshotItem(i)))}return results}}if(!Node){var Node={}}if(!Node.ELEMENT_NODE){Object.extend(Node,{ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12})}(function(global){function shouldUseCache(tagName,attributes){if(tagName==="select"){return false}if("type" in attributes){return false}return true}var HAS_EXTENDED_CREATE_ELEMENT_SYNTAX=(function(){try{var el=document.createElement('<input name="x">');return el.tagName.toLowerCase()==="input"&&el.name==="x"}catch(err){return false}})();var element=global.Element;global.Element=function(tagName,attributes){attributes=attributes||{};tagName=tagName.toLowerCase();var cache=Element.cache;if(HAS_EXTENDED_CREATE_ELEMENT_SYNTAX&&attributes.name){tagName="<"+tagName+' name="'+attributes.name+'">';delete attributes.name;return Element.writeAttribute(document.createElement(tagName),attributes)}if(!cache[tagName]){cache[tagName]=Element.extend(document.createElement(tagName))}var node=shouldUseCache(tagName,attributes)?cache[tagName].cloneNode(false):document.createElement(tagName);return Element.writeAttribute(node,attributes)};Object.extend(global.Element,element||{});if(element){global.Element.prototype=element.prototype}})(this);Element.idCounter=1;Element.cache={};Element._purgeElement=function(element){var uid=element._prototypeUID;if(uid){Element.stopObserving(element);element._prototypeUID=void 0;delete Element.Storage[uid]}};Element.Methods={visible:function(element){return $(element).style.display!="none"},toggle:function(element){element=$(element);Element[Element.visible(element)?"hide":"show"](element);return element},hide:function(element){element=$(element);element.style.display="none";return element},show:function(element){element=$(element);element.style.display="";return element},remove:function(element){element=$(element);element.parentNode.removeChild(element);return element},update:(function(){var SELECT_ELEMENT_INNERHTML_BUGGY=(function(){var el=document.createElement("select"),isBuggy=true;el.innerHTML='<option value="test">test</option>';if(el.options&&el.options[0]){isBuggy=el.options[0].nodeName.toUpperCase()!=="OPTION"}el=null;return isBuggy})();var TABLE_ELEMENT_INNERHTML_BUGGY=(function(){try{var el=document.createElement("table");if(el&&el.tBodies){el.innerHTML="<tbody><tr><td>test</td></tr></tbody>";var isBuggy=typeof el.tBodies[0]=="undefined";el=null;return isBuggy}}catch(e){return true}})();var LINK_ELEMENT_INNERHTML_BUGGY=(function(){try{var el=document.createElement("div");el.innerHTML="<link>";var isBuggy=(el.childNodes.length===0);el=null;return isBuggy}catch(e){return true}})();var ANY_INNERHTML_BUGGY=SELECT_ELEMENT_INNERHTML_BUGGY||TABLE_ELEMENT_INNERHTML_BUGGY||LINK_ELEMENT_INNERHTML_BUGGY;var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING=(function(){var s=document.createElement("script"),isBuggy=false;try{s.appendChild(document.createTextNode(""));isBuggy=!s.firstChild||s.firstChild&&s.firstChild.nodeType!==3}catch(e){isBuggy=true}s=null;return isBuggy})();function update(element,content){element=$(element);var purgeElement=Element._purgeElement;var descendants=element.getElementsByTagName("*"),i=descendants.length;while(i--){purgeElement(descendants[i])}if(content&&content.toElement){content=content.toElement()}if(Object.isElement(content)){return element.update().insert(content)}content=Object.toHTML(content);var tagName=element.tagName.toUpperCase();if(tagName==="SCRIPT"&&SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING){element.text=content;return element}if(ANY_INNERHTML_BUGGY){if(tagName in Element._insertionTranslations.tags){while(element.firstChild){element.removeChild(element.firstChild)}Element._getContentFromAnonymousElement(tagName,content.stripScripts()).each(function(node){element.appendChild(node)})}else{if(LINK_ELEMENT_INNERHTML_BUGGY&&Object.isString(content)&&content.indexOf("<link")>-1){while(element.firstChild){element.removeChild(element.firstChild)}var nodes=Element._getContentFromAnonymousElement(tagName,content.stripScripts(),true);nodes.each(function(node){element.appendChild(node)})}else{element.innerHTML=content.stripScripts()}}}else{element.innerHTML=content.stripScripts()}content.evalScripts.bind(content).defer();return element}return update})(),replace:function(element,content){element=$(element);if(content&&content.toElement){content=content.toElement()}else{if(!Object.isElement(content)){content=Object.toHTML(content);var range=element.ownerDocument.createRange();range.selectNode(element);content.evalScripts.bind(content).defer();content=range.createContextualFragment(content.stripScripts())}}element.parentNode.replaceChild(content,element);return element},insert:function(element,insertions){element=$(element);if(Object.isString(insertions)||Object.isNumber(insertions)||Object.isElement(insertions)||(insertions&&(insertions.toElement||insertions.toHTML))){insertions={bottom:insertions}}var content,insert,tagName,childNodes;for(var position in insertions){content=insertions[position];position=position.toLowerCase();insert=Element._insertionTranslations[position];if(content&&content.toElement){content=content.toElement()}if(Object.isElement(content)){insert(element,content);continue}content=Object.toHTML(content);tagName=((position=="before"||position=="after")?element.parentNode:element).tagName.toUpperCase();childNodes=Element._getContentFromAnonymousElement(tagName,content.stripScripts());if(position=="top"||position=="after"){childNodes.reverse()}childNodes.each(insert.curry(element));content.evalScripts.bind(content).defer()}return element},wrap:function(element,wrapper,attributes){element=$(element);if(Object.isElement(wrapper)){$(wrapper).writeAttribute(attributes||{})}else{if(Object.isString(wrapper)){wrapper=new Element(wrapper,attributes)}else{wrapper=new Element("div",wrapper)}}if(element.parentNode){element.parentNode.replaceChild(wrapper,element)}wrapper.appendChild(element);return wrapper},inspect:function(element){element=$(element);var result="<"+element.tagName.toLowerCase();$H({id:"id",className:"class"}).each(function(pair){var property=pair.first(),attribute=pair.last(),value=(element[property]||"").toString();if(value){result+=" "+attribute+"="+value.inspect(true)}});return result+">"},recursivelyCollect:function(element,property,maximumLength){element=$(element);maximumLength=maximumLength||-1;var elements=[];while(element=element[property]){if(element.nodeType==1){elements.push(Element.extend(element))}if(elements.length==maximumLength){break}}return elements},ancestors:function(element){return Element.recursivelyCollect(element,"parentNode")},descendants:function(element){return Element.select(element,"*")},firstDescendant:function(element){element=$(element).firstChild;while(element&&element.nodeType!=1){element=element.nextSibling}return $(element)},immediateDescendants:function(element){var results=[],child=$(element).firstChild;while(child){if(child.nodeType===1){results.push(Element.extend(child))}child=child.nextSibling}return results},previousSiblings:function(element,maximumLength){return Element.recursivelyCollect(element,"previousSibling")},nextSiblings:function(element){return Element.recursivelyCollect(element,"nextSibling")},siblings:function(element){element=$(element);return Element.previousSiblings(element).reverse().concat(Element.nextSiblings(element))},match:function(element,selector){element=$(element);if(Object.isString(selector)){return Prototype.Selector.match(element,selector)}return selector.match(element)},up:function(element,expression,index){element=$(element);if(arguments.length==1){return $(element.parentNode)}var ancestors=Element.ancestors(element);return Object.isNumber(expression)?ancestors[expression]:Prototype.Selector.find(ancestors,expression,index)},down:function(element,expression,index){element=$(element);if(arguments.length==1){return Element.firstDescendant(element)}return Object.isNumber(expression)?Element.descendants(element)[expression]:Element.select(element,expression)[index||0]},previous:function(element,expression,index){element=$(element);if(Object.isNumber(expression)){index=expression,expression=false}if(!Object.isNumber(index)){index=0}if(expression){return Prototype.Selector.find(element.previousSiblings(),expression,index)}else{return element.recursivelyCollect("previousSibling",index+1)[index]}},next:function(element,expression,index){element=$(element);if(Object.isNumber(expression)){index=expression,expression=false}if(!Object.isNumber(index)){index=0}if(expression){return Prototype.Selector.find(element.nextSiblings(),expression,index)}else{var maximumLength=Object.isNumber(index)?index+1:1;return element.recursivelyCollect("nextSibling",index+1)[index]}},select:function(element){element=$(element);var expressions=Array.prototype.slice.call(arguments,1).join(", ");return Prototype.Selector.select(expressions,element)},adjacent:function(element){element=$(element);var expressions=Array.prototype.slice.call(arguments,1).join(", ");return Prototype.Selector.select(expressions,element.parentNode).without(element)},identify:function(element){element=$(element);var id=Element.readAttribute(element,"id");if(id){return id}do{id="anonymous_element_"+Element.idCounter++}while($(id));Element.writeAttribute(element,"id",id);return id},readAttribute:function(element,name){element=$(element);if(Prototype.Browser.IE){var t=Element._attributeTranslations.read;if(t.values[name]){return t.values[name](element,name)}if(t.names[name]){name=t.names[name]}if(name.include(":")){return(!element.attributes||!element.attributes[name])?null:element.attributes[name].value}}return element.getAttribute(name)},writeAttribute:function(element,name,value){element=$(element);var attributes={},t=Element._attributeTranslations.write;if(typeof name=="object"){attributes=name}else{attributes[name]=Object.isUndefined(value)?true:value}for(var attr in attributes){name=t.names[attr]||attr;value=attributes[attr];if(t.values[attr]){name=t.values[attr](element,value)}if(value===false||value===null){element.removeAttribute(name)}else{if(value===true){element.setAttribute(name,name)}else{element.setAttribute(name,value)}}}return element},getHeight:function(element){return Element.getDimensions(element).height},getWidth:function(element){return Element.getDimensions(element).width},classNames:function(element){return new Element.ClassNames(element)},hasClassName:function(element,className){if(!(element=$(element))){return}var elementClassName=element.className;return(elementClassName.length>0&&(elementClassName==className||new RegExp("(^|\\s)"+className+"(\\s|$)").test(elementClassName)))},addClassName:function(element,className){if(!(element=$(element))){return}if(!Element.hasClassName(element,className)){element.className+=(element.className?" ":"")+className}return element},removeClassName:function(element,className){if(!(element=$(element))){return}element.className=element.className.replace(new RegExp("(^|\\s+)"+className+"(\\s+|$)")," ").strip();return element},toggleClassName:function(element,className){if(!(element=$(element))){return}return Element[Element.hasClassName(element,className)?"removeClassName":"addClassName"](element,className)},cleanWhitespace:function(element){element=$(element);var node=element.firstChild;while(node){var nextNode=node.nextSibling;if(node.nodeType==3&&!/\S/.test(node.nodeValue)){element.removeChild(node)}node=nextNode}return element},empty:function(element){return $(element).innerHTML.blank()},descendantOf:function(element,ancestor){element=$(element),ancestor=$(ancestor);if(element.compareDocumentPosition){return(element.compareDocumentPosition(ancestor)&8)===8}if(ancestor.contains){return ancestor.contains(element)&&ancestor!==element}while(element=element.parentNode){if(element==ancestor){return true}}return false},scrollTo:function(element){element=$(element);var pos=Element.cumulativeOffset(element);window.scrollTo(pos[0],pos[1]);return element},getStyle:function(element,style){element=$(element);style=style=="float"?"cssFloat":style.camelize();var value=element.style[style];if(!value||value=="auto"){var css=document.defaultView.getComputedStyle(element,null);value=css?css[style]:null}if(style=="opacity"){return value?parseFloat(value):1}return value=="auto"?null:value},getOpacity:function(element){return $(element).getStyle("opacity")},setStyle:function(element,styles){element=$(element);var elementStyle=element.style,match;if(Object.isString(styles)){element.style.cssText+=";"+styles;return styles.include("opacity")?element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]):element}for(var property in styles){if(property=="opacity"){element.setOpacity(styles[property])}else{elementStyle[(property=="float"||property=="cssFloat")?(Object.isUndefined(elementStyle.styleFloat)?"cssFloat":"styleFloat"):property]=styles[property]}}return element},setOpacity:function(element,value){element=$(element);element.style.opacity=(value==1||value==="")?"":(value<0.00001)?0:value;return element},makePositioned:function(element){element=$(element);var pos=Element.getStyle(element,"position");if(pos=="static"||!pos){element._madePositioned=true;element.style.position="relative";if(Prototype.Browser.Opera){element.style.top=0;element.style.left=0}}return element},undoPositioned:function(element){element=$(element);if(element._madePositioned){element._madePositioned=undefined;element.style.position=element.style.top=element.style.left=element.style.bottom=element.style.right=""}return element},makeClipping:function(element){element=$(element);if(element._overflow){return element}element._overflow=Element.getStyle(element,"overflow")||"auto";if(element._overflow!=="hidden"){element.style.overflow="hidden"}return element},undoClipping:function(element){element=$(element);if(!element._overflow){return element}element.style.overflow=element._overflow=="auto"?"":element._overflow;element._overflow=null;return element},clonePosition:function(element,source){var options=Object.extend({setLeft:true,setTop:true,setWidth:true,setHeight:true,offsetTop:0,offsetLeft:0},arguments[2]||{});source=$(source);var p=Element.viewportOffset(source),delta=[0,0],parent=null;element=$(element);if(Element.getStyle(element,"position")=="absolute"){parent=Element.getOffsetParent(element);delta=Element.viewportOffset(parent)}if(parent==document.body){delta[0]-=document.body.offsetLeft;delta[1]-=document.body.offsetTop}if(options.setLeft){element.style.left=(p[0]-delta[0]+options.offsetLeft)+"px"}if(options.setTop){element.style.top=(p[1]-delta[1]+options.offsetTop)+"px"}if(options.setWidth){element.style.width=source.offsetWidth+"px"}if(options.setHeight){element.style.height=source.offsetHeight+"px"}return element}};Object.extend(Element.Methods,{getElementsBySelector:Element.Methods.select,childElements:Element.Methods.immediateDescendants});Element._attributeTranslations={write:{names:{className:"class",htmlFor:"for"},values:{}}};if(Prototype.Browser.Opera){Element.Methods.getStyle=Element.Methods.getStyle.wrap(function(proceed,element,style){switch(style){case"height":case"width":if(!Element.visible(element)){return null}var dim=parseInt(proceed(element,style),10);if(dim!==element["offset"+style.capitalize()]){return dim+"px"}var properties;if(style==="height"){properties=["border-top-width","padding-top","padding-bottom","border-bottom-width"]}else{properties=["border-left-width","padding-left","padding-right","border-right-width"]}return properties.inject(dim,function(memo,property){var val=proceed(element,property);return val===null?memo:memo-parseInt(val,10)})+"px";default:return proceed(element,style)}});Element.Methods.readAttribute=Element.Methods.readAttribute.wrap(function(proceed,element,attribute){if(attribute==="title"){return element.title}return proceed(element,attribute)})}else{if(Prototype.Browser.IE){Element.Methods.getStyle=function(element,style){element=$(element);style=(style=="float"||style=="cssFloat")?"styleFloat":style.camelize();var value=element.style[style];if(!value&&element.currentStyle){value=element.currentStyle[style]}if(style=="opacity"){if(value=(element.getStyle("filter")||"").match(/alpha\(opacity=(.*)\)/)){if(value[1]){return parseFloat(value[1])/100}}return 1}if(value=="auto"){if((style=="width"||style=="height")&&(element.getStyle("display")!="none")){return element["offset"+style.capitalize()]+"px"}return null}return value};Element.Methods.setOpacity=function(element,value){function stripAlpha(filter){return filter.replace(/alpha\([^\)]*\)/gi,"")}element=$(element);var currentStyle=element.currentStyle;if((currentStyle&&!currentStyle.hasLayout)||(!currentStyle&&element.style.zoom=="normal")){element.style.zoom=1}var filter=element.getStyle("filter"),style=element.style;if(value==1||value===""){(filter=stripAlpha(filter))?style.filter=filter:style.removeAttribute("filter");return element}else{if(value<0.00001){value=0}}style.filter=stripAlpha(filter)+"alpha(opacity="+(value*100)+")";return element};Element._attributeTranslations=(function(){var classProp="className",forProp="for",el=document.createElement("div");el.setAttribute(classProp,"x");if(el.className!=="x"){el.setAttribute("class","x");if(el.className==="x"){classProp="class"}}el=null;el=document.createElement("label");el.setAttribute(forProp,"x");if(el.htmlFor!=="x"){el.setAttribute("htmlFor","x");if(el.htmlFor==="x"){forProp="htmlFor"}}el=null;return{read:{names:{"class":classProp,className:classProp,"for":forProp,htmlFor:forProp},values:{_getAttr:function(element,attribute){return element.getAttribute(attribute)},_getAttr2:function(element,attribute){return element.getAttribute(attribute,2)},_getAttrNode:function(element,attribute){var node=element.getAttributeNode(attribute);return node?node.value:""},_getEv:(function(){var el=document.createElement("div"),f;el.onclick=Prototype.emptyFunction;var value=el.getAttribute("onclick");if(String(value).indexOf("{")>-1){f=function(element,attribute){attribute=element.getAttribute(attribute);if(!attribute){return null}attribute=attribute.toString();attribute=attribute.split("{")[1];attribute=attribute.split("}")[0];return attribute.strip()}}else{if(value===""){f=function(element,attribute){attribute=element.getAttribute(attribute);if(!attribute){return null}return attribute.strip()}}}el=null;return f})(),_flag:function(element,attribute){return $(element).hasAttribute(attribute)?attribute:null},style:function(element){return element.style.cssText.toLowerCase()},title:function(element){return element.title}}}}})();Element._attributeTranslations.write={names:Object.extend({cellpadding:"cellPadding",cellspacing:"cellSpacing"},Element._attributeTranslations.read.names),values:{checked:function(element,value){element.checked=!!value},style:function(element,value){element.style.cssText=value?value:""}}};Element._attributeTranslations.has={};$w("colSpan rowSpan vAlign dateTime accessKey tabIndex encType maxLength readOnly longDesc frameBorder").each(function(attr){Element._attributeTranslations.write.names[attr.toLowerCase()]=attr;Element._attributeTranslations.has[attr.toLowerCase()]=attr});(function(v){Object.extend(v,{href:v._getAttr2,src:v._getAttr2,type:v._getAttr,action:v._getAttrNode,disabled:v._flag,checked:v._flag,readonly:v._flag,multiple:v._flag,onload:v._getEv,onunload:v._getEv,onclick:v._getEv,ondblclick:v._getEv,onmousedown:v._getEv,onmouseup:v._getEv,onmouseover:v._getEv,onmousemove:v._getEv,onmouseout:v._getEv,onfocus:v._getEv,onblur:v._getEv,onkeypress:v._getEv,onkeydown:v._getEv,onkeyup:v._getEv,onsubmit:v._getEv,onreset:v._getEv,onselect:v._getEv,onchange:v._getEv})})(Element._attributeTranslations.read.values);if(Prototype.BrowserFeatures.ElementExtensions){(function(){function _descendants(element){var nodes=element.getElementsByTagName("*"),results=[];for(var i=0,node;node=nodes[i];i++){if(node.tagName!=="!"){results.push(node)}}return results}Element.Methods.down=function(element,expression,index){element=$(element);if(arguments.length==1){return element.firstDescendant()}return Object.isNumber(expression)?_descendants(element)[expression]:Element.select(element,expression)[index||0]}})()}}else{if(Prototype.Browser.Gecko&&/rv:1\.8\.0/.test(navigator.userAgent)){Element.Methods.setOpacity=function(element,value){element=$(element);element.style.opacity=(value==1)?0.999999:(value==="")?"":(value<0.00001)?0:value;return element}}else{if(Prototype.Browser.WebKit){Element.Methods.setOpacity=function(element,value){element=$(element);element.style.opacity=(value==1||value==="")?"":(value<0.00001)?0:value;if(value==1){if(element.tagName.toUpperCase()=="IMG"&&element.width){element.width++;element.width--}else{try{var n=document.createTextNode(" ");element.appendChild(n);element.removeChild(n)}catch(e){}}}return element}}}}}if("outerHTML" in document.documentElement){Element.Methods.replace=function(element,content){element=$(element);if(content&&content.toElement){content=content.toElement()}if(Object.isElement(content)){element.parentNode.replaceChild(content,element);return element}content=Object.toHTML(content);var parent=element.parentNode,tagName=parent.tagName.toUpperCase();if(Element._insertionTranslations.tags[tagName]){var nextSibling=element.next(),fragments=Element._getContentFromAnonymousElement(tagName,content.stripScripts());parent.removeChild(element);if(nextSibling){fragments.each(function(node){parent.insertBefore(node,nextSibling)})}else{fragments.each(function(node){parent.appendChild(node)})}}else{element.outerHTML=content.stripScripts()}content.evalScripts.bind(content).defer();return element}}Element._returnOffset=function(l,t){var result=[l,t];result.left=l;result.top=t;return result};Element._getContentFromAnonymousElement=function(tagName,html,force){var div=new Element("div"),t=Element._insertionTranslations.tags[tagName];var workaround=false;if(t){workaround=true}else{if(force){workaround=true;t=["","",0]}}if(workaround){div.innerHTML=" "+t[0]+html+t[1];div.removeChild(div.firstChild);for(var i=t[2];i--;){div=div.firstChild}}else{div.innerHTML=html}return $A(div.childNodes)};Element._insertionTranslations={before:function(element,node){element.parentNode.insertBefore(node,element)},top:function(element,node){element.insertBefore(node,element.firstChild)},bottom:function(element,node){element.appendChild(node)},after:function(element,node){element.parentNode.insertBefore(node,element.nextSibling)},tags:{TABLE:["<table>","</table>",1],TBODY:["<table><tbody>","</tbody></table>",2],TR:["<table><tbody><tr>","</tr></tbody></table>",3],TD:["<table><tbody><tr><td>","</td></tr></tbody></table>",4],SELECT:["<select>","</select>",1]}};(function(){var tags=Element._insertionTranslations.tags;Object.extend(tags,{THEAD:tags.TBODY,TFOOT:tags.TBODY,TH:tags.TD})})();Element.Methods.Simulated={hasAttribute:function(element,attribute){attribute=Element._attributeTranslations.has[attribute]||attribute;var node=$(element).getAttributeNode(attribute);return !!(node&&node.specified)}};Element.Methods.ByTag={};Object.extend(Element,Element.Methods);(function(div){if(!Prototype.BrowserFeatures.ElementExtensions&&div.__proto__){window.HTMLElement={};window.HTMLElement.prototype=div.__proto__;Prototype.BrowserFeatures.ElementExtensions=true}div=null})(document.createElement("div"));Element.extend=(function(){function checkDeficiency(tagName){if(typeof window.Element!="undefined"){var proto=window.Element.prototype;if(proto){var id="_"+(Math.random()+"").slice(2),el=document.createElement(tagName);proto[id]="x";var isBuggy=(el[id]!=="x");delete proto[id];el=null;return isBuggy}}return false}function extendElementWith(element,methods){for(var property in methods){var value=methods[property];if(Object.isFunction(value)&&!(property in element)){element[property]=value.methodize()}}}var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY=checkDeficiency("object");if(Prototype.BrowserFeatures.SpecificElementExtensions){if(HTMLOBJECTELEMENT_PROTOTYPE_BUGGY){return function(element){if(element&&typeof element._extendedByPrototype=="undefined"){var t=element.tagName;if(t&&(/^(?:object|applet|embed)$/i.test(t))){extendElementWith(element,Element.Methods);extendElementWith(element,Element.Methods.Simulated);extendElementWith(element,Element.Methods.ByTag[t.toUpperCase()])}}return element}}return Prototype.K}var Methods={},ByTag=Element.Methods.ByTag;var extend=Object.extend(function(element){if(!element||typeof element._extendedByPrototype!="undefined"||element.nodeType!=1||element==window){return element}var methods=Object.clone(Methods),tagName=element.tagName.toUpperCase();if(ByTag[tagName]){Object.extend(methods,ByTag[tagName])}extendElementWith(element,methods);element._extendedByPrototype=Prototype.emptyFunction;return element},{refresh:function(){if(!Prototype.BrowserFeatures.ElementExtensions){Object.extend(Methods,Element.Methods);Object.extend(Methods,Element.Methods.Simulated)}}});extend.refresh();return extend})();if(document.documentElement.hasAttribute){Element.hasAttribute=function(element,attribute){return element.hasAttribute(attribute)}}else{Element.hasAttribute=Element.Methods.Simulated.hasAttribute}Element.addMethods=function(methods){var F=Prototype.BrowserFeatures,T=Element.Methods.ByTag;if(!methods){Object.extend(Form,Form.Methods);Object.extend(Form.Element,Form.Element.Methods);Object.extend(Element.Methods.ByTag,{FORM:Object.clone(Form.Methods),INPUT:Object.clone(Form.Element.Methods),SELECT:Object.clone(Form.Element.Methods),TEXTAREA:Object.clone(Form.Element.Methods),BUTTON:Object.clone(Form.Element.Methods)})}if(arguments.length==2){var tagName=methods;methods=arguments[1]}if(!tagName){Object.extend(Element.Methods,methods||{})}else{if(Object.isArray(tagName)){tagName.each(extend)}else{extend(tagName)}}function extend(tagName){tagName=tagName.toUpperCase();if(!Element.Methods.ByTag[tagName]){Element.Methods.ByTag[tagName]={}}Object.extend(Element.Methods.ByTag[tagName],methods)}function copy(methods,destination,onlyIfAbsent){onlyIfAbsent=onlyIfAbsent||false;for(var property in methods){var value=methods[property];if(!Object.isFunction(value)){continue}if(!onlyIfAbsent||!(property in destination)){destination[property]=value.methodize()}}}function findDOMClass(tagName){var klass;var trans={OPTGROUP:"OptGroup",TEXTAREA:"TextArea",P:"Paragraph",FIELDSET:"FieldSet",UL:"UList",OL:"OList",DL:"DList",DIR:"Directory",H1:"Heading",H2:"Heading",H3:"Heading",H4:"Heading",H5:"Heading",H6:"Heading",Q:"Quote",INS:"Mod",DEL:"Mod",A:"Anchor",IMG:"Image",CAPTION:"TableCaption",COL:"TableCol",COLGROUP:"TableCol",THEAD:"TableSection",TFOOT:"TableSection",TBODY:"TableSection",TR:"TableRow",TH:"TableCell",TD:"TableCell",FRAMESET:"FrameSet",IFRAME:"IFrame"};if(trans[tagName]){klass="HTML"+trans[tagName]+"Element"}if(window[klass]){return window[klass]}klass="HTML"+tagName+"Element";if(window[klass]){return window[klass]}klass="HTML"+tagName.capitalize()+"Element";if(window[klass]){return window[klass]}var element=document.createElement(tagName),proto=element.__proto__||element.constructor.prototype;element=null;return proto}var elementPrototype=window.HTMLElement?HTMLElement.prototype:Element.prototype;if(F.ElementExtensions){copy(Element.Methods,elementPrototype);copy(Element.Methods.Simulated,elementPrototype,true)}if(F.SpecificElementExtensions){for(var tag in Element.Methods.ByTag){var klass=findDOMClass(tag);if(Object.isUndefined(klass)){continue}copy(T[tag],klass.prototype)}}Object.extend(Element,Element.Methods);delete Element.ByTag;if(Element.extend.refresh){Element.extend.refresh()}Element.cache={}};document.viewport={getDimensions:function(){return{width:this.getWidth(),height:this.getHeight()}},getScrollOffsets:function(){return Element._returnOffset(window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft,window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop)}};(function(viewport){var B=Prototype.Browser,doc=document,element,property={};function getRootElement(){if(B.WebKit&&!doc.evaluate){return document}if(B.Opera&&window.parseFloat(window.opera.version())<9.5){return document.body}return document.documentElement}function define(D){if(!element){element=getRootElement()}property[D]="client"+D;viewport["get"+D]=function(){return element[property[D]]};return viewport["get"+D]()}viewport.getWidth=define.curry("Width");viewport.getHeight=define.curry("Height")})(document.viewport);Element.Storage={UID:1};Element.addMethods({getStorage:function(element){if(!(element=$(element))){return}var uid;if(element===window){uid=0}else{if(typeof element._prototypeUID==="undefined"){element._prototypeUID=Element.Storage.UID++}uid=element._prototypeUID}if(!Element.Storage[uid]){Element.Storage[uid]=$H()}return Element.Storage[uid]},store:function(element,key,value){if(!(element=$(element))){return}if(arguments.length===2){Element.getStorage(element).update(key)}else{Element.getStorage(element).set(key,value)}return element},retrieve:function(element,key,defaultValue){if(!(element=$(element))){return}var hash=Element.getStorage(element),value=hash.get(key);if(Object.isUndefined(value)){hash.set(key,defaultValue);value=defaultValue}return value},clone:function(element,deep){if(!(element=$(element))){return}var clone=element.cloneNode(deep);clone._prototypeUID=void 0;if(deep){var descendants=Element.select(clone,"*"),i=descendants.length;while(i--){descendants[i]._prototypeUID=void 0}}return Element.extend(clone)},purge:function(element){if(!(element=$(element))){return}var purgeElement=Element._purgeElement;purgeElement(element);var descendants=element.getElementsByTagName("*"),i=descendants.length;while(i--){purgeElement(descendants[i])}return null}});(function(){function toDecimal(pctString){var match=pctString.match(/^(\d+)%?$/i);if(!match){return null}return(Number(match[1])/100)}function getPixelValue(value,property,context){var element=null;if(Object.isElement(value)){element=value;value=element.getStyle(property)}if(value===null){return null}if((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(value)){return window.parseFloat(value)}var isPercentage=value.include("%"),isViewport=(context===document.viewport);if(/\d/.test(value)&&element&&element.runtimeStyle&&!(isPercentage&&isViewport)){var style=element.style.left,rStyle=element.runtimeStyle.left;element.runtimeStyle.left=element.currentStyle.left;element.style.left=value||0;value=element.style.pixelLeft;element.style.left=style;element.runtimeStyle.left=rStyle;return value}if(element&&isPercentage){context=context||element.parentNode;var decimal=toDecimal(value);var whole=null;var position=element.getStyle("position");var isHorizontal=property.include("left")||property.include("right")||property.include("width");var isVertical=property.include("top")||property.include("bottom")||property.include("height");if(context===document.viewport){if(isHorizontal){whole=document.viewport.getWidth()}else{if(isVertical){whole=document.viewport.getHeight()}}}else{if(isHorizontal){whole=$(context).measure("width")}else{if(isVertical){whole=$(context).measure("height")}}}return(whole===null)?0:whole*decimal}return 0}function toCSSPixels(number){if(Object.isString(number)&&number.endsWith("px")){return number}return number+"px"}function isDisplayed(element){var originalElement=element;while(element&&element.parentNode){var display=element.getStyle("display");if(display==="none"){return false}element=$(element.parentNode)}return true}var hasLayout=Prototype.K;if("currentStyle" in document.documentElement){hasLayout=function(element){if(!element.currentStyle.hasLayout){element.style.zoom=1}return element}}function cssNameFor(key){if(key.include("border")){key=key+"-width"}return key.camelize()}Element.Layout=Class.create(Hash,{initialize:function($super,element,preCompute){$super();this.element=$(element);Element.Layout.PROPERTIES.each(function(property){this._set(property,null)},this);if(preCompute){this._preComputing=true;this._begin();Element.Layout.PROPERTIES.each(this._compute,this);this._end();this._preComputing=false}},_set:function(property,value){return Hash.prototype.set.call(this,property,value)},set:function(property,value){throw"Properties of Element.Layout are read-only."},get:function($super,property){var value=$super(property);return value===null?this._compute(property):value},_begin:function(){if(this._prepared){return}var element=this.element;if(isDisplayed(element)){this._prepared=true;return}var originalStyles={position:element.style.position||"",width:element.style.width||"",visibility:element.style.visibility||"",display:element.style.display||""};element.store("prototype_original_styles",originalStyles);var position=element.getStyle("position"),width=element.getStyle("width");if(width==="0px"||width===null){element.style.display="block";width=element.getStyle("width")}var context=(position==="fixed")?document.viewport:element.parentNode;element.setStyle({position:"absolute",visibility:"hidden",display:"block"});var positionedWidth=element.getStyle("width");var newWidth;if(width&&(positionedWidth===width)){newWidth=getPixelValue(element,"width",context)}else{if(position==="absolute"||position==="fixed"){newWidth=getPixelValue(element,"width",context)}else{var parent=element.parentNode,pLayout=$(parent).getLayout();newWidth=pLayout.get("width")-this.get("margin-left")-this.get("border-left")-this.get("padding-left")-this.get("padding-right")-this.get("border-right")-this.get("margin-right")}}element.setStyle({width:newWidth+"px"});this._prepared=true},_end:function(){var element=this.element;var originalStyles=element.retrieve("prototype_original_styles");element.store("prototype_original_styles",null);element.setStyle(originalStyles);this._prepared=false},_compute:function(property){var COMPUTATIONS=Element.Layout.COMPUTATIONS;if(!(property in COMPUTATIONS)){throw"Property not found."}return this._set(property,COMPUTATIONS[property].call(this,this.element))},toObject:function(){var args=$A(arguments);var keys=(args.length===0)?Element.Layout.PROPERTIES:args.join(" ").split(" ");var obj={};keys.each(function(key){if(!Element.Layout.PROPERTIES.include(key)){return}var value=this.get(key);if(value!=null){obj[key]=value}},this);return obj},toHash:function(){var obj=this.toObject.apply(this,arguments);return new Hash(obj)},toCSS:function(){var args=$A(arguments);var keys=(args.length===0)?Element.Layout.PROPERTIES:args.join(" ").split(" ");var css={};keys.each(function(key){if(!Element.Layout.PROPERTIES.include(key)){return}if(Element.Layout.COMPOSITE_PROPERTIES.include(key)){return}var value=this.get(key);if(value!=null){css[cssNameFor(key)]=value+"px"}},this);return css},inspect:function(){return"#<Element.Layout>"}});Object.extend(Element.Layout,{PROPERTIES:$w("height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height"),COMPOSITE_PROPERTIES:$w("padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height"),COMPUTATIONS:{height:function(element){if(!this._preComputing){this._begin()}var bHeight=this.get("border-box-height");if(bHeight<=0){if(!this._preComputing){this._end()}return 0}var bTop=this.get("border-top"),bBottom=this.get("border-bottom");var pTop=this.get("padding-top"),pBottom=this.get("padding-bottom");if(!this._preComputing){this._end()}return bHeight-bTop-bBottom-pTop-pBottom},width:function(element){if(!this._preComputing){this._begin()}var bWidth=this.get("border-box-width");if(bWidth<=0){if(!this._preComputing){this._end()}return 0}var bLeft=this.get("border-left"),bRight=this.get("border-right");var pLeft=this.get("padding-left"),pRight=this.get("padding-right");if(!this._preComputing){this._end()}return bWidth-bLeft-bRight-pLeft-pRight},"padding-box-height":function(element){var height=this.get("height"),pTop=this.get("padding-top"),pBottom=this.get("padding-bottom");return height+pTop+pBottom},"padding-box-width":function(element){var width=this.get("width"),pLeft=this.get("padding-left"),pRight=this.get("padding-right");return width+pLeft+pRight},"border-box-height":function(element){if(!this._preComputing){this._begin()}var height=element.offsetHeight;if(!this._preComputing){this._end()}return height},"border-box-width":function(element){if(!this._preComputing){this._begin()}var width=element.offsetWidth;if(!this._preComputing){this._end()}return width},"margin-box-height":function(element){var bHeight=this.get("border-box-height"),mTop=this.get("margin-top"),mBottom=this.get("margin-bottom");if(bHeight<=0){return 0}return bHeight+mTop+mBottom},"margin-box-width":function(element){var bWidth=this.get("border-box-width"),mLeft=this.get("margin-left"),mRight=this.get("margin-right");if(bWidth<=0){return 0}return bWidth+mLeft+mRight},top:function(element){var offset=element.positionedOffset();return offset.top},bottom:function(element){var offset=element.positionedOffset(),parent=element.getOffsetParent(),pHeight=parent.measure("height");var mHeight=this.get("border-box-height");return pHeight-mHeight-offset.top},left:function(element){var offset=element.positionedOffset();return offset.left},right:function(element){var offset=element.positionedOffset(),parent=element.getOffsetParent(),pWidth=parent.measure("width");var mWidth=this.get("border-box-width");return pWidth-mWidth-offset.left},"padding-top":function(element){return getPixelValue(element,"paddingTop")},"padding-bottom":function(element){return getPixelValue(element,"paddingBottom")},"padding-left":function(element){return getPixelValue(element,"paddingLeft")},"padding-right":function(element){return getPixelValue(element,"paddingRight")},"border-top":function(element){return getPixelValue(element,"borderTopWidth")},"border-bottom":function(element){return getPixelValue(element,"borderBottomWidth")},"border-left":function(element){return getPixelValue(element,"borderLeftWidth")},"border-right":function(element){return getPixelValue(element,"borderRightWidth")},"margin-top":function(element){return getPixelValue(element,"marginTop")},"margin-bottom":function(element){return getPixelValue(element,"marginBottom")},"margin-left":function(element){return getPixelValue(element,"marginLeft")},"margin-right":function(element){return getPixelValue(element,"marginRight")}}});if("getBoundingClientRect" in document.documentElement){Object.extend(Element.Layout.COMPUTATIONS,{right:function(element){var parent=hasLayout(element.getOffsetParent());var rect=element.getBoundingClientRect(),pRect=parent.getBoundingClientRect();return(pRect.right-rect.right).round()},bottom:function(element){var parent=hasLayout(element.getOffsetParent());var rect=element.getBoundingClientRect(),pRect=parent.getBoundingClientRect();return(pRect.bottom-rect.bottom).round()}})}Element.Offset=Class.create({initialize:function(left,top){this.left=left.round();this.top=top.round();this[0]=this.left;this[1]=this.top},relativeTo:function(offset){return new Element.Offset(this.left-offset.left,this.top-offset.top)},inspect:function(){return"#<Element.Offset left: #{left} top: #{top}>".interpolate(this)},toString:function(){return"[#{left}, #{top}]".interpolate(this)},toArray:function(){return[this.left,this.top]}});function getLayout(element,preCompute){return new Element.Layout(element,preCompute)}function measure(element,property){return $(element).getLayout().get(property)}function getDimensions(element){element=$(element);var display=Element.getStyle(element,"display");if(display&&display!=="none"){return{width:element.offsetWidth,height:element.offsetHeight}}var style=element.style;var originalStyles={visibility:style.visibility,position:style.position,display:style.display};var newStyles={visibility:"hidden",display:"block"};if(originalStyles.position!=="fixed"){newStyles.position="absolute"}Element.setStyle(element,newStyles);var dimensions={width:element.offsetWidth,height:element.offsetHeight};Element.setStyle(element,originalStyles);return dimensions}function getOffsetParent(element){element=$(element);if(isDocument(element)||isDetached(element)||isBody(element)||isHtml(element)){return $(document.body)}var isInline=(Element.getStyle(element,"display")==="inline");if(!isInline&&element.offsetParent){return $(element.offsetParent)}while((element=element.parentNode)&&element!==document.body){if(Element.getStyle(element,"position")!=="static"){return isHtml(element)?$(document.body):$(element)}}return $(document.body)}function cumulativeOffset(element){element=$(element);var valueT=0,valueL=0;if(element.parentNode){do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent}while(element)}return new Element.Offset(valueL,valueT)}function positionedOffset(element){element=$(element);var layout=element.getLayout();var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;element=element.offsetParent;if(element){if(isBody(element)){break}var p=Element.getStyle(element,"position");if(p!=="static"){break}}}while(element);valueL-=layout.get("margin-top");valueT-=layout.get("margin-left");return new Element.Offset(valueL,valueT)}function cumulativeScrollOffset(element){var valueT=0,valueL=0;do{valueT+=element.scrollTop||0;valueL+=element.scrollLeft||0;element=element.parentNode}while(element);return new Element.Offset(valueL,valueT)}function viewportOffset(forElement){element=$(element);var valueT=0,valueL=0,docBody=document.body;var element=forElement;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==docBody&&Element.getStyle(element,"position")=="absolute"){break}}while(element=element.offsetParent);element=forElement;do{if(element!=docBody){valueT-=element.scrollTop||0;valueL-=element.scrollLeft||0}}while(element=element.parentNode);return new Element.Offset(valueL,valueT)}function absolutize(element){element=$(element);if(Element.getStyle(element,"position")==="absolute"){return element}var offsetParent=getOffsetParent(element);var eOffset=element.viewportOffset(),pOffset=offsetParent.viewportOffset();var offset=eOffset.relativeTo(pOffset);var layout=element.getLayout();element.store("prototype_absolutize_original_styles",{left:element.getStyle("left"),top:element.getStyle("top"),width:element.getStyle("width"),height:element.getStyle("height")});element.setStyle({position:"absolute",top:offset.top+"px",left:offset.left+"px",width:layout.get("width")+"px",height:layout.get("height")+"px"});return element}function relativize(element){element=$(element);if(Element.getStyle(element,"position")==="relative"){return element}var originalStyles=element.retrieve("prototype_absolutize_original_styles");if(originalStyles){element.setStyle(originalStyles)}return element}if(Prototype.Browser.IE){getOffsetParent=getOffsetParent.wrap(function(proceed,element){element=$(element);if(isDocument(element)||isDetached(element)||isBody(element)||isHtml(element)){return $(document.body)}var position=element.getStyle("position");if(position!=="static"){return proceed(element)}element.setStyle({position:"relative"});var value=proceed(element);element.setStyle({position:position});return value});positionedOffset=positionedOffset.wrap(function(proceed,element){element=$(element);if(!element.parentNode){return new Element.Offset(0,0)}var position=element.getStyle("position");if(position!=="static"){return proceed(element)}var offsetParent=element.getOffsetParent();if(offsetParent&&offsetParent.getStyle("position")==="fixed"){hasLayout(offsetParent)}element.setStyle({position:"relative"});var value=proceed(element);element.setStyle({position:position});return value})}else{if(Prototype.Browser.Webkit){cumulativeOffset=function(element){element=$(element);var valueT=0,valueL=0;do{valueT+=element.offsetTop||0;valueL+=element.offsetLeft||0;if(element.offsetParent==document.body){if(Element.getStyle(element,"position")=="absolute"){break}}element=element.offsetParent}while(element);return new Element.Offset(valueL,valueT)}}}Element.addMethods({getLayout:getLayout,measure:measure,getDimensions:getDimensions,getOffsetParent:getOffsetParent,cumulativeOffset:cumulativeOffset,positionedOffset:positionedOffset,cumulativeScrollOffset:cumulativeScrollOffset,viewportOffset:viewportOffset,absolutize:absolutize,relativize:relativize});function isBody(element){return element.nodeName.toUpperCase()==="BODY"}function isHtml(element){return element.nodeName.toUpperCase()==="HTML"}function isDocument(element){return element.nodeType===Node.DOCUMENT_NODE}function isDetached(element){return element!==document.body&&!Element.descendantOf(element,document.body)}if("getBoundingClientRect" in document.documentElement){Element.addMethods({viewportOffset:function(element){element=$(element);if(isDetached(element)){return new Element.Offset(0,0)}var rect=element.getBoundingClientRect(),docEl=document.documentElement;return new Element.Offset(rect.left-docEl.clientLeft,rect.top-docEl.clientTop)}})}})();window.$$=function(){var expression=$A(arguments).join(", ");return Prototype.Selector.select(expression,document)};Prototype.Selector=(function(){function select(){throw new Error('Method "Prototype.Selector.select" must be defined.')}function match(){throw new Error('Method "Prototype.Selector.match" must be defined.')}function find(elements,expression,index){index=index||0;var match=Prototype.Selector.match,length=elements.length,matchIndex=0,i;for(i=0;i<length;i++){if(match(elements[i],expression)&&index==matchIndex++){return Element.extend(elements[i])}}}function extendElements(elements){for(var i=0,length=elements.length;i<length;i++){Element.extend(elements[i])}return elements}var K=Prototype.K;return{select:select,match:match,find:find,extendElements:(Element.extend===K)?K:extendElements,extendElement:Element.extend}})();Prototype._original_property=window.Sizzle; +/*! + * Sizzle CSS Selector Engine - v1.0 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var chunker=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,done=0,toString=Object.prototype.toString,hasDuplicate=false,baseHasDuplicate=true;[0,0].sort(function(){baseHasDuplicate=false;return 0});var Sizzle=function(selector,context,results,seed){results=results||[];var origContext=context=context||document;if(context.nodeType!==1&&context.nodeType!==9){return[]}if(!selector||typeof selector!=="string"){return results}var parts=[],m,set,checkSet,check,mode,extra,prune=true,contextXML=isXML(context),soFar=selector;while((chunker.exec(""),m=chunker.exec(soFar))!==null){soFar=m[3];parts.push(m[1]);if(m[2]){extra=m[3];break}}if(parts.length>1&&origPOS.exec(selector)){if(parts.length===2&&Expr.relative[parts[0]]){set=posProcess(parts[0]+parts[1],context)}else{set=Expr.relative[parts[0]]?[context]:Sizzle(parts.shift(),context);while(parts.length){selector=parts.shift();if(Expr.relative[selector]){selector+=parts.shift()}set=posProcess(selector,set)}}}else{if(!seed&&parts.length>1&&context.nodeType===9&&!contextXML&&Expr.match.ID.test(parts[0])&&!Expr.match.ID.test(parts[parts.length-1])){var ret=Sizzle.find(parts.shift(),context,contextXML);context=ret.expr?Sizzle.filter(ret.expr,ret.set)[0]:ret.set[0]}if(context){var ret=seed?{expr:parts.pop(),set:makeArray(seed)}:Sizzle.find(parts.pop(),parts.length===1&&(parts[0]==="~"||parts[0]==="+")&&context.parentNode?context.parentNode:context,contextXML);set=ret.expr?Sizzle.filter(ret.expr,ret.set):ret.set;if(parts.length>0){checkSet=makeArray(set)}else{prune=false}while(parts.length){var cur=parts.pop(),pop=cur;if(!Expr.relative[cur]){cur=""}else{pop=parts.pop()}if(pop==null){pop=context}Expr.relative[cur](checkSet,pop,contextXML)}}else{checkSet=parts=[]}}if(!checkSet){checkSet=set}if(!checkSet){throw"Syntax error, unrecognized expression: "+(cur||selector)}if(toString.call(checkSet)==="[object Array]"){if(!prune){results.push.apply(results,checkSet)}else{if(context&&context.nodeType===1){for(var i=0;checkSet[i]!=null;i++){if(checkSet[i]&&(checkSet[i]===true||checkSet[i].nodeType===1&&contains(context,checkSet[i]))){results.push(set[i])}}}else{for(var i=0;checkSet[i]!=null;i++){if(checkSet[i]&&checkSet[i].nodeType===1){results.push(set[i])}}}}}else{makeArray(checkSet,results)}if(extra){Sizzle(extra,origContext,results,seed);Sizzle.uniqueSort(results)}return results};Sizzle.uniqueSort=function(results){if(sortOrder){hasDuplicate=baseHasDuplicate;results.sort(sortOrder);if(hasDuplicate){for(var i=1;i<results.length;i++){if(results[i]===results[i-1]){results.splice(i--,1)}}}}return results};Sizzle.matches=function(expr,set){return Sizzle(expr,null,null,set)};Sizzle.find=function(expr,context,isXML){var set,match;if(!expr){return[]}for(var i=0,l=Expr.order.length;i<l;i++){var type=Expr.order[i],match;if((match=Expr.leftMatch[type].exec(expr))){var left=match[1];match.splice(1,1);if(left.substr(left.length-1)!=="\\"){match[1]=(match[1]||"").replace(/\\/g,"");set=Expr.find[type](match,context,isXML);if(set!=null){expr=expr.replace(Expr.match[type],"");break}}}}if(!set){set=context.getElementsByTagName("*")}return{set:set,expr:expr}};Sizzle.filter=function(expr,set,inplace,not){var old=expr,result=[],curLoop=set,match,anyFound,isXMLFilter=set&&set[0]&&isXML(set[0]);while(expr&&set.length){for(var type in Expr.filter){if((match=Expr.match[type].exec(expr))!=null){var filter=Expr.filter[type],found,item;anyFound=false;if(curLoop==result){result=[]}if(Expr.preFilter[type]){match=Expr.preFilter[type](match,curLoop,inplace,result,not,isXMLFilter);if(!match){anyFound=found=true}else{if(match===true){continue}}}if(match){for(var i=0;(item=curLoop[i])!=null;i++){if(item){found=filter(item,match,i,curLoop);var pass=not^!!found;if(inplace&&found!=null){if(pass){anyFound=true}else{curLoop[i]=false}}else{if(pass){result.push(item);anyFound=true}}}}}if(found!==undefined){if(!inplace){curLoop=result}expr=expr.replace(Expr.match[type],"");if(!anyFound){return[]}break}}}if(expr==old){if(anyFound==null){throw"Syntax error, unrecognized expression: "+expr}else{break}}old=expr}return curLoop};var Expr=Sizzle.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(elem){return elem.getAttribute("href")}},relative:{"+":function(checkSet,part,isXML){var isPartStr=typeof part==="string",isTag=isPartStr&&!/\W/.test(part),isPartStrNotTag=isPartStr&&!isTag;if(isTag&&!isXML){part=part.toUpperCase()}for(var i=0,l=checkSet.length,elem;i<l;i++){if((elem=checkSet[i])){while((elem=elem.previousSibling)&&elem.nodeType!==1){}checkSet[i]=isPartStrNotTag||elem&&elem.nodeName===part?elem||false:elem===part}}if(isPartStrNotTag){Sizzle.filter(part,checkSet,true)}},">":function(checkSet,part,isXML){var isPartStr=typeof part==="string";if(isPartStr&&!/\W/.test(part)){part=isXML?part:part.toUpperCase();for(var i=0,l=checkSet.length;i<l;i++){var elem=checkSet[i];if(elem){var parent=elem.parentNode;checkSet[i]=parent.nodeName===part?parent:false}}}else{for(var i=0,l=checkSet.length;i<l;i++){var elem=checkSet[i];if(elem){checkSet[i]=isPartStr?elem.parentNode:elem.parentNode===part}}if(isPartStr){Sizzle.filter(part,checkSet,true)}}},"":function(checkSet,part,isXML){var doneName=done++,checkFn=dirCheck;if(!/\W/.test(part)){var nodeCheck=part=isXML?part:part.toUpperCase();checkFn=dirNodeCheck}checkFn("parentNode",part,doneName,checkSet,nodeCheck,isXML)},"~":function(checkSet,part,isXML){var doneName=done++,checkFn=dirCheck;if(typeof part==="string"&&!/\W/.test(part)){var nodeCheck=part=isXML?part:part.toUpperCase();checkFn=dirNodeCheck}checkFn("previousSibling",part,doneName,checkSet,nodeCheck,isXML)}},find:{ID:function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]);return m?[m]:[]}},NAME:function(match,context,isXML){if(typeof context.getElementsByName!=="undefined"){var ret=[],results=context.getElementsByName(match[1]);for(var i=0,l=results.length;i<l;i++){if(results[i].getAttribute("name")===match[1]){ret.push(results[i])}}return ret.length===0?null:ret}},TAG:function(match,context){return context.getElementsByTagName(match[1])}},preFilter:{CLASS:function(match,curLoop,inplace,result,not,isXML){match=" "+match[1].replace(/\\/g,"")+" ";if(isXML){return match}for(var i=0,elem;(elem=curLoop[i])!=null;i++){if(elem){if(not^(elem.className&&(" "+elem.className+" ").indexOf(match)>=0)){if(!inplace){result.push(elem)}}else{if(inplace){curLoop[i]=false}}}}return false},ID:function(match){return match[1].replace(/\\/g,"")},TAG:function(match,curLoop){for(var i=0;curLoop[i]===false;i++){}return curLoop[i]&&isXML(curLoop[i])?match[1]:match[1].toUpperCase()},CHILD:function(match){if(match[1]=="nth"){var test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(match[2]=="even"&&"2n"||match[2]=="odd"&&"2n+1"||!/\D/.test(match[2])&&"0n+"+match[2]||match[2]);match[2]=(test[1]+(test[2]||1))-0;match[3]=test[3]-0}match[0]=done++;return match},ATTR:function(match,curLoop,inplace,result,not,isXML){var name=match[1].replace(/\\/g,"");if(!isXML&&Expr.attrMap[name]){match[1]=Expr.attrMap[name]}if(match[2]==="~="){match[4]=" "+match[4]+" "}return match},PSEUDO:function(match,curLoop,inplace,result,not){if(match[1]==="not"){if((chunker.exec(match[3])||"").length>1||/^\w/.test(match[3])){match[3]=Sizzle(match[3],null,null,curLoop)}else{var ret=Sizzle.filter(match[3],curLoop,inplace,true^not);if(!inplace){result.push.apply(result,ret)}return false}}else{if(Expr.match.POS.test(match[0])||Expr.match.CHILD.test(match[0])){return true}}return match},POS:function(match){match.unshift(true);return match}},filters:{enabled:function(elem){return elem.disabled===false&&elem.type!=="hidden"},disabled:function(elem){return elem.disabled===true},checked:function(elem){return elem.checked===true},selected:function(elem){elem.parentNode.selectedIndex;return elem.selected===true},parent:function(elem){return !!elem.firstChild},empty:function(elem){return !elem.firstChild},has:function(elem,i,match){return !!Sizzle(match[3],elem).length},header:function(elem){return/h\d/i.test(elem.nodeName)},text:function(elem){return"text"===elem.type},radio:function(elem){return"radio"===elem.type},checkbox:function(elem){return"checkbox"===elem.type},file:function(elem){return"file"===elem.type},password:function(elem){return"password"===elem.type},submit:function(elem){return"submit"===elem.type},image:function(elem){return"image"===elem.type},reset:function(elem){return"reset"===elem.type},button:function(elem){return"button"===elem.type||elem.nodeName.toUpperCase()==="BUTTON"},input:function(elem){return/input|select|textarea|button/i.test(elem.nodeName)}},setFilters:{first:function(elem,i){return i===0},last:function(elem,i,match,array){return i===array.length-1},even:function(elem,i){return i%2===0},odd:function(elem,i){return i%2===1},lt:function(elem,i,match){return i<match[3]-0},gt:function(elem,i,match){return i>match[3]-0},nth:function(elem,i,match){return match[3]-0==i},eq:function(elem,i,match){return match[3]-0==i}},filter:{PSEUDO:function(elem,match,i,array){var name=match[1],filter=Expr.filters[name];if(filter){return filter(elem,i,match,array)}else{if(name==="contains"){return(elem.textContent||elem.innerText||"").indexOf(match[3])>=0}else{if(name==="not"){var not=match[3];for(var i=0,l=not.length;i<l;i++){if(not[i]===elem){return false}}return true}}}},CHILD:function(elem,match){var type=match[1],node=elem;switch(type){case"only":case"first":while((node=node.previousSibling)){if(node.nodeType===1){return false}}if(type=="first"){return true}node=elem;case"last":while((node=node.nextSibling)){if(node.nodeType===1){return false}}return true;case"nth":var first=match[2],last=match[3];if(first==1&&last==0){return true}var doneName=match[0],parent=elem.parentNode;if(parent&&(parent.sizcache!==doneName||!elem.nodeIndex)){var count=0;for(node=parent.firstChild;node;node=node.nextSibling){if(node.nodeType===1){node.nodeIndex=++count}}parent.sizcache=doneName}var diff=elem.nodeIndex-last;if(first==0){return diff==0}else{return(diff%first==0&&diff/first>=0)}}},ID:function(elem,match){return elem.nodeType===1&&elem.getAttribute("id")===match},TAG:function(elem,match){return(match==="*"&&elem.nodeType===1)||elem.nodeName===match},CLASS:function(elem,match){return(" "+(elem.className||elem.getAttribute("class"))+" ").indexOf(match)>-1},ATTR:function(elem,match){var name=match[1],result=Expr.attrHandle[name]?Expr.attrHandle[name](elem):elem[name]!=null?elem[name]:elem.getAttribute(name),value=result+"",type=match[2],check=match[4];return result==null?type==="!=":type==="="?value===check:type==="*="?value.indexOf(check)>=0:type==="~="?(" "+value+" ").indexOf(check)>=0:!check?value&&result!==false:type==="!="?value!=check:type==="^="?value.indexOf(check)===0:type==="$="?value.substr(value.length-check.length)===check:type==="|="?value===check||value.substr(0,check.length+1)===check+"-":false},POS:function(elem,match,i,array){var name=match[2],filter=Expr.setFilters[name];if(filter){return filter(elem,i,match,array)}}}};var origPOS=Expr.match.POS;for(var type in Expr.match){Expr.match[type]=new RegExp(Expr.match[type].source+/(?![^\[]*\])(?![^\(]*\))/.source);Expr.leftMatch[type]=new RegExp(/(^(?:.|\r|\n)*?)/.source+Expr.match[type].source)}var makeArray=function(array,results){array=Array.prototype.slice.call(array,0);if(results){results.push.apply(results,array);return results}return array};try{Array.prototype.slice.call(document.documentElement.childNodes,0)}catch(e){makeArray=function(array,results){var ret=results||[];if(toString.call(array)==="[object Array]"){Array.prototype.push.apply(ret,array)}else{if(typeof array.length==="number"){for(var i=0,l=array.length;i<l;i++){ret.push(array[i])}}else{for(var i=0;array[i];i++){ret.push(array[i])}}}return ret}}var sortOrder;if(document.documentElement.compareDocumentPosition){sortOrder=function(a,b){if(!a.compareDocumentPosition||!b.compareDocumentPosition){if(a==b){hasDuplicate=true}return 0}var ret=a.compareDocumentPosition(b)&4?-1:a===b?0:1;if(ret===0){hasDuplicate=true}return ret}}else{if("sourceIndex" in document.documentElement){sortOrder=function(a,b){if(!a.sourceIndex||!b.sourceIndex){if(a==b){hasDuplicate=true}return 0}var ret=a.sourceIndex-b.sourceIndex;if(ret===0){hasDuplicate=true}return ret}}else{if(document.createRange){sortOrder=function(a,b){if(!a.ownerDocument||!b.ownerDocument){if(a==b){hasDuplicate=true}return 0}var aRange=a.ownerDocument.createRange(),bRange=b.ownerDocument.createRange();aRange.setStart(a,0);aRange.setEnd(a,0);bRange.setStart(b,0);bRange.setEnd(b,0);var ret=aRange.compareBoundaryPoints(Range.START_TO_END,bRange);if(ret===0){hasDuplicate=true}return ret}}}}(function(){var form=document.createElement("div"),id="script"+(new Date).getTime();form.innerHTML="<a name='"+id+"'/>";var root=document.documentElement;root.insertBefore(form,root.firstChild);if(!!document.getElementById(id)){Expr.find.ID=function(match,context,isXML){if(typeof context.getElementById!=="undefined"&&!isXML){var m=context.getElementById(match[1]);return m?m.id===match[1]||typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id").nodeValue===match[1]?[m]:undefined:[]}};Expr.filter.ID=function(elem,match){var node=typeof elem.getAttributeNode!=="undefined"&&elem.getAttributeNode("id");return elem.nodeType===1&&node&&node.nodeValue===match}}root.removeChild(form);root=form=null})();(function(){var div=document.createElement("div");div.appendChild(document.createComment(""));if(div.getElementsByTagName("*").length>0){Expr.find.TAG=function(match,context){var results=context.getElementsByTagName(match[1]);if(match[1]==="*"){var tmp=[];for(var i=0;results[i];i++){if(results[i].nodeType===1){tmp.push(results[i])}}results=tmp}return results}}div.innerHTML="<a href='#'></a>";if(div.firstChild&&typeof div.firstChild.getAttribute!=="undefined"&&div.firstChild.getAttribute("href")!=="#"){Expr.attrHandle.href=function(elem){return elem.getAttribute("href",2)}}div=null})();if(document.querySelectorAll){(function(){var oldSizzle=Sizzle,div=document.createElement("div");div.innerHTML="<p class='TEST'></p>";if(div.querySelectorAll&&div.querySelectorAll(".TEST").length===0){return}Sizzle=function(query,context,extra,seed){context=context||document;if(!seed&&context.nodeType===9&&!isXML(context)){try{return makeArray(context.querySelectorAll(query),extra)}catch(e){}}return oldSizzle(query,context,extra,seed)};for(var prop in oldSizzle){Sizzle[prop]=oldSizzle[prop]}div=null})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var div=document.createElement("div");div.innerHTML="<div class='test e'></div><div class='test'></div>";if(div.getElementsByClassName("e").length===0){return}div.lastChild.className="e";if(div.getElementsByClassName("e").length===1){return}Expr.order.splice(1,0,"CLASS");Expr.find.CLASS=function(match,context,isXML){if(typeof context.getElementsByClassName!=="undefined"&&!isXML){return context.getElementsByClassName(match[1])}};div=null})()}function dirNodeCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){var sibDir=dir=="previousSibling"&&!isXML;for(var i=0,l=checkSet.length;i<l;i++){var elem=checkSet[i];if(elem){if(sibDir&&elem.nodeType===1){elem.sizcache=doneName;elem.sizset=i}elem=elem[dir];var match=false;while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset];break}if(elem.nodeType===1&&!isXML){elem.sizcache=doneName;elem.sizset=i}if(elem.nodeName===cur){match=elem;break}elem=elem[dir]}checkSet[i]=match}}}function dirCheck(dir,cur,doneName,checkSet,nodeCheck,isXML){var sibDir=dir=="previousSibling"&&!isXML;for(var i=0,l=checkSet.length;i<l;i++){var elem=checkSet[i];if(elem){if(sibDir&&elem.nodeType===1){elem.sizcache=doneName;elem.sizset=i}elem=elem[dir];var match=false;while(elem){if(elem.sizcache===doneName){match=checkSet[elem.sizset];break}if(elem.nodeType===1){if(!isXML){elem.sizcache=doneName;elem.sizset=i}if(typeof cur!=="string"){if(elem===cur){match=true;break}}else{if(Sizzle.filter(cur,[elem]).length>0){match=elem;break}}}elem=elem[dir]}checkSet[i]=match}}}var contains=document.compareDocumentPosition?function(a,b){return a.compareDocumentPosition(b)&16}:function(a,b){return a!==b&&(a.contains?a.contains(b):true)};var isXML=function(elem){return elem.nodeType===9&&elem.documentElement.nodeName!=="HTML"||!!elem.ownerDocument&&elem.ownerDocument.documentElement.nodeName!=="HTML"};var posProcess=function(selector,context){var tmpSet=[],later="",match,root=context.nodeType?[context]:context;while((match=Expr.match.PSEUDO.exec(selector))){later+=match[0];selector=selector.replace(Expr.match.PSEUDO,"")}selector=Expr.relative[selector]?selector+"*":selector;for(var i=0,l=root.length;i<l;i++){Sizzle(selector,root[i],tmpSet)}return Sizzle.filter(later,tmpSet)};window.Sizzle=Sizzle})();(function(engine){var extendElements=Prototype.Selector.extendElements;function select(selector,scope){return extendElements(engine(selector,scope||document))}function match(element,selector){return engine.matches(selector,[element]).length==1}Prototype.Selector.engine=engine;Prototype.Selector.select=select;Prototype.Selector.match=match})(Sizzle);window.Sizzle=Prototype._original_property;delete Prototype._original_property;var Form={reset:function(form){form=$(form);form.reset();return form},serializeElements:function(elements,options){if(typeof options!="object"){options={hash:!!options}}else{if(Object.isUndefined(options.hash)){options.hash=true}}var key,value,submitted=false,submit=options.submit,accumulator,initial;if(options.hash){initial={};accumulator=function(result,key,value){if(key in result){if(!Object.isArray(result[key])){result[key]=[result[key]]}result[key].push(value)}else{result[key]=value}return result}}else{initial="";accumulator=function(result,key,value){return result+(result?"&":"")+encodeURIComponent(key)+"="+encodeURIComponent(value)}}return elements.inject(initial,function(result,element){if(!element.disabled&&element.name){key=element.name;value=$(element).getValue();if(value!=null&&element.type!="file"&&(element.type!="submit"||(!submitted&&submit!==false&&(!submit||key==submit)&&(submitted=true)))){result=accumulator(result,key,value)}}return result})}};Form.Methods={serialize:function(form,options){return Form.serializeElements(Form.getElements(form),options)},getElements:function(form){var elements=$(form).getElementsByTagName("*"),element,arr=[],serializers=Form.Element.Serializers;for(var i=0;element=elements[i];i++){arr.push(element)}return arr.inject([],function(elements,child){if(serializers[child.tagName.toLowerCase()]){elements.push(Element.extend(child))}return elements})},getInputs:function(form,typeName,name){form=$(form);var inputs=form.getElementsByTagName("input");if(!typeName&&!name){return $A(inputs).map(Element.extend)}for(var i=0,matchingInputs=[],length=inputs.length;i<length;i++){var input=inputs[i];if((typeName&&input.type!=typeName)||(name&&input.name!=name)){continue}matchingInputs.push(Element.extend(input))}return matchingInputs},disable:function(form){form=$(form);Form.getElements(form).invoke("disable");return form},enable:function(form){form=$(form);Form.getElements(form).invoke("enable");return form},findFirstElement:function(form){var elements=$(form).getElements().findAll(function(element){return"hidden"!=element.type&&!element.disabled});var firstByIndex=elements.findAll(function(element){return element.hasAttribute("tabIndex")&&element.tabIndex>=0}).sortBy(function(element){return element.tabIndex}).first();return firstByIndex?firstByIndex:elements.find(function(element){return/^(?:input|select|textarea)$/i.test(element.tagName)})},focusFirstElement:function(form){form=$(form);var element=form.findFirstElement();if(element){element.activate()}return form},request:function(form,options){form=$(form),options=Object.clone(options||{});var params=options.parameters,action=form.readAttribute("action")||"";if(action.blank()){action=window.location.href}options.parameters=form.serialize(true);if(params){if(Object.isString(params)){params=params.toQueryParams()}Object.extend(options.parameters,params)}if(form.hasAttribute("method")&&!options.method){options.method=form.method}return new Ajax.Request(action,options)}};Form.Element={focus:function(element){$(element).focus();return element},select:function(element){$(element).select();return element}};Form.Element.Methods={serialize:function(element){element=$(element);if(!element.disabled&&element.name){var value=element.getValue();if(value!=undefined){var pair={};pair[element.name]=value;return Object.toQueryString(pair)}}return""},getValue:function(element){element=$(element);var method=element.tagName.toLowerCase();return Form.Element.Serializers[method](element)},setValue:function(element,value){element=$(element);var method=element.tagName.toLowerCase();Form.Element.Serializers[method](element,value);return element},clear:function(element){$(element).value="";return element},present:function(element){return $(element).value!=""},activate:function(element){element=$(element);try{element.focus();if(element.select&&(element.tagName.toLowerCase()!="input"||!(/^(?:button|reset|submit)$/i.test(element.type)))){element.select()}}catch(e){}return element},disable:function(element){element=$(element);element.disabled=true;return element},enable:function(element){element=$(element);element.disabled=false;return element}};var Field=Form.Element;var $F=Form.Element.Methods.getValue;Form.Element.Serializers=(function(){function input(element,value){switch(element.type.toLowerCase()){case"checkbox":case"radio":return inputSelector(element,value);default:return valueSelector(element,value)}}function inputSelector(element,value){if(Object.isUndefined(value)){return element.checked?element.value:null}else{element.checked=!!value}}function valueSelector(element,value){if(Object.isUndefined(value)){return element.value}else{element.value=value}}function select(element,value){if(Object.isUndefined(value)){return(element.type==="select-one"?selectOne:selectMany)(element)}var opt,currentValue,single=!Object.isArray(value);for(var i=0,length=element.length;i<length;i++){opt=element.options[i];currentValue=this.optionValue(opt);if(single){if(currentValue==value){opt.selected=true;return}}else{opt.selected=value.include(currentValue)}}}function selectOne(element){var index=element.selectedIndex;return index>=0?optionValue(element.options[index]):null}function selectMany(element){var values,length=element.length;if(!length){return null}for(var i=0,values=[];i<length;i++){var opt=element.options[i];if(opt.selected){values.push(optionValue(opt))}}return values}function optionValue(opt){return Element.hasAttribute(opt,"value")?opt.value:opt.text}return{input:input,inputSelector:inputSelector,textarea:valueSelector,select:select,selectOne:selectOne,selectMany:selectMany,optionValue:optionValue,button:valueSelector}})();Abstract.TimedObserver=Class.create(PeriodicalExecuter,{initialize:function($super,element,frequency,callback){$super(callback,frequency);this.element=$(element);this.lastValue=this.getValue()},execute:function(){var value=this.getValue();if(Object.isString(this.lastValue)&&Object.isString(value)?this.lastValue!=value:String(this.lastValue)!=String(value)){this.callback(this.element,value);this.lastValue=value}}});Form.Element.Observer=Class.create(Abstract.TimedObserver,{getValue:function(){return Form.Element.getValue(this.element)}});Form.Observer=Class.create(Abstract.TimedObserver,{getValue:function(){return Form.serialize(this.element)}});Abstract.EventObserver=Class.create({initialize:function(element,callback){this.element=$(element);this.callback=callback;this.lastValue=this.getValue();if(this.element.tagName.toLowerCase()=="form"){this.registerFormCallbacks()}else{this.registerCallback(this.element)}},onElementEvent:function(){var value=this.getValue();if(this.lastValue!=value){this.callback(this.element,value);this.lastValue=value}},registerFormCallbacks:function(){Form.getElements(this.element).each(this.registerCallback,this)},registerCallback:function(element){if(element.type){switch(element.type.toLowerCase()){case"checkbox":case"radio":Event.observe(element,"click",this.onElementEvent.bind(this));break;default:Event.observe(element,"change",this.onElementEvent.bind(this));break}}}});Form.Element.EventObserver=Class.create(Abstract.EventObserver,{getValue:function(){return Form.Element.getValue(this.element)}});Form.EventObserver=Class.create(Abstract.EventObserver,{getValue:function(){return Form.serialize(this.element)}});(function(){var Event={KEY_BACKSPACE:8,KEY_TAB:9,KEY_RETURN:13,KEY_ESC:27,KEY_LEFT:37,KEY_UP:38,KEY_RIGHT:39,KEY_DOWN:40,KEY_DELETE:46,KEY_HOME:36,KEY_END:35,KEY_PAGEUP:33,KEY_PAGEDOWN:34,KEY_INSERT:45,cache:{}};var docEl=document.documentElement;var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED="onmouseenter" in docEl&&"onmouseleave" in docEl;var isIELegacyEvent=function(event){return false};if(window.attachEvent){if(window.addEventListener){isIELegacyEvent=function(event){return !(event instanceof window.Event)}}else{isIELegacyEvent=function(event){return true}}}var _isButton;function _isButtonForDOMEvents(event,code){return event.which?(event.which===code+1):(event.button===code)}var legacyButtonMap={0:1,1:4,2:2};function _isButtonForLegacyEvents(event,code){return event.button===legacyButtonMap[code]}function _isButtonForWebKit(event,code){switch(code){case 0:return event.which==1&&!event.metaKey;case 1:return event.which==2||(event.which==1&&event.metaKey);case 2:return event.which==3;default:return false}}if(window.attachEvent){if(!window.addEventListener){_isButton=_isButtonForLegacyEvents}else{_isButton=function(event,code){return isIELegacyEvent(event)?_isButtonForLegacyEvents(event,code):_isButtonForDOMEvents(event,code)}}}else{if(Prototype.Browser.WebKit){_isButton=_isButtonForWebKit}else{_isButton=_isButtonForDOMEvents}}function isLeftClick(event){return _isButton(event,0)}function isMiddleClick(event){return _isButton(event,1)}function isRightClick(event){return _isButton(event,2)}function element(event){event=Event.extend(event);var node=event.target,type=event.type,currentTarget=event.currentTarget;if(currentTarget&¤tTarget.tagName){if(type==="load"||type==="error"||(type==="click"&¤tTarget.tagName.toLowerCase()==="input"&¤tTarget.type==="radio")){node=currentTarget}}if(node.nodeType==Node.TEXT_NODE){node=node.parentNode}return Element.extend(node)}function findElement(event,expression){var element=Event.element(event);if(!expression){return element}while(element){if(Object.isElement(element)&&Prototype.Selector.match(element,expression)){return Element.extend(element)}element=element.parentNode}}function pointer(event){return{x:pointerX(event),y:pointerY(event)}}function pointerX(event){var docElement=document.documentElement,body=document.body||{scrollLeft:0};return event.pageX||(event.clientX+(docElement.scrollLeft||body.scrollLeft)-(docElement.clientLeft||0))}function pointerY(event){var docElement=document.documentElement,body=document.body||{scrollTop:0};return event.pageY||(event.clientY+(docElement.scrollTop||body.scrollTop)-(docElement.clientTop||0))}function stop(event){Event.extend(event);event.preventDefault();event.stopPropagation();event.stopped=true}Event.Methods={isLeftClick:isLeftClick,isMiddleClick:isMiddleClick,isRightClick:isRightClick,element:element,findElement:findElement,pointer:pointer,pointerX:pointerX,pointerY:pointerY,stop:stop};var methods=Object.keys(Event.Methods).inject({},function(m,name){m[name]=Event.Methods[name].methodize();return m});if(window.attachEvent){function _relatedTarget(event){var element;switch(event.type){case"mouseover":case"mouseenter":element=event.fromElement;break;case"mouseout":case"mouseleave":element=event.toElement;break;default:return null}return Element.extend(element)}var additionalMethods={stopPropagation:function(){this.cancelBubble=true},preventDefault:function(){this.returnValue=false},inspect:function(){return"[object Event]"}};Event.extend=function(event,element){if(!event){return false}if(!isIELegacyEvent(event)){return event}if(event._extendedByPrototype){return event}event._extendedByPrototype=Prototype.emptyFunction;var pointer=Event.pointer(event);Object.extend(event,{target:event.srcElement||element,relatedTarget:_relatedTarget(event),pageX:pointer.x,pageY:pointer.y});Object.extend(event,methods);Object.extend(event,additionalMethods);return event}}else{Event.extend=Prototype.K}if(window.addEventListener){Event.prototype=window.Event.prototype||document.createEvent("HTMLEvents").__proto__;Object.extend(Event.prototype,methods)}function _createResponder(element,eventName,handler){var registry=Element.retrieve(element,"prototype_event_registry");if(Object.isUndefined(registry)){CACHE.push(element);registry=Element.retrieve(element,"prototype_event_registry",$H())}var respondersForEvent=registry.get(eventName);if(Object.isUndefined(respondersForEvent)){respondersForEvent=[];registry.set(eventName,respondersForEvent)}if(respondersForEvent.pluck("handler").include(handler)){return false}var responder;if(eventName.include(":")){responder=function(event){if(Object.isUndefined(event.eventName)){return false}if(event.eventName!==eventName){return false}Event.extend(event,element);handler.call(element,event)}}else{if(!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED&&(eventName==="mouseenter"||eventName==="mouseleave")){if(eventName==="mouseenter"||eventName==="mouseleave"){responder=function(event){Event.extend(event,element);var parent=event.relatedTarget;while(parent&&parent!==element){try{parent=parent.parentNode}catch(e){parent=element}}if(parent===element){return}handler.call(element,event)}}}else{responder=function(event){Event.extend(event,element);handler.call(element,event)}}}responder.handler=handler;respondersForEvent.push(responder);return responder}function _destroyCache(){for(var i=0,length=CACHE.length;i<length;i++){Event.stopObserving(CACHE[i]);CACHE[i]=null}}var CACHE=[];if(Prototype.Browser.IE){window.attachEvent("onunload",_destroyCache)}if(Prototype.Browser.WebKit){window.addEventListener("unload",Prototype.emptyFunction,false)}var _getDOMEventName=Prototype.K,translations={mouseenter:"mouseover",mouseleave:"mouseout"};if(!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED){_getDOMEventName=function(eventName){return(translations[eventName]||eventName)}}function observe(element,eventName,handler){element=$(element);var responder=_createResponder(element,eventName,handler);if(!responder){return element}if(eventName.include(":")){if(element.addEventListener){element.addEventListener("dataavailable",responder,false)}else{element.attachEvent("ondataavailable",responder);element.attachEvent("onlosecapture",responder)}}else{var actualEventName=_getDOMEventName(eventName);if(element.addEventListener){element.addEventListener(actualEventName,responder,false)}else{element.attachEvent("on"+actualEventName,responder)}}return element}function stopObserving(element,eventName,handler){element=$(element);var registry=Element.retrieve(element,"prototype_event_registry");if(!registry){return element}if(!eventName){registry.each(function(pair){var eventName=pair.key;stopObserving(element,eventName)});return element}var responders=registry.get(eventName);if(!responders){return element}if(!handler){responders.each(function(r){stopObserving(element,eventName,r.handler)});return element}var i=responders.length,responder;while(i--){if(responders[i].handler===handler){responder=responders[i];break}}if(!responder){return element}if(eventName.include(":")){if(element.removeEventListener){element.removeEventListener("dataavailable",responder,false)}else{element.detachEvent("ondataavailable",responder);element.detachEvent("onlosecapture",responder)}}else{var actualEventName=_getDOMEventName(eventName);if(element.removeEventListener){element.removeEventListener(actualEventName,responder,false)}else{element.detachEvent("on"+actualEventName,responder)}}registry.set(eventName,responders.without(responder));return element}function fire(element,eventName,memo,bubble){element=$(element);if(Object.isUndefined(bubble)){bubble=true}if(element==document&&document.createEvent&&!element.dispatchEvent){element=document.documentElement}var event;if(document.createEvent){event=document.createEvent("HTMLEvents");event.initEvent("dataavailable",bubble,true)}else{event=document.createEventObject();event.eventType=bubble?"ondataavailable":"onlosecapture"}event.eventName=eventName;event.memo=memo||{};if(document.createEvent){element.dispatchEvent(event)}else{element.fireEvent(event.eventType,event)}return Event.extend(event)}Event.Handler=Class.create({initialize:function(element,eventName,selector,callback){this.element=$(element);this.eventName=eventName;this.selector=selector;this.callback=callback;this.handler=this.handleEvent.bind(this)},start:function(){Event.observe(this.element,this.eventName,this.handler);return this},stop:function(){Event.stopObserving(this.element,this.eventName,this.handler);return this},handleEvent:function(event){var element=Event.findElement(event,this.selector);if(element){this.callback.call(this.element,event,element)}}});function on(element,eventName,selector,callback){element=$(element);if(Object.isFunction(selector)&&Object.isUndefined(callback)){callback=selector,selector=null}return new Event.Handler(element,eventName,selector,callback).start()}Object.extend(Event,Event.Methods);Object.extend(Event,{fire:fire,observe:observe,stopObserving:stopObserving,on:on});Element.addMethods({fire:fire,observe:observe,stopObserving:stopObserving,on:on});Object.extend(document,{fire:fire.methodize(),observe:observe.methodize(),stopObserving:stopObserving.methodize(),on:on.methodize(),loaded:false});if(window.Event){Object.extend(window.Event,Event)}else{window.Event=Event}})();(function(){var timer;function fireContentLoadedEvent(){if(document.loaded){return}if(timer){window.clearTimeout(timer)}document.loaded=true;document.fire("dom:loaded")}function checkReadyState(){if(document.readyState==="complete"){document.stopObserving("readystatechange",checkReadyState);fireContentLoadedEvent()}}if(document.addEventListener){document.addEventListener("DOMContentLoaded",fireContentLoadedEvent,false)}else{document.observe("readystatechange",checkReadyState);if(window==top){var timer=window.setInterval(function(){try{document.documentElement.doScroll("left")}catch(e){return}window.clearInterval(timer);fireContentLoadedEvent()},5)}}Event.observe(window,"load",fireContentLoadedEvent)})();Element.addMethods();Hash.toQueryString=Object.toQueryString;var Toggle={display:Element.toggle};Element.Methods.childOf=Element.Methods.descendantOf;var Insertion={Before:function(element,content){return Element.insert(element,{before:content})},Top:function(element,content){return Element.insert(element,{top:content})},Bottom:function(element,content){return Element.insert(element,{bottom:content})},After:function(element,content){return Element.insert(element,{after:content})}};var $continue=new Error('"throw $continue" is deprecated, use "return" instead');var Position={includeScrollOffsets:false,prepare:function(){this.deltaX=window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0;this.deltaY=window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0},within:function(element,x,y){if(this.includeScrollOffsets){return this.withinIncludingScrolloffsets(element,x,y)}this.xcomp=x;this.ycomp=y;this.offset=Element.cumulativeOffset(element);return(y>=this.offset[1]&&y<this.offset[1]+element.offsetHeight&&x>=this.offset[0]&&x<this.offset[0]+element.offsetWidth)},withinIncludingScrolloffsets:function(element,x,y){var offsetcache=Element.cumulativeScrollOffset(element);this.xcomp=x+offsetcache[0]-this.deltaX;this.ycomp=y+offsetcache[1]-this.deltaY;this.offset=Element.cumulativeOffset(element);return(this.ycomp>=this.offset[1]&&this.ycomp<this.offset[1]+element.offsetHeight&&this.xcomp>=this.offset[0]&&this.xcomp<this.offset[0]+element.offsetWidth)},overlap:function(mode,element){if(!mode){return 0}if(mode=="vertical"){return((this.offset[1]+element.offsetHeight)-this.ycomp)/element.offsetHeight}if(mode=="horizontal"){return((this.offset[0]+element.offsetWidth)-this.xcomp)/element.offsetWidth}},cumulativeOffset:Element.Methods.cumulativeOffset,positionedOffset:Element.Methods.positionedOffset,absolutize:function(element){Position.prepare();return Element.absolutize(element)},relativize:function(element){Position.prepare();return Element.relativize(element)},realOffset:Element.Methods.cumulativeScrollOffset,offsetParent:Element.Methods.getOffsetParent,page:Element.Methods.viewportOffset,clone:function(source,target,options){options=options||{};return Element.clonePosition(target,source,options)}};if(!document.getElementsByClassName){document.getElementsByClassName=function(instanceMethods){function iter(name){return name.blank()?null:"[contains(concat(' ', @class, ' '), ' "+name+" ')]"}instanceMethods.getElementsByClassName=Prototype.BrowserFeatures.XPath?function(element,className){className=className.toString().strip();var cond=/\s/.test(className)?$w(className).map(iter).join(""):iter(className);return cond?document._getElementsByXPath(".//*"+cond,element):[]}:function(element,className){className=className.toString().strip();var elements=[],classNames=(/\s/.test(className)?$w(className):null);if(!classNames&&!className){return elements}var nodes=$(element).getElementsByTagName("*");className=" "+className+" ";for(var i=0,child,cn;child=nodes[i];i++){if(child.className&&(cn=" "+child.className+" ")&&(cn.include(className)||(classNames&&classNames.all(function(name){return !name.toString().blank()&&cn.include(" "+name+" ")})))){elements.push(Element.extend(child))}}return elements};return function(className,parentElement){return $(parentElement||document.body).getElementsByClassName(className)}}(Element.Methods)}Element.ClassNames=Class.create();Element.ClassNames.prototype={initialize:function(element){this.element=$(element)},_each:function(iterator){this.element.className.split(/\s+/).select(function(name){return name.length>0})._each(iterator)},set:function(className){this.element.className=className},add:function(classNameToAdd){if(this.include(classNameToAdd)){return}this.set($A(this).concat(classNameToAdd).join(" "))},remove:function(classNameToRemove){if(!this.include(classNameToRemove)){return}this.set($A(this).without(classNameToRemove).join(" "))},toString:function(){return $A(this).join(" ")}};Object.extend(Element.ClassNames.prototype,Enumerable);(function(){window.Selector=Class.create({initialize:function(expression){this.expression=expression.strip()},findElements:function(rootElement){return Prototype.Selector.select(this.expression,rootElement)},match:function(element){return Prototype.Selector.match(element,this.expression)},toString:function(){return this.expression},inspect:function(){return"#<Selector: "+this.expression+">"}});Object.extend(Selector,{matchElements:function(elements,expression){var match=Prototype.Selector.match,results=[];for(var i=0,length=elements.length;i<length;i++){var element=elements[i];if(match(element,expression)){results.push(Element.extend(element))}}return results},findElement:function(elements,expression,index){index=index||0;var matchIndex=0,element;for(var i=0,length=elements.length;i<length;i++){element=elements[i];if(Prototype.Selector.match(element,expression)&&index===matchIndex++){return Element.extend(element)}}},findChildElements:function(element,expressions){var selector=expressions.toArray().join(", ");return Prototype.Selector.select(selector,element||document)}})})();var Window=Class.create();Window.keepMultiModalWindow=false;Window.hasEffectLib=(typeof Effect!="undefined");Window.resizeEffectDuration=0.4;Window.prototype={initialize:function(){var id;var optionIndex=0;if(arguments.length>0){if(typeof arguments[0]=="string"){id=arguments[0];optionIndex=1}else{id=arguments[0]?arguments[0].id:null}}if(!id){id="window_"+new Date().getTime()}if($(id)){alert("Window "+id+" is already registered in the DOM! Make sure you use setDestroyOnClose() or destroyOnClose: true in the constructor")}this.options=Object.extend({className:"dialog",windowClassName:null,blurClassName:null,minWidth:100,minHeight:20,resizable:true,closable:true,minimizable:true,maximizable:true,draggable:true,userData:null,showEffect:(Window.hasEffectLib?Effect.Appear:Element.show),hideEffect:(Window.hasEffectLib?Effect.Fade:Element.hide),showEffectOptions:{},hideEffectOptions:{},effectOptions:null,parent:document.body,title:" ",url:null,onload:Prototype.emptyFunction,width:200,height:300,opacity:1,recenterAuto:true,wiredDrag:false,closeOnEsc:true,closeCallback:null,destroyOnClose:false,gridX:1,gridY:1},arguments[optionIndex]||{});if(this.options.blurClassName){this.options.focusClassName=this.options.className}if(typeof this.options.top=="undefined"&&typeof this.options.bottom=="undefined"){this.options.top=this._round(Math.random()*500,this.options.gridY)}if(typeof this.options.left=="undefined"&&typeof this.options.right=="undefined"){this.options.left=this._round(Math.random()*500,this.options.gridX)}if(this.options.effectOptions){Object.extend(this.options.hideEffectOptions,this.options.effectOptions);Object.extend(this.options.showEffectOptions,this.options.effectOptions);if(this.options.showEffect==Element.Appear){this.options.showEffectOptions.to=this.options.opacity}}if(Window.hasEffectLib){if(this.options.showEffect==Effect.Appear){this.options.showEffectOptions.to=this.options.opacity}if(this.options.hideEffect==Effect.Fade){this.options.hideEffectOptions.from=this.options.opacity}}if(this.options.hideEffect==Element.hide){this.options.hideEffect=function(){Element.hide(this.element);if(this.options.destroyOnClose){this.destroy()}}.bind(this)}if(this.options.parent!=document.body){this.options.parent=$(this.options.parent)}this.element=this._createWindow(id);this.element.win=this;this.eventMouseDown=this._initDrag.bindAsEventListener(this);this.eventMouseUp=this._endDrag.bindAsEventListener(this);this.eventMouseMove=this._updateDrag.bindAsEventListener(this);this.eventOnLoad=this._getWindowBorderSize.bindAsEventListener(this);this.eventMouseDownContent=this.toFront.bindAsEventListener(this);this.eventResize=this._recenter.bindAsEventListener(this);this.eventKeyUp=this._keyUp.bindAsEventListener(this);this.topbar=$(this.element.id+"_top");this.bottombar=$(this.element.id+"_bottom");this.content=$(this.element.id+"_content");Event.observe(this.topbar,"mousedown",this.eventMouseDown);Event.observe(this.bottombar,"mousedown",this.eventMouseDown);Event.observe(this.content,"mousedown",this.eventMouseDownContent);Event.observe(window,"load",this.eventOnLoad);Event.observe(window,"resize",this.eventResize);Event.observe(window,"scroll",this.eventResize);Event.observe(document,"keyup",this.eventKeyUp);Event.observe(this.options.parent,"scroll",this.eventResize);if(this.options.draggable){var that=this;[this.topbar,this.topbar.up().previous(),this.topbar.up().next()].each(function(element){element.observe("mousedown",that.eventMouseDown);element.addClassName("top_draggable")});[this.bottombar.up(),this.bottombar.up().previous(),this.bottombar.up().next()].each(function(element){element.observe("mousedown",that.eventMouseDown);element.addClassName("bottom_draggable")})}if(this.options.resizable){this.sizer=$(this.element.id+"_sizer");Event.observe(this.sizer,"mousedown",this.eventMouseDown)}this.useLeft=null;this.useTop=null;if(typeof this.options.left!="undefined"){this.element.setStyle({left:parseFloat(this.options.left)+"px"});this.useLeft=true}else{this.element.setStyle({right:parseFloat(this.options.right)+"px"});this.useLeft=false}if(typeof this.options.top!="undefined"){this.element.setStyle({top:parseFloat(this.options.top)+"px"});this.useTop=true}else{this.element.setStyle({bottom:parseFloat(this.options.bottom)+"px"});this.useTop=false}this.storedLocation=null;this.setOpacity(this.options.opacity);if(this.options.zIndex){this.setZIndex(this.options.zIndex)}else{this.setZIndex(this.getMaxZIndex())}if(this.options.destroyOnClose){this.setDestroyOnClose(true)}this._getWindowBorderSize();this.width=this.options.width;this.height=this.options.height;this.visible=false;this.constraint=false;this.constraintPad={top:0,left:0,bottom:0,right:0};if(this.width&&this.height){this.setSize(this.options.width,this.options.height)}this.setTitle(this.options.title);Windows.register(this)},getMaxZIndex:function(){var max=0,i;var cn=document.body.childNodes;for(i=0;i<cn.length;i++){var el=cn[i];var zIndex=el.nodeType==1?parseInt(el.style.zIndex,10)||0:0;if(zIndex<10000){max=Math.max(max,zIndex)}}return max+10},destroy:function(){this._notify("onDestroy");Event.stopObserving(this.topbar,"mousedown",this.eventMouseDown);Event.stopObserving(this.bottombar,"mousedown",this.eventMouseDown);Event.stopObserving(this.content,"mousedown",this.eventMouseDownContent);Event.stopObserving(window,"load",this.eventOnLoad);Event.stopObserving(window,"resize",this.eventResize);Event.stopObserving(window,"scroll",this.eventResize);Event.stopObserving(this.content,"load",this.options.onload);Event.stopObserving(document,"keyup",this.eventKeyUp);if(this._oldParent){var content=this.getContent();var originalContent=null;for(var i=0;i<content.childNodes.length;i++){originalContent=content.childNodes[i];if(originalContent.nodeType==1){break}originalContent=null}if(originalContent){this._oldParent.appendChild(originalContent)}this._oldParent=null}if(this.sizer){Event.stopObserving(this.sizer,"mousedown",this.eventMouseDown)}if(this.options.url){this.content.src=null}if(this.iefix){Element.remove(this.iefix)}Element.remove(this.element);Windows.unregister(this)},setCloseCallback:function(callback){this.options.closeCallback=callback},getContent:function(){return this.content},setContent:function(id,autoresize,autoposition){var element=$(id);if(null==element){throw"Unable to find element '"+id+"' in DOM"}this._oldParent=element.parentNode;var d=null;var p=null;if(autoresize){d=Element.getDimensions(element)}if(autoposition){p=Position.cumulativeOffset(element)}var content=this.getContent();this.setHTMLContent("");content=this.getContent();content.appendChild(element);element.show();if(autoresize){this.setSize(d.width,d.height)}if(autoposition){this.setLocation(p[1]-this.heightN,p[0]-this.widthW)}},setHTMLContent:function(html){if(this.options.url){this.content.src=null;this.options.url=null;var content='<div id="'+this.getId()+'_content" class="'+this.options.className+'_content"> </div>';$(this.getId()+"_table_content").innerHTML=content;this.content=$(this.element.id+"_content")}this.getContent().innerHTML=html},setAjaxContent:function(url,options,showCentered,showModal){this.showFunction=showCentered?"showCenter":"show";this.showModal=showModal||false;options=options||{};this.setHTMLContent("");this.onComplete=options.onComplete;if(!this._onCompleteHandler){this._onCompleteHandler=this._setAjaxContent.bind(this)}options.onComplete=this._onCompleteHandler;new Ajax.Request(url,options);options.onComplete=this.onComplete},_setAjaxContent:function(originalRequest){Element.update(this.getContent(),originalRequest.responseText);if(this.onComplete){this.onComplete(originalRequest)}this.onComplete=null;this[this.showFunction](this.showModal)},setURL:function(url){if(this.options.url){this.content.src=null}this.options.url=url;var content="<iframe frameborder='0' name='"+this.getId()+"_content' id='"+this.getId()+"_content' src='"+url+"' width='"+this.width+"' height='"+this.height+"'> </iframe>";$(this.getId()+"_table_content").innerHTML=content;this.content=$(this.element.id+"_content")},getURL:function(){return this.options.url?this.options.url:null},refresh:function(){if(this.options.url){$(this.element.getAttribute("id")+"_content").src=this.options.url}},setCookie:function(name,expires,path,domain,secure){name=name||this.element.id;this.cookie=[name,expires,path,domain,secure];var value=WindowUtilities.getCookie(name);if(value){var values=value.split(",");var x=values[0].split(":");var y=values[1].split(":");var w=parseFloat(values[2]),h=parseFloat(values[3]);var mini=values[4];var maxi=values[5];this.setSize(w,h);if(mini=="true"){this.doMinimize=true}else{if(maxi=="true"){this.doMaximize=true}}this.useLeft=x[0]=="l";this.useTop=y[0]=="t";this.element.setStyle(this.useLeft?{left:x[1]}:{right:x[1]});this.element.setStyle(this.useTop?{top:y[1]}:{bottom:y[1]})}},getId:function(){return this.element.id},setDestroyOnClose:function(){this.options.destroyOnClose=true},setConstraint:function(bool,padding){this.constraint=bool;this.constraintPad=Object.extend(this.constraintPad,padding||{});if(this.useTop&&this.useLeft){this.setLocation(parseFloat(this.element.style.top),parseFloat(this.element.style.left))}},_initDrag:function(event){if(Event.element(event)==this.sizer&&this.isMinimized()){return}if(Event.element(event)!=this.sizer&&this.isMaximized()){return}if(Prototype.Browser.IE&&this.heightN==0){this._getWindowBorderSize()}this.pointer=[this._round(Event.pointerX(event),this.options.gridX),this._round(Event.pointerY(event),this.options.gridY)];if(this.options.wiredDrag){this.currentDrag=this._createWiredElement()}else{this.currentDrag=this.element}if(Event.element(event)==this.sizer){this.doResize=true;this.widthOrg=this.width;this.heightOrg=this.height;this.bottomOrg=parseFloat(this.element.getStyle("bottom"));this.rightOrg=parseFloat(this.element.getStyle("right"));this._notify("onStartResize")}else{this.doResize=false;var closeButton=$(this.getId()+"_close");if(closeButton&&Position.within(closeButton,this.pointer[0],this.pointer[1])){this.currentDrag=null;return}this.toFront();if(!this.options.draggable){return}this._notify("onStartMove")}Event.observe(document,"mouseup",this.eventMouseUp,false);Event.observe(document,"mousemove",this.eventMouseMove,false);WindowUtilities.disableScreen("__invisible__","__invisible__",this.overlayOpacity);document.body.ondrag=function(){return false};document.body.onselectstart=function(){return false};this.currentDrag.show();Event.stop(event)},_round:function(val,round){return round==1?val:val=Math.floor(val/round)*round},_updateDrag:function(event){var pointer=[this._round(Event.pointerX(event),this.options.gridX),this._round(Event.pointerY(event),this.options.gridY)];var dx=pointer[0]-this.pointer[0];var dy=pointer[1]-this.pointer[1];if(this.doResize){var w=this.widthOrg+dx;var h=this.heightOrg+dy;dx=this.width-this.widthOrg;dy=this.height-this.heightOrg;if(this.useLeft){w=this._updateWidthConstraint(w)}else{this.currentDrag.setStyle({right:(this.rightOrg-dx)+"px"})}if(this.useTop){h=this._updateHeightConstraint(h)}else{this.currentDrag.setStyle({bottom:(this.bottomOrg-dy)+"px"})}this.setSize(w,h);this._notify("onResize")}else{this.pointer=pointer;if(this.useLeft){var left=parseFloat(this.currentDrag.getStyle("left"))+dx;var newLeft=this._updateLeftConstraint(left);this.pointer[0]+=newLeft-left;this.currentDrag.setStyle({left:newLeft+"px"})}else{this.currentDrag.setStyle({right:parseFloat(this.currentDrag.getStyle("right"))-dx+"px"})}if(this.useTop){var top=parseFloat(this.currentDrag.getStyle("top"))+dy;var newTop=this._updateTopConstraint(top);this.pointer[1]+=newTop-top;this.currentDrag.setStyle({top:newTop+"px"})}else{this.currentDrag.setStyle({bottom:parseFloat(this.currentDrag.getStyle("bottom"))-dy+"px"})}this._notify("onMove")}if(this.iefix){this._fixIEOverlapping()}this._removeStoreLocation();Event.stop(event)},_endDrag:function(event){WindowUtilities.enableScreen("__invisible__");if(this.doResize){this._notify("onEndResize")}else{this._notify("onEndMove")}Event.stopObserving(document,"mouseup",this.eventMouseUp,false);Event.stopObserving(document,"mousemove",this.eventMouseMove,false);Event.stop(event);this._hideWiredElement();this._saveCookie();document.body.ondrag=null;document.body.onselectstart=null},_updateLeftConstraint:function(left){if(this.constraint&&this.useLeft&&this.useTop){var width=this.options.parent==document.body?WindowUtilities.getPageSize().windowWidth:this.options.parent.getDimensions().width;if(left<this.constraintPad.left){left=this.constraintPad.left}if(left+this.width+this.widthE+this.widthW>width-this.constraintPad.right){left=width-this.constraintPad.right-this.width-this.widthE-this.widthW}}return left},_updateTopConstraint:function(top){if(this.constraint&&this.useLeft&&this.useTop){var height=this.options.parent==document.body?WindowUtilities.getPageSize().windowHeight:this.options.parent.getDimensions().height;var h=this.height+this.heightN+this.heightS;if(top<this.constraintPad.top){top=this.constraintPad.top}if(top+h>height-this.constraintPad.bottom){top=height-this.constraintPad.bottom-h}}return top},_updateWidthConstraint:function(w){if(this.constraint&&this.useLeft&&this.useTop){var width=this.options.parent==document.body?WindowUtilities.getPageSize().windowWidth:this.options.parent.getDimensions().width;var left=parseFloat(this.element.getStyle("left"));if(left+w+this.widthE+this.widthW>width-this.constraintPad.right){w=width-this.constraintPad.right-left-this.widthE-this.widthW}}return w},_updateHeightConstraint:function(h){if(this.constraint&&this.useLeft&&this.useTop){var height=this.options.parent==document.body?WindowUtilities.getPageSize().windowHeight:this.options.parent.getDimensions().height;var top=parseFloat(this.element.getStyle("top"));if(top+h+this.heightN+this.heightS>height-this.constraintPad.bottom){h=height-this.constraintPad.bottom-top-this.heightN-this.heightS}}return h},_createWindow:function(id){var className=this.options.className;var win=document.createElement("div");win.setAttribute("id",id);win.className="dialog";if(this.options.windowClassName){win.className+=" "+this.options.windowClassName}var content;if(this.options.url){content='<iframe frameborder="0" name="'+id+'_content" id="'+id+'_content" src="'+this.options.url+'"> </iframe>'}else{content='<div id="'+id+'_content" class="'+className+'_content"> </div>'}var closeDiv=this.options.closable?"<div class='"+className+"_close' id='"+id+"_close' onclick='Windows.close(\""+id+"\", event)'> </div>":"";var minDiv=this.options.minimizable?"<div class='"+className+"_minimize' id='"+id+"_minimize' onclick='Windows.minimize(\""+id+"\", event)'> </div>":"";var maxDiv=this.options.maximizable?"<div class='"+className+"_maximize' id='"+id+"_maximize' onclick='Windows.maximize(\""+id+"\", event)'> </div>":"";var seAttributes=this.options.resizable?"class='"+className+"_sizer' id='"+id+"_sizer'":"class='"+className+"_se'";var blank="../themes/default/blank.gif";win.innerHTML=closeDiv+minDiv+maxDiv+" <a href='#' id='"+id+"_focus_anchor'><!-- --></a> <table id='"+id+"_row1' class=\"top table_window\"> <tr> <td class='"+className+"_nw'></td> <td class='"+className+"_n'><div id='"+id+"_top' class='"+className+"_title title_window'>"+this.options.title+"</div></td> <td class='"+className+"_ne'></td> </tr> </table> <table id='"+id+"_row2' class=\"mid table_window\"> <tr> <td class='"+className+"_w'></td> <td id='"+id+"_table_content' class='"+className+"_content' valign='top'>"+content+"</td> <td class='"+className+"_e'></td> </tr> </table> <table id='"+id+"_row3' class=\"bot table_window\"> <tr> <td class='"+className+"_sw'></td> <td class='"+className+"_s'><div id='"+id+"_bottom' class='status_bar'><span style='float:left; width:1px; height:1px'></span></div></td> <td "+seAttributes+"></td> </tr> </table> ";Element.hide(win);this.options.parent.insertBefore(win,this.options.parent.firstChild);Event.observe($(id+"_content"),"load",this.options.onload);return win},changeClassName:function(newClassName){var className=this.options.className;var id=this.getId();$A(["_close","_minimize","_maximize","_sizer","_content"]).each(function(value){this._toggleClassName($(id+value),className+value,newClassName+value)}.bind(this));this._toggleClassName($(id+"_top"),className+"_title",newClassName+"_title");$$("#"+id+" td").each(function(td){td.className=td.className.sub(className,newClassName)});this.options.className=newClassName},_toggleClassName:function(element,oldClassName,newClassName){if(element){element.removeClassName(oldClassName);element.addClassName(newClassName)}},setLocation:function(top,left){top=this._updateTopConstraint(top);left=this._updateLeftConstraint(left);var e=this.currentDrag||this.element;e.setStyle({top:top+"px"});e.setStyle({left:left+"px"});this.useLeft=true;this.useTop=true},getLocation:function(){var location={};if(this.useTop){location=Object.extend(location,{top:this.element.getStyle("top")})}else{location=Object.extend(location,{bottom:this.element.getStyle("bottom")})}if(this.useLeft){location=Object.extend(location,{left:this.element.getStyle("left")})}else{location=Object.extend(location,{right:this.element.getStyle("right")})}return location},getSize:function(){return{width:this.width,height:this.height}},setSize:function(width,height,useEffect){width=parseFloat(width);height=parseFloat(height);if(!this.minimized&&width<this.options.minWidth){width=this.options.minWidth}if(!this.minimized&&height<this.options.minHeight){height=this.options.minHeight}if(this.options.maxHeight&&height>this.options.maxHeight){height=this.options.maxHeight}if(this.options.maxWidth&&width>this.options.maxWidth){width=this.options.maxWidth}if(this.useTop&&this.useLeft&&Window.hasEffectLib&&Effect.ResizeWindow&&useEffect){new Effect.ResizeWindow(this,null,null,width,height,{duration:Window.resizeEffectDuration})}else{this.width=width;this.height=height;var e=this.currentDrag?this.currentDrag:this.element;e.setStyle({width:width+this.widthW+this.widthE+"px"});e.setStyle({height:height+this.heightN+this.heightS+"px"});if(!this.currentDrag||this.currentDrag==this.element){var content=$(this.element.id+"_content");content.setStyle({height:height+"px"});content.setStyle({width:width+"px"})}}},updateHeight:function(){this.setSize(this.width,this.content.scrollHeight,true)},updateWidth:function(){this.setSize(this.content.scrollWidth,this.height,true)},toFront:function(){if(this.element.style.zIndex<Windows.maxZIndex){this.setZIndex(Windows.maxZIndex+1)}if(this.iefix){this._fixIEOverlapping()}},getBounds:function(insideOnly){if(!this.width||!this.height||!this.visible){this.computeBounds()}var w=this.width;var h=this.height;if(!insideOnly){w+=this.widthW+this.widthE;h+=this.heightN+this.heightS}var bounds=Object.extend(this.getLocation(),{width:w+"px",height:h+"px"});return bounds},computeBounds:function(){if(!this.width||!this.height){var size=WindowUtilities._computeSize(this.content.innerHTML,this.content.id,this.width,this.height,0,this.options.className);if(this.height){this.width=size+5}else{this.height=size+5}}this.setSize(this.width,this.height);if(this.centered){this._center(this.centerTop,this.centerLeft)}},show:function(modal){this.visible=true;if(modal){if(typeof this.overlayOpacity=="undefined"){var that=this;setTimeout(function(){that.show(modal)},10);return}Windows.addModalWindow(this);this.modal=true;this.setZIndex(Windows.maxZIndex+1);Windows.unsetOverflow(this)}else{if(!this.element.style.zIndex){this.setZIndex(Windows.maxZIndex+1)}}if(this.oldStyle){this.getContent().setStyle({overflow:this.oldStyle})}this.computeBounds();this._notify("onBeforeShow");if(this.options.showEffect!=Element.show&&this.options.showEffectOptions){this.options.showEffect(this.element,this.options.showEffectOptions)}else{this.options.showEffect(this.element)}this._checkIEOverlapping();WindowUtilities.focusedWindow=this;this._notify("onShow");$(this.element.id+"_focus_anchor").focus()},showCenter:function(modal,top,left){this.centered=true;this.centerTop=top;this.centerLeft=left;this.show(modal)},isVisible:function(){return this.visible},_center:function(top,left){var windowScroll=WindowUtilities.getWindowScroll(this.options.parent);var pageSize=WindowUtilities.getPageSize(this.options.parent);if(typeof top=="undefined"){top=(pageSize.windowHeight-(this.height+this.heightN+this.heightS))/2}top+=windowScroll.top;if(typeof left=="undefined"){left=(pageSize.windowWidth-(this.width+this.widthW+this.widthE))/2}left+=windowScroll.left;this.setLocation(top,left);this.toFront()},_recenter:function(event){if(this.centered){var pageSize=WindowUtilities.getPageSize(this.options.parent);var windowScroll=WindowUtilities.getWindowScroll(this.options.parent);if(this.pageSize&&this.pageSize.windowWidth==pageSize.windowWidth&&this.pageSize.windowHeight==pageSize.windowHeight&&this.windowScroll.left==windowScroll.left&&this.windowScroll.top==windowScroll.top){return}this.pageSize=pageSize;this.windowScroll=windowScroll;if($("overlay_modal")){$("overlay_modal").setStyle({height:(pageSize.pageHeight+"px")})}if(this.options.recenterAuto){this._center(this.centerTop,this.centerLeft)}}},hide:function(){this.visible=false;if(this.modal){Windows.removeModalWindow(this);Windows.resetOverflow()}this.oldStyle=this.getContent().getStyle("overflow")||"auto";this.getContent().setStyle({overflow:"hidden"});this.options.hideEffect(this.element,this.options.hideEffectOptions);if(this.iefix){this.iefix.hide()}if(!this.doNotNotifyHide){this._notify("onHide")}},close:function(){if(this.visible){if(this.options.closeCallback&&!this.options.closeCallback(this)){return}if(this.options.destroyOnClose){var destroyFunc=this.destroy.bind(this);if(this.options.hideEffectOptions.afterFinish){var func=this.options.hideEffectOptions.afterFinish;this.options.hideEffectOptions.afterFinish=function(){func();destroyFunc()}}else{this.options.hideEffectOptions.afterFinish=function(){destroyFunc()}}}Windows.updateFocusedWindow();this.doNotNotifyHide=true;this.hide();this.doNotNotifyHide=false;this._notify("onClose")}},minimize:function(){if(this.resizing){return}var r2=$(this.getId()+"_row2");if(!this.minimized){this.minimized=true;var dh=r2.getDimensions().height;this.r2Height=dh;var h=this.element.getHeight()-dh;if(this.useLeft&&this.useTop&&Window.hasEffectLib&&Effect.ResizeWindow){new Effect.ResizeWindow(this,null,null,null,this.height-dh,{duration:Window.resizeEffectDuration})}else{this.height-=dh;this.element.setStyle({height:h+"px"});r2.hide()}if(!this.useTop){var bottom=parseFloat(this.element.getStyle("bottom"));this.element.setStyle({bottom:(bottom+dh)+"px"})}}else{this.minimized=false;var dh=this.r2Height;this.r2Height=null;if(this.useLeft&&this.useTop&&Window.hasEffectLib&&Effect.ResizeWindow){new Effect.ResizeWindow(this,null,null,null,this.height+dh,{duration:Window.resizeEffectDuration})}else{var h=this.element.getHeight()+dh;this.height+=dh;this.element.setStyle({height:h+"px"});r2.show()}if(!this.useTop){var bottom=parseFloat(this.element.getStyle("bottom"));this.element.setStyle({bottom:(bottom-dh)+"px"})}this.toFront()}this._notify("onMinimize");this._saveCookie()},maximize:function(){if(this.isMinimized()||this.resizing){return}if(Prototype.Browser.IE&&this.heightN==0){this._getWindowBorderSize()}if(this.storedLocation!=null){this._restoreLocation();if(this.iefix){this.iefix.hide()}}else{this._storeLocation();Windows.unsetOverflow(this);var windowScroll=WindowUtilities.getWindowScroll(this.options.parent);var pageSize=WindowUtilities.getPageSize(this.options.parent);var left=windowScroll.left;var top=windowScroll.top;if(this.options.parent!=document.body){windowScroll={top:0,left:0,bottom:0,right:0};var dim=this.options.parent.getDimensions();pageSize.windowWidth=dim.width;pageSize.windowHeight=dim.height;top=0;left=0}if(this.constraint){pageSize.windowWidth-=Math.max(0,this.constraintPad.left)+Math.max(0,this.constraintPad.right);pageSize.windowHeight-=Math.max(0,this.constraintPad.top)+Math.max(0,this.constraintPad.bottom);left+=Math.max(0,this.constraintPad.left);top+=Math.max(0,this.constraintPad.top)}var width=pageSize.windowWidth-this.widthW-this.widthE;var height=pageSize.windowHeight-this.heightN-this.heightS;if(this.useLeft&&this.useTop&&Window.hasEffectLib&&Effect.ResizeWindow){new Effect.ResizeWindow(this,top,left,width,height,{duration:Window.resizeEffectDuration})}else{this.setSize(width,height);this.element.setStyle(this.useLeft?{left:left}:{right:left});this.element.setStyle(this.useTop?{top:top}:{bottom:top})}this.toFront();if(this.iefix){this._fixIEOverlapping()}}this._notify("onMaximize");this._saveCookie()},isMinimized:function(){return this.minimized},isMaximized:function(){return(this.storedLocation!=null)},setOpacity:function(opacity){if(Element.setOpacity){Element.setOpacity(this.element,opacity)}},setZIndex:function(zindex){this.element.setStyle({zIndex:zindex});Windows.updateZindex(zindex,this)},setTitle:function(newTitle){if(!newTitle||newTitle==""){newTitle=" "}Element.update(this.element.id+"_top",newTitle)},getTitle:function(){return $(this.element.id+"_top").innerHTML},setStatusBar:function(element){var statusBar=$(this.getId()+"_bottom");if(typeof(element)=="object"){if(this.bottombar.firstChild){this.bottombar.replaceChild(element,this.bottombar.firstChild)}else{this.bottombar.appendChild(element)}}else{this.bottombar.innerHTML=element}},_checkIEOverlapping:function(){if(!this.iefix&&(navigator.appVersion.indexOf("MSIE")>0)&&(navigator.userAgent.indexOf("Opera")<0)&&(this.element.getStyle("position")=="absolute")){new Insertion.After(this.element.id,'<iframe id="'+this.element.id+'_iefix" style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" src="javascript:false;" frameborder="0" scrolling="no"></iframe>');this.iefix=$(this.element.id+"_iefix")}if(this.iefix){setTimeout(this._fixIEOverlapping.bind(this),50)}},_fixIEOverlapping:function(){Position.clone(this.element,this.iefix);this.iefix.style.zIndex=this.element.style.zIndex-1;this.iefix.show()},_keyUp:function(event){if(27==event.keyCode&&this.options.closeOnEsc){this.close()}},_getWindowBorderSize:function(event){var div=this._createHiddenDiv(this.options.className+"_n");this.heightN=Element.getDimensions(div).height;div.parentNode.removeChild(div);var div=this._createHiddenDiv(this.options.className+"_s");this.heightS=Element.getDimensions(div).height;div.parentNode.removeChild(div);var div=this._createHiddenDiv(this.options.className+"_e");this.widthE=Element.getDimensions(div).width;div.parentNode.removeChild(div);var div=this._createHiddenDiv(this.options.className+"_w");this.widthW=Element.getDimensions(div).width;div.parentNode.removeChild(div);var div=document.createElement("div");div.className="overlay_"+this.options.className;document.body.appendChild(div);var that=this;setTimeout(function(){that.overlayOpacity=($(div).getStyle("opacity"));div.parentNode.removeChild(div)},10);if(Prototype.Browser.IE){this.heightS=$(this.getId()+"_row3").getDimensions().height;this.heightN=$(this.getId()+"_row1").getDimensions().height}if(Prototype.Browser.WebKit&&Prototype.Browser.WebKitVersion<420){this.setSize(this.width,this.height)}if(this.doMaximize){this.maximize()}if(this.doMinimize){this.minimize()}},_createHiddenDiv:function(className){var objBody=document.body;var win=document.createElement("div");win.setAttribute("id",this.element.id+"_tmp");win.className=className;win.style.display="none";win.innerHTML="";objBody.insertBefore(win,objBody.firstChild);return win},_storeLocation:function(){if(this.storedLocation==null){this.storedLocation={useTop:this.useTop,useLeft:this.useLeft,top:this.element.getStyle("top"),bottom:this.element.getStyle("bottom"),left:this.element.getStyle("left"),right:this.element.getStyle("right"),width:this.width,height:this.height}}},_restoreLocation:function(){if(this.storedLocation!=null){this.useLeft=this.storedLocation.useLeft;this.useTop=this.storedLocation.useTop;if(this.useLeft&&this.useTop&&Window.hasEffectLib&&Effect.ResizeWindow){new Effect.ResizeWindow(this,this.storedLocation.top,this.storedLocation.left,this.storedLocation.width,this.storedLocation.height,{duration:Window.resizeEffectDuration})}else{this.element.setStyle(this.useLeft?{left:this.storedLocation.left}:{right:this.storedLocation.right});this.element.setStyle(this.useTop?{top:this.storedLocation.top}:{bottom:this.storedLocation.bottom});this.setSize(this.storedLocation.width,this.storedLocation.height)}Windows.resetOverflow();this._removeStoreLocation()}},_removeStoreLocation:function(){this.storedLocation=null},_saveCookie:function(){if(this.cookie){var value="";if(this.useLeft){value+="l:"+(this.storedLocation?this.storedLocation.left:this.element.getStyle("left"))}else{value+="r:"+(this.storedLocation?this.storedLocation.right:this.element.getStyle("right"))}if(this.useTop){value+=",t:"+(this.storedLocation?this.storedLocation.top:this.element.getStyle("top"))}else{value+=",b:"+(this.storedLocation?this.storedLocation.bottom:this.element.getStyle("bottom"))}value+=","+(this.storedLocation?this.storedLocation.width:this.width);value+=","+(this.storedLocation?this.storedLocation.height:this.height);value+=","+this.isMinimized();value+=","+this.isMaximized();WindowUtilities.setCookie(value,this.cookie)}},_createWiredElement:function(){if(!this.wiredElement){if(Prototype.Browser.IE){this._getWindowBorderSize()}var div=document.createElement("div");div.className="wired_frame "+this.options.className+"_wired_frame";div.style.position="absolute";this.options.parent.insertBefore(div,this.options.parent.firstChild);this.wiredElement=$(div)}if(this.useLeft){this.wiredElement.setStyle({left:this.element.getStyle("left")})}else{this.wiredElement.setStyle({right:this.element.getStyle("right")})}if(this.useTop){this.wiredElement.setStyle({top:this.element.getStyle("top")})}else{this.wiredElement.setStyle({bottom:this.element.getStyle("bottom")})}var dim=this.element.getDimensions();this.wiredElement.setStyle({width:dim.width+"px",height:dim.height+"px"});this.wiredElement.setStyle({zIndex:Windows.maxZIndex+30});return this.wiredElement},_hideWiredElement:function(){if(!this.wiredElement||!this.currentDrag){return}if(this.currentDrag==this.element){this.currentDrag=null}else{if(this.useLeft){this.element.setStyle({left:this.currentDrag.getStyle("left")})}else{this.element.setStyle({right:this.currentDrag.getStyle("right")})}if(this.useTop){this.element.setStyle({top:this.currentDrag.getStyle("top")})}else{this.element.setStyle({bottom:this.currentDrag.getStyle("bottom")})}this.currentDrag.hide();this.currentDrag=null;if(this.doResize){this.setSize(this.width,this.height)}}},_notify:function(eventName){if(this.options[eventName]){this.options[eventName](this)}else{Windows.notify(eventName,this)}}};var Windows={windows:[],modalWindows:[],observers:[],focusedWindow:null,maxZIndex:0,overlayShowEffectOptions:{duration:0.5},overlayHideEffectOptions:{duration:0.5},addObserver:function(observer){this.removeObserver(observer);this.observers.push(observer)},removeObserver:function(observer){this.observers=this.observers.reject(function(o){return o==observer})},notify:function(eventName,win){this.observers.each(function(o){if(o[eventName]){o[eventName](eventName,win)}})},getWindow:function(id){return this.windows.detect(function(d){return d.getId()==id})},getFocusedWindow:function(){return this.focusedWindow},updateFocusedWindow:function(){this.focusedWindow=this.windows.length>=2?this.windows[this.windows.length-2]:null},register:function(win){this.windows.push(win)},addModalWindow:function(win){if(this.modalWindows.length==0){WindowUtilities.disableScreen(win.options.className,"overlay_modal",win.overlayOpacity,win.getId(),win.options.parent)}else{if(Window.keepMultiModalWindow){$("overlay_modal").style.zIndex=Windows.maxZIndex+1;Windows.maxZIndex+=1;WindowUtilities._hideSelect(this.modalWindows.last().getId())}else{this.modalWindows.last().element.hide()}WindowUtilities._showSelect(win.getId())}this.modalWindows.push(win)},removeModalWindow:function(win){this.modalWindows.pop();if(this.modalWindows.length==0){WindowUtilities.enableScreen()}else{if(Window.keepMultiModalWindow){this.modalWindows.last().toFront();WindowUtilities._showSelect(this.modalWindows.last().getId())}else{this.modalWindows.last().element.show()}}},register:function(win){this.windows.push(win)},unregister:function(win){this.windows=this.windows.reject(function(d){return d==win})},closeAll:function(){this.windows.each(function(w){Windows.close(w.getId())})},closeAllModalWindows:function(){WindowUtilities.enableScreen();this.modalWindows.each(function(win){if(win){win.close()}})},minimize:function(id,event){var win=this.getWindow(id);if(win&&win.visible){win.minimize()}Event.stop(event)},maximize:function(id,event){var win=this.getWindow(id);if(win&&win.visible){win.maximize()}Event.stop(event)},close:function(id,event){var win=this.getWindow(id);if(win){win.close()}if(event){Event.stop(event)}},blur:function(id){var win=this.getWindow(id);if(!win){return}if(win.options.blurClassName){win.changeClassName(win.options.blurClassName)}if(this.focusedWindow==win){this.focusedWindow=null}win._notify("onBlur")},focus:function(id){var win=this.getWindow(id);if(!win){return}if(this.focusedWindow){this.blur(this.focusedWindow.getId())}if(win.options.focusClassName){win.changeClassName(win.options.focusClassName)}this.focusedWindow=win;win._notify("onFocus")},unsetOverflow:function(except){this.windows.each(function(d){d.oldOverflow=d.getContent().getStyle("overflow")||"auto";d.getContent().setStyle({overflow:"hidden"})});if(except&&except.oldOverflow){except.getContent().setStyle({overflow:except.oldOverflow})}},resetOverflow:function(){this.windows.each(function(d){if(d.oldOverflow){d.getContent().setStyle({overflow:d.oldOverflow})}})},updateZindex:function(zindex,win){if(zindex>this.maxZIndex){this.maxZIndex=zindex;if(this.focusedWindow){this.blur(this.focusedWindow.getId())}}this.focusedWindow=win;if(this.focusedWindow){this.focus(this.focusedWindow.getId())}}};var Dialog={dialogId:null,onCompleteFunc:null,callFunc:null,parameters:null,confirm:function(content,parameters){if(content&&typeof content!="string"){Dialog._runAjaxRequest(content,parameters,Dialog.confirm);return}content=content||"";parameters=parameters||{};var okLabel=parameters.okLabel?parameters.okLabel:"Ok";var cancelLabel=parameters.cancelLabel?parameters.cancelLabel:"Cancel";parameters=Object.extend(parameters,parameters.windowParameters||{});parameters.windowParameters=parameters.windowParameters||{};parameters.className=parameters.className||"alert";var okButtonClass="class ='"+(parameters.buttonClass?parameters.buttonClass+" ":"")+" ok_button'";var cancelButtonClass="class ='"+(parameters.buttonClass?parameters.buttonClass+" ":"")+" cancel_button'";var content=" <div class='"+parameters.className+"_message'>"+content+"</div> <div class='"+parameters.className+"_buttons'> <button type='button' title='"+okLabel+"' onclick='Dialog.okCallback()' "+okButtonClass+"><span><span><span>"+okLabel+"</span></span></span></button> <button type='button' title='"+cancelLabel+"' onclick='Dialog.cancelCallback()' "+cancelButtonClass+"><span><span><span>"+cancelLabel+"</span></span></span></button> </div> ";return this._openDialog(content,parameters)},alert:function(content,parameters){if(content&&typeof content!="string"){Dialog._runAjaxRequest(content,parameters,Dialog.alert);return}content=content||"";parameters=parameters||{};var okLabel=parameters.okLabel?parameters.okLabel:"Ok";parameters=Object.extend(parameters,parameters.windowParameters||{});parameters.windowParameters=parameters.windowParameters||{};parameters.className=parameters.className||"alert";var okButtonClass="class ='"+(parameters.buttonClass?parameters.buttonClass+" ":"")+" ok_button'";var content=" <div class='"+parameters.className+"_message'>"+content+"</div> <div class='"+parameters.className+"_buttons'> <button type='button' title='"+okLabel+"' onclick='Dialog.okCallback()' "+okButtonClass+"><span><span><span>"+okLabel+"</span></span></span></button> </div>";return this._openDialog(content,parameters)},info:function(content,parameters){if(content&&typeof content!="string"){Dialog._runAjaxRequest(content,parameters,Dialog.info);return}content=content||"";parameters=parameters||{};parameters=Object.extend(parameters,parameters.windowParameters||{});parameters.windowParameters=parameters.windowParameters||{};parameters.className=parameters.className||"alert";var content="<div id='modal_dialog_message' class='"+parameters.className+"_message'>"+content+"</div>";if(parameters.showProgress){content+="<div id='modal_dialog_progress' class='"+parameters.className+"_progress'> </div>"}parameters.ok=null;parameters.cancel=null;return this._openDialog(content,parameters)},setInfoMessage:function(message){$("modal_dialog_message").update(message)},closeInfo:function(){Windows.close(this.dialogId)},_openDialog:function(content,parameters){var className=parameters.className;if(!parameters.height&&!parameters.width){parameters.width=WindowUtilities.getPageSize(parameters.options.parent||document.body).pageWidth/2}if(parameters.id){this.dialogId=parameters.id}else{var t=new Date();this.dialogId="modal_dialog_"+t.getTime();parameters.id=this.dialogId}if(!parameters.height||!parameters.width){var size=WindowUtilities._computeSize(content,this.dialogId,parameters.width,parameters.height,5,className);if(parameters.height){parameters.width=size+5}else{parameters.height=size+5}}parameters.effectOptions=parameters.effectOptions;parameters.resizable=parameters.resizable||false;parameters.minimizable=parameters.minimizable||false;parameters.maximizable=parameters.maximizable||false;parameters.draggable=parameters.draggable||false;parameters.closable=parameters.closable||false;var win=new Window(parameters);win.getContent().innerHTML=content;win.showCenter(true,parameters.top,parameters.left);win.setDestroyOnClose();win.cancelCallback=parameters.onCancel||parameters.cancel;win.okCallback=parameters.onOk||parameters.ok;return win},_getAjaxContent:function(originalRequest){Dialog.callFunc(originalRequest.responseText,Dialog.parameters)},_runAjaxRequest:function(message,parameters,callFunc){if(message.options==null){message.options={}}Dialog.onCompleteFunc=message.options.onComplete;Dialog.parameters=parameters;Dialog.callFunc=callFunc;message.options.onComplete=Dialog._getAjaxContent;new Ajax.Request(message.url,message.options)},okCallback:function(){var win=Windows.focusedWindow;if(!win.okCallback||win.okCallback(win)){$$("#"+win.getId()+" input").each(function(element){element.onclick=null});win.close()}},cancelCallback:function(){var win=Windows.focusedWindow;$$("#"+win.getId()+" input").each(function(element){element.onclick=null});win.close();if(win.cancelCallback){win.cancelCallback(win)}}};if(Prototype.Browser.WebKit){var array=navigator.userAgent.match(new RegExp(/AppleWebKit\/([\d\.\+]*)/));Prototype.Browser.WebKitVersion=parseFloat(array[1])}var WindowUtilities={getWindowScroll:function(parent){var T,L,W,H;parent=parent||document.body;if(parent!=document.body){T=parent.scrollTop;L=parent.scrollLeft;W=parent.scrollWidth;H=parent.scrollHeight}else{var w=window;with(w.document){if(w.document.documentElement&&documentElement.scrollTop){T=documentElement.scrollTop;L=documentElement.scrollLeft}else{if(w.document.body){T=body.scrollTop;L=body.scrollLeft}}if(w.innerWidth){W=w.innerWidth;H=w.innerHeight}else{if(w.document.documentElement&&documentElement.clientWidth){W=documentElement.clientWidth;H=documentElement.clientHeight}else{W=body.offsetWidth;H=body.offsetHeight}}}}return{top:T,left:L,width:W,height:H}},getPageSize:function(parent){parent=parent||document.body;var windowWidth,windowHeight;var pageHeight,pageWidth;if(parent!=document.body){windowWidth=parent.getWidth();windowHeight=parent.getHeight();pageWidth=parent.scrollWidth;pageHeight=parent.scrollHeight}else{var xScroll,yScroll;if(window.innerHeight&&window.scrollMaxY){xScroll=document.body.scrollWidth;yScroll=window.innerHeight+window.scrollMaxY}else{if(document.body.scrollHeight>document.body.offsetHeight){xScroll=document.body.scrollWidth;yScroll=document.body.scrollHeight}else{xScroll=document.body.offsetWidth;yScroll=document.body.offsetHeight}}if(self.innerHeight){windowWidth=document.documentElement.clientWidth;windowHeight=self.innerHeight}else{if(document.documentElement&&document.documentElement.clientHeight){windowWidth=document.documentElement.clientWidth;windowHeight=document.documentElement.clientHeight}else{if(document.body){windowWidth=document.body.clientWidth;windowHeight=document.body.clientHeight}}}if(yScroll<windowHeight){pageHeight=windowHeight}else{pageHeight=yScroll}if(xScroll<windowWidth){pageWidth=windowWidth}else{pageWidth=xScroll}}return{pageWidth:pageWidth,pageHeight:pageHeight,windowWidth:windowWidth,windowHeight:windowHeight}},disableScreen:function(className,overlayId,overlayOpacity,contentId,parent){WindowUtilities.initLightbox(overlayId,className,function(){this._disableScreen(className,overlayId,overlayOpacity,contentId)}.bind(this),parent||document.body)},_disableScreen:function(className,overlayId,overlayOpacity,contentId){var objOverlay=$(overlayId);var pageSize=WindowUtilities.getPageSize(objOverlay.parentNode);if(contentId&&Prototype.Browser.IE){WindowUtilities._hideSelect();WindowUtilities._showSelect(contentId)}objOverlay.style.height=(pageSize.pageHeight+"px");objOverlay.style.display="none";if(overlayId=="overlay_modal"&&Window.hasEffectLib&&Windows.overlayShowEffectOptions){objOverlay.overlayOpacity=overlayOpacity;new Effect.Appear(objOverlay,Object.extend({from:0,to:overlayOpacity},Windows.overlayShowEffectOptions))}else{objOverlay.style.display="block"}},enableScreen:function(id){id=id||"overlay_modal";var objOverlay=$(id);if(objOverlay){if(id=="overlay_modal"&&Window.hasEffectLib&&Windows.overlayHideEffectOptions){new Effect.Fade(objOverlay,Object.extend({from:objOverlay.overlayOpacity,to:0},Windows.overlayHideEffectOptions))}else{objOverlay.style.display="none";objOverlay.parentNode.removeChild(objOverlay)}if(id!="__invisible__"){WindowUtilities._showSelect()}}},_hideSelect:function(id){if(Prototype.Browser.IE){id=id==null?"":"#"+id+" ";$$(id+"select").each(function(element){if(!WindowUtilities.isDefined(element.oldVisibility)){element.oldVisibility=element.style.visibility?element.style.visibility:"visible";element.style.visibility="hidden"}})}},_showSelect:function(id){if(Prototype.Browser.IE){id=id==null?"":"#"+id+" ";$$(id+"select").each(function(element){if(WindowUtilities.isDefined(element.oldVisibility)){try{element.style.visibility=element.oldVisibility}catch(e){element.style.visibility="visible"}element.oldVisibility=null}else{if(element.style.visibility){element.style.visibility="visible"}}})}},isDefined:function(object){return typeof(object)!="undefined"&&object!=null},initLightbox:function(id,className,doneHandler,parent){if($(id)){Element.setStyle(id,{zIndex:Windows.maxZIndex+1});Windows.maxZIndex++;doneHandler()}else{var objOverlay=document.createElement("div");objOverlay.setAttribute("id",id);objOverlay.className="overlay_"+className;objOverlay.style.display="none";objOverlay.style.position="absolute";objOverlay.style.top="0";objOverlay.style.left="0";objOverlay.style.zIndex=Windows.maxZIndex+1;Windows.maxZIndex++;objOverlay.style.width="100%";parent.insertBefore(objOverlay,parent.firstChild);if(Prototype.Browser.WebKit&&id=="overlay_modal"){setTimeout(function(){doneHandler()},10)}else{doneHandler()}}},setCookie:function(value,parameters){document.cookie=parameters[0]+"="+escape(value)+((parameters[1])?"; expires="+parameters[1].toGMTString():"")+((parameters[2])?"; path="+parameters[2]:"")+((parameters[3])?"; domain="+parameters[3]:"")+((parameters[4])?"; secure":"")},getCookie:function(name){var dc=document.cookie;var prefix=name+"=";var begin=dc.indexOf("; "+prefix);if(begin==-1){begin=dc.indexOf(prefix);if(begin!=0){return null}}else{begin+=2}var end=document.cookie.indexOf(";",begin);if(end==-1){end=dc.length}return unescape(dc.substring(begin+prefix.length,end))},_computeSize:function(content,id,width,height,margin,className){var objBody=document.body;var tmpObj=document.createElement("div");tmpObj.setAttribute("id",id);tmpObj.className=className+"_content";if(height){tmpObj.style.height=height+"px"}else{tmpObj.style.width=width+"px"}tmpObj.style.position="absolute";tmpObj.style.top="0";tmpObj.style.left="0";tmpObj.style.display="none";tmpObj.innerHTML=content;objBody.insertBefore(tmpObj,objBody.firstChild);var size;if(height){size=$(tmpObj).getDimensions().width+margin}else{size=$(tmpObj).getDimensions().height+margin}objBody.removeChild(tmpObj);return size}};var Builder={NODEMAP:{AREA:"map",CAPTION:"table",COL:"table",COLGROUP:"table",LEGEND:"fieldset",OPTGROUP:"select",OPTION:"select",PARAM:"object",TBODY:"table",TD:"table",TFOOT:"table",TH:"table",THEAD:"table",TR:"table"},node:function(elementName){elementName=elementName.toUpperCase();var parentTag=this.NODEMAP[elementName]||"div";var parentElement=document.createElement(parentTag);try{parentElement.innerHTML="<"+elementName+"></"+elementName+">"}catch(e){}var element=parentElement.firstChild||null;if(element&&(element.tagName.toUpperCase()!=elementName)){element=element.getElementsByTagName(elementName)[0]}if(!element){element=document.createElement(elementName)}if(!element){return}if(arguments[1]){if(this._isStringOrNumber(arguments[1])||(arguments[1] instanceof Array)||arguments[1].tagName){this._children(element,arguments[1])}else{var attrs=this._attributes(arguments[1]);if(attrs.length){try{parentElement.innerHTML="<"+elementName+" "+attrs+"></"+elementName+">"}catch(e){}element=parentElement.firstChild||null;if(!element){element=document.createElement(elementName);for(attr in arguments[1]){element[attr=="class"?"className":attr]=arguments[1][attr]}}if(element.tagName.toUpperCase()!=elementName){element=parentElement.getElementsByTagName(elementName)[0]}}}}if(arguments[2]){this._children(element,arguments[2])}return $(element)},_text:function(text){return document.createTextNode(text)},ATTR_MAP:{className:"class",htmlFor:"for"},_attributes:function(attributes){var attrs=[];for(attribute in attributes){attrs.push((attribute in this.ATTR_MAP?this.ATTR_MAP[attribute]:attribute)+'="'+attributes[attribute].toString().escapeHTML().gsub(/"/,""")+'"')}return attrs.join(" ")},_children:function(element,children){if(children.tagName){element.appendChild(children);return}if(typeof children=="object"){children.flatten().each(function(e){if(typeof e=="object"){element.appendChild(e)}else{if(Builder._isStringOrNumber(e)){element.appendChild(Builder._text(e))}}})}else{if(Builder._isStringOrNumber(children)){element.appendChild(Builder._text(children))}}},_isStringOrNumber:function(param){return(typeof param=="string"||typeof param=="number")},build:function(html){var element=this.node("div");$(element).update(html.strip());return element.down()},dump:function(scope){if(typeof scope!="object"&&typeof scope!="function"){scope=window}var tags=("A ABBR ACRONYM ADDRESS APPLET AREA B BASE BASEFONT BDO BIG BLOCKQUOTE BODY BR BUTTON CAPTION CENTER CITE CODE COL COLGROUP DD DEL DFN DIR DIV DL DT EM FIELDSET FONT FORM FRAME FRAMESET H1 H2 H3 H4 H5 H6 HEAD HR HTML I IFRAME IMG INPUT INS ISINDEX KBD LABEL LEGEND LI LINK MAP MENU META NOFRAMES NOSCRIPT OBJECT OL OPTGROUP OPTION P PARAM PRE Q S SAMP SCRIPT SELECT SMALL SPAN STRIKE STRONG STYLE SUB SUP TABLE TBODY TD TEXTAREA TFOOT TH THEAD TITLE TR TT U UL VAR").split(/\s+/);tags.each(function(tag){scope[tag]=function(){return Builder.node.apply(Builder,[tag].concat($A(arguments)))}})}};String.prototype.parseColor=function(){var color="#";if(this.slice(0,4)=="rgb("){var cols=this.slice(4,this.length-1).split(",");var i=0;do{color+=parseInt(cols[i]).toColorPart()}while(++i<3)}else{if(this.slice(0,1)=="#"){if(this.length==4){for(var i=1;i<4;i++){color+=(this.charAt(i)+this.charAt(i)).toLowerCase()}}if(this.length==7){color=this.toLowerCase()}}}return(color.length==7?color:(arguments[0]||this))};Element.collectTextNodes=function(element){return $A($(element).childNodes).collect(function(node){return(node.nodeType==3?node.nodeValue:(node.hasChildNodes()?Element.collectTextNodes(node):""))}).flatten().join("")};Element.collectTextNodesIgnoreClass=function(element,className){return $A($(element).childNodes).collect(function(node){return(node.nodeType==3?node.nodeValue:((node.hasChildNodes()&&!Element.hasClassName(node,className))?Element.collectTextNodesIgnoreClass(node,className):""))}).flatten().join("")};Element.setContentZoom=function(element,percent){element=$(element);element.setStyle({fontSize:(percent/100)+"em"});if(Prototype.Browser.WebKit){window.scrollBy(0,0)}return element};Element.getInlineOpacity=function(element){return $(element).style.opacity||""};Element.forceRerendering=function(element){try{element=$(element);var n=document.createTextNode(" ");element.appendChild(n);element.removeChild(n)}catch(e){}};var Effect={_elementDoesNotExistError:{name:"ElementDoesNotExistError",message:"The specified DOM element does not exist, but is required for this effect to operate"},Transitions:{linear:Prototype.K,sinoidal:function(pos){return(-Math.cos(pos*Math.PI)/2)+0.5},reverse:function(pos){return 1-pos},flicker:function(pos){var pos=((-Math.cos(pos*Math.PI)/4)+0.75)+Math.random()/4;return pos>1?1:pos},wobble:function(pos){return(-Math.cos(pos*Math.PI*(9*pos))/2)+0.5},pulse:function(pos,pulses){return(-Math.cos((pos*((pulses||5)-0.5)*2)*Math.PI)/2)+0.5},spring:function(pos){return 1-(Math.cos(pos*4.5*Math.PI)*Math.exp(-pos*6))},none:function(pos){return 0},full:function(pos){return 1}},DefaultOptions:{duration:1,fps:100,sync:false,from:0,to:1,delay:0,queue:"parallel"},tagifyText:function(element){var tagifyStyle="position:relative";if(Prototype.Browser.IE){tagifyStyle+=";zoom:1"}element=$(element);$A(element.childNodes).each(function(child){if(child.nodeType==3){child.nodeValue.toArray().each(function(character){element.insertBefore(new Element("span",{style:tagifyStyle}).update(character==" "?String.fromCharCode(160):character),child)});Element.remove(child)}})},multiple:function(element,effect){var elements;if(((typeof element=="object")||Object.isFunction(element))&&(element.length)){elements=element}else{elements=$(element).childNodes}var options=Object.extend({speed:0.1,delay:0},arguments[2]||{});var masterDelay=options.delay;$A(elements).each(function(element,index){new effect(element,Object.extend(options,{delay:index*options.speed+masterDelay}))})},PAIRS:{slide:["SlideDown","SlideUp"],blind:["BlindDown","BlindUp"],appear:["Appear","Fade"]},toggle:function(element,effect){element=$(element);effect=(effect||"appear").toLowerCase();var options=Object.extend({queue:{position:"end",scope:(element.id||"global"),limit:1}},arguments[2]||{});Effect[element.visible()?Effect.PAIRS[effect][1]:Effect.PAIRS[effect][0]](element,options)}};Effect.DefaultOptions.transition=Effect.Transitions.sinoidal;Effect.ScopedQueue=Class.create(Enumerable,{initialize:function(){this.effects=[];this.interval=null},_each:function(iterator){this.effects._each(iterator)},add:function(effect){var timestamp=new Date().getTime();var position=Object.isString(effect.options.queue)?effect.options.queue:effect.options.queue.position;switch(position){case"front":this.effects.findAll(function(e){return e.state=="idle"}).each(function(e){e.startOn+=effect.finishOn;e.finishOn+=effect.finishOn});break;case"with-last":timestamp=this.effects.pluck("startOn").max()||timestamp;break;case"end":timestamp=this.effects.pluck("finishOn").max()||timestamp;break}effect.startOn+=timestamp;effect.finishOn+=timestamp;if(!effect.options.queue.limit||(this.effects.length<effect.options.queue.limit)){this.effects.push(effect)}if(!this.interval){this.interval=setInterval(this.loop.bind(this),15)}},remove:function(effect){this.effects=this.effects.reject(function(e){return e==effect});if(this.effects.length==0){clearInterval(this.interval);this.interval=null}},loop:function(){var timePos=new Date().getTime();for(var i=0,len=this.effects.length;i<len;i++){this.effects[i]&&this.effects[i].loop(timePos)}}});Effect.Queues={instances:$H(),get:function(queueName){if(!Object.isString(queueName)){return queueName}return this.instances.get(queueName)||this.instances.set(queueName,new Effect.ScopedQueue())}};Effect.Queue=Effect.Queues.get("global");Effect.Base=Class.create({position:null,start:function(options){function codeForEvent(options,eventName){return((options[eventName+"Internal"]?"this.options."+eventName+"Internal(this);":"")+(options[eventName]?"this.options."+eventName+"(this);":""))}if(options&&options.transition===false){options.transition=Effect.Transitions.linear}this.options=Object.extend(Object.extend({},Effect.DefaultOptions),options||{});this.currentFrame=0;this.state="idle";this.startOn=this.options.delay*1000;this.finishOn=this.startOn+(this.options.duration*1000);this.fromToDelta=this.options.to-this.options.from;this.totalTime=this.finishOn-this.startOn;this.totalFrames=this.options.fps*this.options.duration;this.render=(function(){function dispatch(effect,eventName){if(effect.options[eventName+"Internal"]){effect.options[eventName+"Internal"](effect)}if(effect.options[eventName]){effect.options[eventName](effect)}}return function(pos){if(this.state==="idle"){this.state="running";dispatch(this,"beforeSetup");if(this.setup){this.setup()}dispatch(this,"afterSetup")}if(this.state==="running"){pos=(this.options.transition(pos)*this.fromToDelta)+this.options.from;this.position=pos;dispatch(this,"beforeUpdate");if(this.update){this.update(pos)}dispatch(this,"afterUpdate")}}})();this.event("beforeStart");if(!this.options.sync){Effect.Queues.get(Object.isString(this.options.queue)?"global":this.options.queue.scope).add(this)}},loop:function(timePos){if(timePos>=this.startOn){if(timePos>=this.finishOn){this.render(1);this.cancel();this.event("beforeFinish");if(this.finish){this.finish()}this.event("afterFinish");return}var pos=(timePos-this.startOn)/this.totalTime,frame=(pos*this.totalFrames).round();if(frame>this.currentFrame){this.render(pos);this.currentFrame=frame}}},cancel:function(){if(!this.options.sync){Effect.Queues.get(Object.isString(this.options.queue)?"global":this.options.queue.scope).remove(this)}this.state="finished"},event:function(eventName){if(this.options[eventName+"Internal"]){this.options[eventName+"Internal"](this)}if(this.options[eventName]){this.options[eventName](this)}},inspect:function(){var data=$H();for(property in this){if(!Object.isFunction(this[property])){data.set(property,this[property])}}return"#<Effect:"+data.inspect()+",options:"+$H(this.options).inspect()+">"}});Effect.Parallel=Class.create(Effect.Base,{initialize:function(effects){this.effects=effects||[];this.start(arguments[1])},update:function(position){this.effects.invoke("render",position)},finish:function(position){this.effects.each(function(effect){effect.render(1);effect.cancel();effect.event("beforeFinish");if(effect.finish){effect.finish(position)}effect.event("afterFinish")})}});Effect.Tween=Class.create(Effect.Base,{initialize:function(object,from,to){object=Object.isString(object)?$(object):object;var args=$A(arguments),method=args.last(),options=args.length==5?args[3]:null;this.method=Object.isFunction(method)?method.bind(object):Object.isFunction(object[method])?object[method].bind(object):function(value){object[method]=value};this.start(Object.extend({from:from,to:to},options||{}))},update:function(position){this.method(position)}});Effect.Event=Class.create(Effect.Base,{initialize:function(){this.start(Object.extend({duration:0},arguments[0]||{}))},update:Prototype.emptyFunction});Effect.Opacity=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element){throw (Effect._elementDoesNotExistError)}if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout)){this.element.setStyle({zoom:1})}var options=Object.extend({from:this.element.getOpacity()||0,to:1},arguments[1]||{});this.start(options)},update:function(position){this.element.setOpacity(position)}});Effect.Move=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element){throw (Effect._elementDoesNotExistError)}var options=Object.extend({x:0,y:0,mode:"relative"},arguments[1]||{});this.start(options)},setup:function(){this.element.makePositioned();this.originalLeft=parseFloat(this.element.getStyle("left")||"0");this.originalTop=parseFloat(this.element.getStyle("top")||"0");if(this.options.mode=="absolute"){this.options.x=this.options.x-this.originalLeft;this.options.y=this.options.y-this.originalTop}},update:function(position){this.element.setStyle({left:(this.options.x*position+this.originalLeft).round()+"px",top:(this.options.y*position+this.originalTop).round()+"px"})}});Effect.MoveBy=function(element,toTop,toLeft){return new Effect.Move(element,Object.extend({x:toLeft,y:toTop},arguments[3]||{}))};Effect.Scale=Class.create(Effect.Base,{initialize:function(element,percent){this.element=$(element);if(!this.element){throw (Effect._elementDoesNotExistError)}var options=Object.extend({scaleX:true,scaleY:true,scaleContent:true,scaleFromCenter:false,scaleMode:"box",scaleFrom:100,scaleTo:percent},arguments[2]||{});this.start(options)},setup:function(){this.restoreAfterFinish=this.options.restoreAfterFinish||false;this.elementPositioning=this.element.getStyle("position");this.originalStyle={};["top","left","width","height","fontSize"].each(function(k){this.originalStyle[k]=this.element.style[k]}.bind(this));this.originalTop=this.element.offsetTop;this.originalLeft=this.element.offsetLeft;var fontSize=this.element.getStyle("font-size")||"100%";["em","px","%","pt"].each(function(fontSizeType){if(fontSize.indexOf(fontSizeType)>0){this.fontSize=parseFloat(fontSize);this.fontSizeType=fontSizeType}}.bind(this));this.factor=(this.options.scaleTo-this.options.scaleFrom)/100;this.dims=null;if(this.options.scaleMode=="box"){this.dims=[this.element.offsetHeight,this.element.offsetWidth]}if(/^content/.test(this.options.scaleMode)){this.dims=[this.element.scrollHeight,this.element.scrollWidth]}if(!this.dims){this.dims=[this.options.scaleMode.originalHeight,this.options.scaleMode.originalWidth]}},update:function(position){var currentScale=(this.options.scaleFrom/100)+(this.factor*position);if(this.options.scaleContent&&this.fontSize){this.element.setStyle({fontSize:this.fontSize*currentScale+this.fontSizeType})}this.setDimensions(this.dims[0]*currentScale,this.dims[1]*currentScale)},finish:function(position){if(this.restoreAfterFinish){this.element.setStyle(this.originalStyle)}},setDimensions:function(height,width){var d={};if(this.options.scaleX){d.width=width.round()+"px"}if(this.options.scaleY){d.height=height.round()+"px"}if(this.options.scaleFromCenter){var topd=(height-this.dims[0])/2;var leftd=(width-this.dims[1])/2;if(this.elementPositioning=="absolute"){if(this.options.scaleY){d.top=this.originalTop-topd+"px"}if(this.options.scaleX){d.left=this.originalLeft-leftd+"px"}}else{if(this.options.scaleY){d.top=-topd+"px"}if(this.options.scaleX){d.left=-leftd+"px"}}}this.element.setStyle(d)}});Effect.Highlight=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element){throw (Effect._elementDoesNotExistError)}var options=Object.extend({startcolor:"#ffff99"},arguments[1]||{});this.start(options)},setup:function(){if(this.element.getStyle("display")=="none"){this.cancel();return}this.oldStyle={};if(!this.options.keepBackgroundImage){this.oldStyle.backgroundImage=this.element.getStyle("background-image");this.element.setStyle({backgroundImage:"none"})}if(!this.options.endcolor){this.options.endcolor=this.element.getStyle("background-color").parseColor("#ffffff")}if(!this.options.restorecolor){this.options.restorecolor=this.element.getStyle("background-color")}this._base=$R(0,2).map(function(i){return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16)}.bind(this));this._delta=$R(0,2).map(function(i){return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i]}.bind(this))},update:function(position){this.element.setStyle({backgroundColor:$R(0,2).inject("#",function(m,v,i){return m+((this._base[i]+(this._delta[i]*position)).round().toColorPart())}.bind(this))})},finish:function(){this.element.setStyle(Object.extend(this.oldStyle,{backgroundColor:this.options.restorecolor}))}});Effect.ScrollTo=function(element){var options=arguments[1]||{},scrollOffsets=document.viewport.getScrollOffsets(),elementOffsets=$(element).cumulativeOffset();if(options.offset){elementOffsets[1]+=options.offset}return new Effect.Tween(null,scrollOffsets.top,elementOffsets[1],options,function(p){scrollTo(scrollOffsets.left,p.round())})};Effect.Fade=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();var options=Object.extend({from:element.getOpacity()||1,to:0,afterFinishInternal:function(effect){if(effect.options.to!=0){return}effect.element.hide().setStyle({opacity:oldOpacity})}},arguments[1]||{});return new Effect.Opacity(element,options)};Effect.Appear=function(element){element=$(element);var options=Object.extend({from:(element.getStyle("display")=="none"?0:element.getOpacity()||0),to:1,afterFinishInternal:function(effect){effect.element.forceRerendering()},beforeSetup:function(effect){effect.element.setOpacity(effect.options.from).show()}},arguments[1]||{});return new Effect.Opacity(element,options)};Effect.Puff=function(element){element=$(element);var oldStyle={opacity:element.getInlineOpacity(),position:element.getStyle("position"),top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};return new Effect.Parallel([new Effect.Scale(element,200,{sync:true,scaleFromCenter:true,scaleContent:true,restoreAfterFinish:true}),new Effect.Opacity(element,{sync:true,to:0})],Object.extend({duration:1,beforeSetupInternal:function(effect){Position.absolutize(effect.effects[0].element)},afterFinishInternal:function(effect){effect.effects[0].element.hide().setStyle(oldStyle)}},arguments[1]||{}))};Effect.BlindUp=function(element){element=$(element);element.makeClipping();return new Effect.Scale(element,0,Object.extend({scaleContent:false,scaleX:false,restoreAfterFinish:true,afterFinishInternal:function(effect){effect.element.hide().undoClipping()}},arguments[1]||{}))};Effect.BlindDown=function(element){element=$(element);var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:0,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makeClipping().setStyle({height:"0px"}).show()},afterFinishInternal:function(effect){effect.element.undoClipping()}},arguments[1]||{}))};Effect.SwitchOff=function(element){element=$(element);var oldOpacity=element.getInlineOpacity();return new Effect.Appear(element,Object.extend({duration:0.4,from:0,transition:Effect.Transitions.flicker,afterFinishInternal:function(effect){new Effect.Scale(effect.element,1,{duration:0.3,scaleFromCenter:true,scaleX:false,scaleContent:false,restoreAfterFinish:true,beforeSetup:function(effect){effect.element.makePositioned().makeClipping()},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned().setStyle({opacity:oldOpacity})}})}},arguments[1]||{}))};Effect.DropOut=function(element){element=$(element);var oldStyle={top:element.getStyle("top"),left:element.getStyle("left"),opacity:element.getInlineOpacity()};return new Effect.Parallel([new Effect.Move(element,{x:0,y:100,sync:true}),new Effect.Opacity(element,{sync:true,to:0})],Object.extend({duration:0.5,beforeSetup:function(effect){effect.effects[0].element.makePositioned()},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle)}},arguments[1]||{}))};Effect.Shake=function(element){element=$(element);var options=Object.extend({distance:20,duration:0.5},arguments[1]||{});var distance=parseFloat(options.distance);var split=parseFloat(options.duration)/10;var oldStyle={top:element.getStyle("top"),left:element.getStyle("left")};return new Effect.Move(element,{x:distance,y:0,duration:split,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:distance*2,y:0,duration:split*2,afterFinishInternal:function(effect){new Effect.Move(effect.element,{x:-distance,y:0,duration:split,afterFinishInternal:function(effect){effect.element.undoPositioned().setStyle(oldStyle)}})}})}})}})}})}})};Effect.SlideDown=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle("bottom");var elementDimensions=element.getDimensions();return new Effect.Scale(element,100,Object.extend({scaleContent:false,scaleX:false,scaleFrom:window.opera?0:1,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera){effect.element.setStyle({top:""})}effect.element.makeClipping().setStyle({height:"0px"}).show()},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+"px"})},afterFinishInternal:function(effect){effect.element.undoClipping().undoPositioned();effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom})}},arguments[1]||{}))};Effect.SlideUp=function(element){element=$(element).cleanWhitespace();var oldInnerBottom=element.down().getStyle("bottom");var elementDimensions=element.getDimensions();return new Effect.Scale(element,window.opera?0:1,Object.extend({scaleContent:false,scaleX:false,scaleMode:"box",scaleFrom:100,scaleMode:{originalHeight:elementDimensions.height,originalWidth:elementDimensions.width},restoreAfterFinish:true,afterSetup:function(effect){effect.element.makePositioned();effect.element.down().makePositioned();if(window.opera){effect.element.setStyle({top:""})}effect.element.makeClipping().show()},afterUpdateInternal:function(effect){effect.element.down().setStyle({bottom:(effect.dims[0]-effect.element.clientHeight)+"px"})},afterFinishInternal:function(effect){effect.element.hide().undoClipping().undoPositioned();effect.element.down().undoPositioned().setStyle({bottom:oldInnerBottom})}},arguments[1]||{}))};Effect.Squish=function(element){return new Effect.Scale(element,window.opera?1:0,{restoreAfterFinish:true,beforeSetup:function(effect){effect.element.makeClipping()},afterFinishInternal:function(effect){effect.element.hide().undoClipping()}})};Effect.Grow=function(element){element=$(element);var options=Object.extend({direction:"center",moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.full},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var initialMoveX,initialMoveY;var moveX,moveY;switch(options.direction){case"top-left":initialMoveX=initialMoveY=moveX=moveY=0;break;case"top-right":initialMoveX=dims.width;initialMoveY=moveY=0;moveX=-dims.width;break;case"bottom-left":initialMoveX=moveX=0;initialMoveY=dims.height;moveY=-dims.height;break;case"bottom-right":initialMoveX=dims.width;initialMoveY=dims.height;moveX=-dims.width;moveY=-dims.height;break;case"center":initialMoveX=dims.width/2;initialMoveY=dims.height/2;moveX=-dims.width/2;moveY=-dims.height/2;break}return new Effect.Move(element,{x:initialMoveX,y:initialMoveY,duration:0.01,beforeSetup:function(effect){effect.element.hide().makeClipping().makePositioned()},afterFinishInternal:function(effect){new Effect.Parallel([new Effect.Opacity(effect.element,{sync:true,to:1,from:0,transition:options.opacityTransition}),new Effect.Move(effect.element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition}),new Effect.Scale(effect.element,100,{scaleMode:{originalHeight:dims.height,originalWidth:dims.width},sync:true,scaleFrom:window.opera?1:0,transition:options.scaleTransition,restoreAfterFinish:true})],Object.extend({beforeSetup:function(effect){effect.effects[0].element.setStyle({height:"0px"}).show()},afterFinishInternal:function(effect){effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle)}},options))}})};Effect.Shrink=function(element){element=$(element);var options=Object.extend({direction:"center",moveTransition:Effect.Transitions.sinoidal,scaleTransition:Effect.Transitions.sinoidal,opacityTransition:Effect.Transitions.none},arguments[1]||{});var oldStyle={top:element.style.top,left:element.style.left,height:element.style.height,width:element.style.width,opacity:element.getInlineOpacity()};var dims=element.getDimensions();var moveX,moveY;switch(options.direction){case"top-left":moveX=moveY=0;break;case"top-right":moveX=dims.width;moveY=0;break;case"bottom-left":moveX=0;moveY=dims.height;break;case"bottom-right":moveX=dims.width;moveY=dims.height;break;case"center":moveX=dims.width/2;moveY=dims.height/2;break}return new Effect.Parallel([new Effect.Opacity(element,{sync:true,to:0,from:1,transition:options.opacityTransition}),new Effect.Scale(element,window.opera?1:0,{sync:true,transition:options.scaleTransition,restoreAfterFinish:true}),new Effect.Move(element,{x:moveX,y:moveY,sync:true,transition:options.moveTransition})],Object.extend({beforeStartInternal:function(effect){effect.effects[0].element.makePositioned().makeClipping()},afterFinishInternal:function(effect){effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle)}},options))};Effect.Pulsate=function(element){element=$(element);var options=arguments[1]||{},oldOpacity=element.getInlineOpacity(),transition=options.transition||Effect.Transitions.linear,reverser=function(pos){return 1-transition((-Math.cos((pos*(options.pulses||5)*2)*Math.PI)/2)+0.5)};return new Effect.Opacity(element,Object.extend(Object.extend({duration:2,from:0,afterFinishInternal:function(effect){effect.element.setStyle({opacity:oldOpacity})}},options),{transition:reverser}))};Effect.Fold=function(element){element=$(element);var oldStyle={top:element.style.top,left:element.style.left,width:element.style.width,height:element.style.height};element.makeClipping();return new Effect.Scale(element,5,Object.extend({scaleContent:false,scaleX:false,afterFinishInternal:function(effect){new Effect.Scale(element,1,{scaleContent:false,scaleY:false,afterFinishInternal:function(effect){effect.element.hide().undoClipping().setStyle(oldStyle)}})}},arguments[1]||{}))};Effect.Morph=Class.create(Effect.Base,{initialize:function(element){this.element=$(element);if(!this.element){throw (Effect._elementDoesNotExistError)}var options=Object.extend({style:{}},arguments[1]||{});if(!Object.isString(options.style)){this.style=$H(options.style)}else{if(options.style.include(":")){this.style=options.style.parseStyle()}else{this.element.addClassName(options.style);this.style=$H(this.element.getStyles());this.element.removeClassName(options.style);var css=this.element.getStyles();this.style=this.style.reject(function(style){return style.value==css[style.key]});options.afterFinishInternal=function(effect){effect.element.addClassName(effect.options.style);effect.transforms.each(function(transform){effect.element.style[transform.style]=""})}}}this.start(options)},setup:function(){function parseColor(color){if(!color||["rgba(0, 0, 0, 0)","transparent"].include(color)){color="#ffffff"}color=color.parseColor();return $R(0,2).map(function(i){return parseInt(color.slice(i*2+1,i*2+3),16)})}this.transforms=this.style.map(function(pair){var property=pair[0],value=pair[1],unit=null;if(value.parseColor("#zzzzzz")!="#zzzzzz"){value=value.parseColor();unit="color"}else{if(property=="opacity"){value=parseFloat(value);if(Prototype.Browser.IE&&(!this.element.currentStyle.hasLayout)){this.element.setStyle({zoom:1})}}else{if(Element.CSS_LENGTH.test(value)){var components=value.match(/^([\+\-]?[0-9\.]+)(.*)$/);value=parseFloat(components[1]);unit=(components.length==3)?components[2]:null}}}var originalValue=this.element.getStyle(property);return{style:property.camelize(),originalValue:unit=="color"?parseColor(originalValue):parseFloat(originalValue||0),targetValue:unit=="color"?parseColor(value):value,unit:unit}}.bind(this)).reject(function(transform){return((transform.originalValue==transform.targetValue)||(transform.unit!="color"&&(isNaN(transform.originalValue)||isNaN(transform.targetValue))))})},update:function(position){var style={},transform,i=this.transforms.length;while(i--){style[(transform=this.transforms[i]).style]=transform.unit=="color"?"#"+(Math.round(transform.originalValue[0]+(transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart()+(Math.round(transform.originalValue[1]+(transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart()+(Math.round(transform.originalValue[2]+(transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart():(transform.originalValue+(transform.targetValue-transform.originalValue)*position).toFixed(3)+(transform.unit===null?"":transform.unit)}this.element.setStyle(style,true)}});Effect.Transform=Class.create({initialize:function(tracks){this.tracks=[];this.options=arguments[1]||{};this.addTracks(tracks)},addTracks:function(tracks){tracks.each(function(track){track=$H(track);var data=track.values().first();this.tracks.push($H({ids:track.keys().first(),effect:Effect.Morph,options:{style:data}}))}.bind(this));return this},play:function(){return new Effect.Parallel(this.tracks.map(function(track){var ids=track.get("ids"),effect=track.get("effect"),options=track.get("options");var elements=[$(ids)||$$(ids)].flatten();return elements.map(function(e){return new effect(e,Object.extend({sync:true},options))})}).flatten(),this.options)}});Element.CSS_PROPERTIES=$w("backgroundColor backgroundPosition borderBottomColor borderBottomStyle borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth borderRightColor borderRightStyle borderRightWidth borderSpacing borderTopColor borderTopStyle borderTopWidth bottom clip color fontSize fontWeight height left letterSpacing lineHeight marginBottom marginLeft marginRight marginTop markerOffset maxHeight maxWidth minHeight minWidth opacity outlineColor outlineOffset outlineWidth paddingBottom paddingLeft paddingRight paddingTop right textIndent top width wordSpacing zIndex");Element.CSS_LENGTH=/^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;String.__parseStyleElement=document.createElement("div");String.prototype.parseStyle=function(){var style,styleRules=$H();if(Prototype.Browser.WebKit){style=new Element("div",{style:this}).style}else{String.__parseStyleElement.innerHTML='<div style="'+this+'"></div>';style=String.__parseStyleElement.childNodes[0].style}Element.CSS_PROPERTIES.each(function(property){if(style[property]){styleRules.set(property,style[property])}});if(Prototype.Browser.IE&&this.include("opacity")){styleRules.set("opacity",this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1])}return styleRules};if(document.defaultView&&document.defaultView.getComputedStyle){Element.getStyles=function(element){var css=document.defaultView.getComputedStyle($(element),null);return Element.CSS_PROPERTIES.inject({},function(styles,property){styles[property]=css[property];return styles})}}else{Element.getStyles=function(element){element=$(element);var css=element.currentStyle,styles;styles=Element.CSS_PROPERTIES.inject({},function(results,property){results[property]=css[property];return results});if(!styles.opacity){styles.opacity=element.getOpacity()}return styles}}Effect.Methods={morph:function(element,style){element=$(element);new Effect.Morph(element,Object.extend({style:style},arguments[2]||{}));return element},visualEffect:function(element,effect,options){element=$(element);var s=effect.dasherize().camelize(),klass=s.charAt(0).toUpperCase()+s.substring(1);new Effect[klass](element,options);return element},highlight:function(element,options){element=$(element);new Effect.Highlight(element,options);return element}};$w("fade appear grow shrink fold blindUp blindDown slideUp slideDown pulsate shake puff squish switchOff dropOut").each(function(effect){Effect.Methods[effect]=function(element,options){element=$(element);Effect[effect.charAt(0).toUpperCase()+effect.substring(1)](element,options);return element}});$w("getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles").each(function(f){Effect.Methods[f]=Element[f]});Element.addMethods(Effect.Methods);function validateCreditCard(s){var v="0123456789";var w="";for(i=0;i<s.length;i++){x=s.charAt(i);if(v.indexOf(x,0)!=-1){w+=x}}j=w.length/2;k=Math.floor(j);m=Math.ceil(j)-k;c=0;for(i=0;i<k;i++){a=w.charAt(i*2+m)*2;c+=a>9?Math.floor(a/10+a%10):a}for(i=0;i<k+m;i++){c+=w.charAt(i*2+1-m)*1}return(c%10==0)}var Validator=Class.create();Validator.prototype={initialize:function(className,error,test,options){if(typeof test=="function"){this.options=$H(options);this._test=test}else{this.options=$H(test);this._test=function(){return true}}this.error=error||"Validation failed.";this.className=className},test:function(v,elm){return(this._test(v,elm)&&this.options.all(function(p){return Validator.methods[p.key]?Validator.methods[p.key](v,elm,p.value):true}))}};Validator.methods={pattern:function(v,elm,opt){return Validation.get("IsEmpty").test(v)||opt.test(v)},minLength:function(v,elm,opt){return v.length>=opt},maxLength:function(v,elm,opt){return v.length<=opt},min:function(v,elm,opt){return v>=parseFloat(opt)},max:function(v,elm,opt){return v<=parseFloat(opt)},notOneOf:function(v,elm,opt){return $A(opt).all(function(value){return v!=value})},oneOf:function(v,elm,opt){return $A(opt).any(function(value){return v==value})},is:function(v,elm,opt){return v==opt},isNot:function(v,elm,opt){return v!=opt},equalToField:function(v,elm,opt){return v==$F(opt)},notEqualToField:function(v,elm,opt){return v!=$F(opt)},include:function(v,elm,opt){return $A(opt).all(function(value){return Validation.get(value).test(v,elm)})}};var Validation=Class.create();Validation.defaultOptions={onSubmit:true,stopOnFirst:false,immediate:false,focusOnError:true,useTitles:false,addClassNameToContainer:false,containerClassName:".input-box",onFormValidate:function(result,form){},onElementValidate:function(result,elm){}};Validation.prototype={initialize:function(form,options){this.form=$(form);if(!this.form){return}this.options=Object.extend({onSubmit:Validation.defaultOptions.onSubmit,stopOnFirst:Validation.defaultOptions.stopOnFirst,immediate:Validation.defaultOptions.immediate,focusOnError:Validation.defaultOptions.focusOnError,useTitles:Validation.defaultOptions.useTitles,onFormValidate:Validation.defaultOptions.onFormValidate,onElementValidate:Validation.defaultOptions.onElementValidate},options||{});if(this.options.onSubmit){Event.observe(this.form,"submit",this.onSubmit.bind(this),false)}if(this.options.immediate){Form.getElements(this.form).each(function(input){if(input.tagName.toLowerCase()=="select"){Event.observe(input,"blur",this.onChange.bindAsEventListener(this))}if(input.type.toLowerCase()=="radio"||input.type.toLowerCase()=="checkbox"){Event.observe(input,"click",this.onChange.bindAsEventListener(this))}else{Event.observe(input,"change",this.onChange.bindAsEventListener(this))}},this)}},onChange:function(ev){Validation.isOnChange=true;Validation.validate(Event.element(ev),{useTitle:this.options.useTitles,onElementValidate:this.options.onElementValidate});Validation.isOnChange=false},onSubmit:function(ev){if(!this.validate()){Event.stop(ev)}},validate:function(){var result=false;var useTitles=this.options.useTitles;var callback=this.options.onElementValidate;try{if(this.options.stopOnFirst){result=Form.getElements(this.form).all(function(elm){if(elm.hasClassName("local-validation")&&!this.isElementInForm(elm,this.form)){return true}return Validation.validate(elm,{useTitle:useTitles,onElementValidate:callback})},this)}else{result=Form.getElements(this.form).collect(function(elm){if(elm.hasClassName("local-validation")&&!this.isElementInForm(elm,this.form)){return true}if(elm.hasClassName("validation-disabled")){return true}return Validation.validate(elm,{useTitle:useTitles,onElementValidate:callback})},this).all()}}catch(e){}if(!result&&this.options.focusOnError){try{Form.getElements(this.form).findAll(function(elm){return $(elm).hasClassName("validation-failed")}).first().focus()}catch(e){}}this.options.onFormValidate(result,this.form);return result},reset:function(){Form.getElements(this.form).each(Validation.reset)},isElementInForm:function(elm,form){var domForm=elm.up("form");if(domForm==form){return true}return false}};Object.extend(Validation,{validate:function(elm,options){options=Object.extend({useTitle:false,onElementValidate:function(result,elm){}},options||{});elm=$(elm);var cn=$w(elm.className);return result=cn.all(function(value){var test=Validation.test(value,elm,options.useTitle);options.onElementValidate(test,elm);return test})},insertAdvice:function(elm,advice){var container=$(elm).up(".field-row");if(container){Element.insert(container,{after:advice})}else{if(elm.up("td.value")){elm.up("td.value").insert({bottom:advice})}else{if(elm.advaiceContainer&&$(elm.advaiceContainer)){$(elm.advaiceContainer).update(advice)}else{switch(elm.type.toLowerCase()){case"checkbox":case"radio":var p=elm.parentNode;if(p){Element.insert(p,{bottom:advice})}else{Element.insert(elm,{after:advice})}break;default:Element.insert(elm,{after:advice})}}}}},showAdvice:function(elm,advice,adviceName){if(!elm.advices){elm.advices=new Hash()}else{elm.advices.each(function(pair){if(!advice||pair.value.id!=advice.id){this.hideAdvice(elm,pair.value)}}.bind(this))}elm.advices.set(adviceName,advice);if(typeof Effect=="undefined"){advice.style.display="block"}else{if(!advice._adviceAbsolutize){new Effect.Appear(advice,{duration:1})}else{Position.absolutize(advice);advice.show();advice.setStyle({top:advice._adviceTop,left:advice._adviceLeft,width:advice._adviceWidth,"z-index":1000});advice.addClassName("advice-absolute")}}},hideAdvice:function(elm,advice){if(advice!=null){new Effect.Fade(advice,{duration:1,afterFinishInternal:function(){advice.hide()}})}},updateCallback:function(elm,status){if(typeof elm.callbackFunction!="undefined"){eval(elm.callbackFunction+"('"+elm.id+"','"+status+"')")}},ajaxError:function(elm,errorMsg){var name="validate-ajax";var advice=Validation.getAdvice(name,elm);if(advice==null){advice=this.createAdvice(name,elm,false,errorMsg)}this.showAdvice(elm,advice,"validate-ajax");this.updateCallback(elm,"failed");elm.addClassName("validation-failed");elm.addClassName("validate-ajax");if(Validation.defaultOptions.addClassNameToContainer&&Validation.defaultOptions.containerClassName!=""){var container=elm.up(Validation.defaultOptions.containerClassName);if(container&&this.allowContainerClassName(elm)){container.removeClassName("validation-passed");container.addClassName("validation-error")}}},allowContainerClassName:function(elm){if(elm.type=="radio"||elm.type=="checkbox"){return elm.hasClassName("change-container-classname")}return true},test:function(name,elm,useTitle){var v=Validation.get(name);var prop="__advice"+name.camelize();try{if(Validation.isVisible(elm)&&!v.test($F(elm),elm)){var advice=Validation.getAdvice(name,elm);if(advice==null){advice=this.createAdvice(name,elm,useTitle)}this.showAdvice(elm,advice,name);this.updateCallback(elm,"failed");elm[prop]=1;if(!elm.advaiceContainer){elm.removeClassName("validation-passed");elm.addClassName("validation-failed")}if(Validation.defaultOptions.addClassNameToContainer&&Validation.defaultOptions.containerClassName!=""){var container=elm.up(Validation.defaultOptions.containerClassName);if(container&&this.allowContainerClassName(elm)){container.removeClassName("validation-passed");container.addClassName("validation-error")}}return false}else{var advice=Validation.getAdvice(name,elm);this.hideAdvice(elm,advice);this.updateCallback(elm,"passed");elm[prop]="";elm.removeClassName("validation-failed");elm.addClassName("validation-passed");if(Validation.defaultOptions.addClassNameToContainer&&Validation.defaultOptions.containerClassName!=""){var container=elm.up(Validation.defaultOptions.containerClassName);if(container&&!container.down(".validation-failed")&&this.allowContainerClassName(elm)){if(!Validation.get("IsEmpty").test(elm.value)||!this.isVisible(elm)){container.addClassName("validation-passed")}else{container.removeClassName("validation-passed")}container.removeClassName("validation-error")}}return true}}catch(e){throw (e)}},isVisible:function(elm){while(elm.tagName!="BODY"){if(!$(elm).visible()){return false}elm=elm.parentNode}return true},getAdvice:function(name,elm){return $("advice-"+name+"-"+Validation.getElmID(elm))||$("advice-"+Validation.getElmID(elm))},createAdvice:function(name,elm,useTitle,customError){var v=Validation.get(name);var errorMsg=useTitle?((elm&&elm.title)?elm.title:v.error):v.error;if(customError){errorMsg=customError}if(jQuery.mage.__){errorMsg=jQuery.mage.__(errorMsg)}advice='<div class="validation-advice" id="advice-'+name+"-"+Validation.getElmID(elm)+'" style="display:none">'+errorMsg+"</div>";Validation.insertAdvice(elm,advice);advice=Validation.getAdvice(name,elm);if($(elm).hasClassName("absolute-advice")){var dimensions=$(elm).getDimensions();var originalPosition=Position.cumulativeOffset(elm);advice._adviceTop=(originalPosition[1]+dimensions.height)+"px";advice._adviceLeft=(originalPosition[0])+"px";advice._adviceWidth=(dimensions.width)+"px";advice._adviceAbsolutize=true}return advice},getElmID:function(elm){return elm.id?elm.id:elm.name},reset:function(elm){elm=$(elm);var cn=$w(elm.className);cn.each(function(value){var prop="__advice"+value.camelize();if(elm[prop]){var advice=Validation.getAdvice(value,elm);if(advice){advice.hide()}elm[prop]=""}elm.removeClassName("validation-failed");elm.removeClassName("validation-passed");if(Validation.defaultOptions.addClassNameToContainer&&Validation.defaultOptions.containerClassName!=""){var container=elm.up(Validation.defaultOptions.containerClassName);if(container){container.removeClassName("validation-passed");container.removeClassName("validation-error")}}})},add:function(className,error,test,options){var nv={};nv[className]=new Validator(className,error,test,options);Object.extend(Validation.methods,nv)},addAllThese:function(validators){var nv={};$A(validators).each(function(value){nv[value[0]]=new Validator(value[0],value[1],value[2],(value.length>3?value[3]:{}))});Object.extend(Validation.methods,nv)},get:function(name){return Validation.methods[name]?Validation.methods[name]:Validation.methods._LikeNoIDIEverSaw_},methods:{_LikeNoIDIEverSaw_:new Validator("_LikeNoIDIEverSaw_","",{})}});Validation.add("IsEmpty","",function(v){return(v==""||(v==null)||(v.length==0)||/^\s+$/.test(v))});Validation.addAllThese([["validate-no-html-tags","HTML tags are not allowed",function(v){return !/<(\/)?\w+/.test(v)}],["validate-select","Please select an option.",function(v){return((v!="none")&&(v!=null)&&(v.length!=0))}],["required-entry","This is a required field.",function(v){return !Validation.get("IsEmpty").test(v)}],["validate-number","Please enter a valid number in this field.",function(v){return Validation.get("IsEmpty").test(v)||(!isNaN(parseNumber(v))&&/^\s*-?\d*(\.\d*)?\s*$/.test(v))}],["validate-number-range","The value is not within the specified range.",function(v,elm){if(Validation.get("IsEmpty").test(v)){return true}var numValue=parseNumber(v);if(isNaN(numValue)){return false}var reRange=/^number-range-(-?[\d.,]+)?-(-?[\d.,]+)?$/,result=true;$w(elm.className).each(function(name){var m=reRange.exec(name);if(m){result=result&&(m[1]==null||m[1]==""||numValue>=parseNumber(m[1]))&&(m[2]==null||m[2]==""||numValue<=parseNumber(m[2]))}});return result}],["validate-digits","Please use numbers only in this field. Please avoid spaces or other characters such as dots or commas.",function(v){return Validation.get("IsEmpty").test(v)||!/[^\d]/.test(v)}],["validate-digits-range","The value is not within the specified range.",function(v,elm){if(Validation.get("IsEmpty").test(v)){return true}var numValue=parseNumber(v);if(isNaN(numValue)){return false}var reRange=/^digits-range-(-?\d+)?-(-?\d+)?$/,result=true;$w(elm.className).each(function(name){var m=reRange.exec(name);if(m){result=result&&(m[1]==null||m[1]==""||numValue>=parseNumber(m[1]))&&(m[2]==null||m[2]==""||numValue<=parseNumber(m[2]))}});return result}],["validate-range","The value is not within the specified range.",function(v,elm){var minValue,maxValue;if(Validation.get("IsEmpty").test(v)){return true}else{if(Validation.get("validate-digits").test(v)){minValue=maxValue=parseNumber(v)}else{var ranges=/^(-?\d+)?-(-?\d+)?$/.exec(v);if(ranges){minValue=parseNumber(ranges[1]);maxValue=parseNumber(ranges[2]);if(minValue>maxValue){return false}}else{return false}}}var reRange=/^range-(-?\d+)?-(-?\d+)?$/,result=true;$w(elm.className).each(function(name){var validRange=reRange.exec(name);if(validRange){var minValidRange=parseNumber(validRange[1]);var maxValidRange=parseNumber(validRange[2]);result=result&&(isNaN(minValidRange)||minValue>=minValidRange)&&(isNaN(maxValidRange)||maxValue<=maxValidRange)}});return result}],["validate-alpha","Please use letters only (a-z or A-Z) in this field.",function(v){return Validation.get("IsEmpty").test(v)||/^[a-zA-Z]+$/.test(v)}],["validate-code","Please use only letters (a-z), numbers (0-9) or underscore(_) in this field, first character should be a letter.",function(v){return Validation.get("IsEmpty").test(v)||/^[a-z]+[a-z0-9_]+$/.test(v)}],["validate-alphanum","Please use only letters (a-z or A-Z) or numbers (0-9) only in this field. No spaces or other characters are allowed.",function(v){return Validation.get("IsEmpty").test(v)||/^[a-zA-Z0-9]+$/.test(v)}],["validate-alphanum-with-spaces","Please use only letters (a-z or A-Z), numbers (0-9) or spaces only in this field.",function(v){return Validation.get("IsEmpty").test(v)||/^[a-zA-Z0-9 ]+$/.test(v)}],["validate-street","Please use only letters (a-z or A-Z) or numbers (0-9) or spaces and # only in this field.",function(v){return Validation.get("IsEmpty").test(v)||/^[ \w]{3,}([A-Za-z]\.)?([ \w]*\#\d+)?(\r\n| )[ \w]{3,}/.test(v)}],["validate-phoneStrict","Please enter a valid phone number. For example (123) 456-7890 or 123-456-7890.",function(v){return Validation.get("IsEmpty").test(v)||/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/.test(v)}],["validate-phoneLax","Please enter a valid phone number. For example (123) 456-7890 or 123-456-7890.",function(v){return Validation.get("IsEmpty").test(v)||/^((\d[-. ]?)?((\(\d{3}\))|\d{3}))?[-. ]?\d{3}[-. ]?\d{4}$/.test(v)}],["validate-fax","Please enter a valid fax number. For example (123) 456-7890 or 123-456-7890.",function(v){return Validation.get("IsEmpty").test(v)||/^(\()?\d{3}(\))?(-|\s)?\d{3}(-|\s)\d{4}$/.test(v)}],["validate-date","Please enter a valid date.",function(v){var test=new Date(v);return Validation.get("IsEmpty").test(v)||!isNaN(test)}],["validate-date-range","The From Date value should be less than or equal to the To Date value.",function(v,elm){var m=/\bdate-range-(\w+)-(\w+)\b/.exec(elm.className);if(!m||m[2]=="to"||Validation.get("IsEmpty").test(v)){return true}var currentYear=new Date().getFullYear()+"";var normalizedTime=function(v){v=v.split(/[.\/]/);if(v[2]&&v[2].length<4){v[2]=currentYear.substr(0,v[2].length)+v[2]}return new Date(v.join("/")).getTime()};var dependentElements=Element.select(elm.form,".validate-date-range.date-range-"+m[1]+"-to");return !dependentElements.length||Validation.get("IsEmpty").test(dependentElements[0].value)||normalizedTime(v)<=normalizedTime(dependentElements[0].value)}],["validate-email","Please enter a valid email address. For example johndoe@domain.com.",function(v){return Validation.get("IsEmpty").test(v)||/^([a-z0-9,!\#\$%&'\*\+\/=\?\^_`\{\|\}~-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z0-9,!\#\$%&'\*\+\/=\?\^_`\{\|\}~-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*@([a-z0-9-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z0-9-]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*\.(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]){2,})$/i.test(v)}],["validate-emailSender","Please use only visible characters and spaces.",function(v){return Validation.get("IsEmpty").test(v)||/^[\S ]+$/.test(v)}],["validate-password","Please enter 6 or more characters. Leading or trailing spaces will be ignored.",function(v){var pass=v.strip();return !(pass.length>0&&pass.length<6)}],["validate-admin-password","Please enter 7 or more characters. Password should contain both numeric and alphabetic characters.",function(v){var pass=v.strip();if(0==pass.length){return true}if(!(/[a-z]/i.test(v))||!(/[0-9]/.test(v))){return false}return !(pass.length<7)}],["validate-cpassword","Please make sure your passwords match.",function(v){var conf=$("confirmation")?$("confirmation"):$$(".validate-cpassword")[0];var pass=false;if($("password")){pass=$("password")}var passwordElements=$$(".validate-password");for(var i=0;i<passwordElements.size();i++){var passwordElement=passwordElements[i];if(passwordElement.up("form").id==conf.up("form").id){pass=passwordElement}}if($$(".validate-admin-password").size()){pass=$$(".validate-admin-password")[0]}return(pass.value==conf.value)}],["validate-both-passwords","Please make sure your passwords match.",function(v,input){var dependentInput=$(input.form[input.name=="password"?"confirmation":"password"]),isEqualValues=input.value==dependentInput.value;if(isEqualValues&&dependentInput.hasClassName("validation-failed")){Validation.test(this.className,dependentInput)}return dependentInput.value==""||isEqualValues}],["validate-url","Please enter a valid URL. Protocol is required (http://, https:// or ftp://)",function(v){v=(v||"").replace(/^\s+/,"").replace(/\s+$/,"");return Validation.get("IsEmpty").test(v)||/^(http|https|ftp):\/\/(([A-Z0-9]([A-Z0-9_-]*[A-Z0-9]|))(\.[A-Z0-9]([A-Z0-9_-]*[A-Z0-9]|))*)(:(\d+))?(\/[A-Z0-9~](([A-Z0-9_~-]|\.)*[A-Z0-9~]|))*\/?(.*)?$/i.test(v)}],["validate-clean-url","Please enter a valid URL. For example http://www.example.com or www.example.com",function(v){return Validation.get("IsEmpty").test(v)||/^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+.(com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\d+))?\/?/i.test(v)||/^(www)((\.[A-Z0-9][A-Z0-9_-]*)+.(com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\d+))?\/?/i.test(v)}],["validate-identifier",'Please enter a valid URL Key. For example "example-page", "example-page.html" or "anotherlevel/example-page".',function(v){return Validation.get("IsEmpty").test(v)||/^[a-z0-9][a-z0-9_\/-]+(\.[a-z0-9_-]+)?$/.test(v)}],["validate-xml-identifier","Please enter a valid XML-identifier. For example something_1, block5, id-4.",function(v){return Validation.get("IsEmpty").test(v)||/^[A-Z][A-Z0-9_\/-]*$/i.test(v)}],["validate-ssn","Please enter a valid social security number. For example 123-45-6789.",function(v){return Validation.get("IsEmpty").test(v)||/^\d{3}-?\d{2}-?\d{4}$/.test(v)}],["validate-zip-us","Please enter a valid zip code. For example 90602 or 90602-1234.",function(v){return Validation.get("IsEmpty").test(v)||/(^\d{5}$)|(^\d{5}-\d{4}$)/.test(v)}],["validate-zip-international","Please enter a valid zip code.",function(v){return true}],["validate-date-au","Please use this date format: dd/mm/yyyy. For example 17/03/2006 for the 17th of March, 2006.",function(v){if(Validation.get("IsEmpty").test(v)){return true}var regex=/^(\d{2})\/(\d{2})\/(\d{4})$/;if(!regex.test(v)){return false}var d=new Date(v.replace(regex,"$2/$1/$3"));return(parseInt(RegExp.$2,10)==(1+d.getMonth()))&&(parseInt(RegExp.$1,10)==d.getDate())&&(parseInt(RegExp.$3,10)==d.getFullYear())}],["validate-currency-dollar","Please enter a valid $ amount. For example $100.00.",function(v){return Validation.get("IsEmpty").test(v)||/^\$?\-?([1-9]{1}[0-9]{0,2}(\,[0-9]{3})*(\.[0-9]{0,2})?|[1-9]{1}\d*(\.[0-9]{0,2})?|0(\.[0-9]{0,2})?|(\.[0-9]{1,2})?)$/.test(v)}],["validate-one-required","Please select one of the above options.",function(v,elm){var p=elm.parentNode;var options=p.getElementsByTagName("INPUT");return $A(options).any(function(elm){return $F(elm)})}],["validate-one-required-by-name","Please select one of the options.",function(v,elm){var inputs=$$('input[name="'+elm.name.replace(/([\\"])/g,"\\$1")+'"]');var error=1;for(var i=0;i<inputs.length;i++){if((inputs[i].type=="checkbox"||inputs[i].type=="radio")&&inputs[i].checked==true){error=0}if(Validation.isOnChange&&(inputs[i].type=="checkbox"||inputs[i].type=="radio")){Validation.reset(inputs[i])}}if(error==0){return true}else{return false}}],["validate-not-negative-number","Please enter a number 0 or greater in this field.",function(v){if(Validation.get("IsEmpty").test(v)){return true}v=parseNumber(v);return !isNaN(v)&&v>=0}],["validate-zero-or-greater","Please enter a number 0 or greater in this field.",function(v){return Validation.get("validate-not-negative-number").test(v)}],["validate-greater-than-zero","Please enter a number greater than 0 in this field.",function(v){if(Validation.get("IsEmpty").test(v)){return true}v=parseNumber(v);return !isNaN(v)&&v>0}],["validate-state","Please select State/Province.",function(v){return(v!=0||v=="")}],["validate-new-password","Please enter 6 or more characters. Leading or trailing spaces will be ignored.",function(v){if(!Validation.get("validate-password").test(v)){return false}if(Validation.get("IsEmpty").test(v)&&v!=""){return false}return true}],["validate-cc-number","Please enter a valid credit card number.",function(v,elm){var ccTypeContainer=$(elm.id.substr(0,elm.id.indexOf("_cc_number"))+"_cc_type");if(ccTypeContainer&&typeof Validation.creditCartTypes.get(ccTypeContainer.value)!="undefined"&&Validation.creditCartTypes.get(ccTypeContainer.value)[2]==false){if(!Validation.get("IsEmpty").test(v)&&Validation.get("validate-digits").test(v)){return true}else{return false}}return validateCreditCard(v)}],["validate-cc-type","Credit card number does not match credit card type.",function(v,elm){elm.value=removeDelimiters(elm.value);v=removeDelimiters(v);var ccTypeContainer=$(elm.id.substr(0,elm.id.indexOf("_cc_number"))+"_cc_type");if(!ccTypeContainer){return true}var ccType=ccTypeContainer.value;if(typeof Validation.creditCartTypes.get(ccType)=="undefined"){return false}if(Validation.creditCartTypes.get(ccType)[0]==false){return true}var ccMatchedType="";Validation.creditCartTypes.each(function(pair){if(pair.value[0]&&v.match(pair.value[0])){ccMatchedType=pair.key;throw $break}});if(ccMatchedType!=ccType){return false}if(ccTypeContainer.hasClassName("validation-failed")&&Validation.isOnChange){Validation.validate(ccTypeContainer)}return true}],["validate-cc-type-select","Card type does not match credit card number.",function(v,elm){var ccNumberContainer=$(elm.id.substr(0,elm.id.indexOf("_cc_type"))+"_cc_number");if(Validation.isOnChange&&Validation.get("IsEmpty").test(ccNumberContainer.value)){return true}if(Validation.get("validate-cc-type").test(ccNumberContainer.value,ccNumberContainer)){Validation.validate(ccNumberContainer)}return Validation.get("validate-cc-type").test(ccNumberContainer.value,ccNumberContainer)}],["validate-cc-exp","Incorrect credit card expiration date.",function(v,elm){var ccExpMonth=v;var ccExpYear=$(elm.id.substr(0,elm.id.indexOf("_expiration"))+"_expiration_yr").value;var currentTime=new Date();var currentMonth=currentTime.getMonth()+1;var currentYear=currentTime.getFullYear();if(ccExpMonth<currentMonth&&ccExpYear==currentYear){return false}return true}],["validate-cc-cvn","Please enter a valid credit card verification number.",function(v,elm){var ccTypeContainer=$(elm.id.substr(0,elm.id.indexOf("_cc_cid"))+"_cc_type");if(!ccTypeContainer){return true}var ccType=ccTypeContainer.value;if(typeof Validation.creditCartTypes.get(ccType)=="undefined"){return false}var re=Validation.creditCartTypes.get(ccType)[1];if(v.match(re)){return true}return false}],["validate-ajax","",function(v,elm){return true}],["validate-data","Please use only letters (a-z or A-Z), numbers (0-9) or underscore(_) in this field, first character should be a letter.",function(v){if(v!=""&&v){return/^[A-Za-z]+[A-Za-z0-9_]+$/.test(v)}return true}],["validate-css-length","Please input a valid CSS-length. For example 100px or 77pt or 20em or .5ex or 50%.",function(v){if(v!=""&&v){return/^[0-9\.]+(px|pt|em|ex|%)?$/.test(v)&&(!(/\..*\./.test(v)))&&!(/\.$/.test(v))}return true}],["validate-length","Text length does not satisfy specified text range.",function(v,elm){var reMax=new RegExp(/^maximum-length-[0-9]+$/);var reMin=new RegExp(/^minimum-length-[0-9]+$/);var result=true;$w(elm.className).each(function(name,index){if(name.match(reMax)&&result){var length=name.split("-")[2];result=(v.length<=length)}if(name.match(reMin)&&result&&!Validation.get("IsEmpty").test(v)){var length=name.split("-")[2];result=(v.length>=length)}});return result}],["validate-percents","Please enter a number lower than 100.",{max:100}],["required-file","Please select a file",function(v,elm){var result=!Validation.get("IsEmpty").test(v);if(result===false){ovId=elm.id+"_value";if($(ovId)){result=!Validation.get("IsEmpty").test($(ovId).value)}}return result}],["validate-cc-ukss","Please enter issue number or start date for switch/solo card type.",function(v,elm){var endposition;if(elm.id.match(/(.)+_cc_issue$/)){endposition=elm.id.indexOf("_cc_issue")}else{if(elm.id.match(/(.)+_start_month$/)){endposition=elm.id.indexOf("_start_month")}else{endposition=elm.id.indexOf("_start_year")}}var prefix=elm.id.substr(0,endposition);var ccTypeContainer=$(prefix+"_cc_type");if(!ccTypeContainer){return true}var ccType=ccTypeContainer.value;if(["SS","SM","SO"].indexOf(ccType)==-1){return true}$(prefix+"_cc_issue").advaiceContainer=$(prefix+"_start_month").advaiceContainer=$(prefix+"_start_year").advaiceContainer=$(prefix+"_cc_type_ss_div").down(".adv-container");var ccIssue=$(prefix+"_cc_issue").value;var ccSMonth=$(prefix+"_start_month").value;var ccSYear=$(prefix+"_start_year").value;var ccStartDatePresent=(ccSMonth&&ccSYear)?true:false;if(!ccStartDatePresent&&!ccIssue){return false}return true}]]);function removeDelimiters(v){v=v.replace(/\s/g,"");v=v.replace(/\-/g,"");return v}function parseNumber(v){if(typeof v!="string"){return parseFloat(v)}var isDot=v.indexOf(".");var isComa=v.indexOf(",");if(isDot!=-1&&isComa!=-1){if(isComa>isDot){v=v.replace(".","").replace(",",".")}else{v=v.replace(",","")}}else{if(isComa!=-1){v=v.replace(",",".")}}return parseFloat(v)}Validation.creditCartTypes=$H({SO:[new RegExp("^(6334[5-9]([0-9]{11}|[0-9]{13,14}))|(6767([0-9]{12}|[0-9]{14,15}))$"),new RegExp("^([0-9]{3}|[0-9]{4})?$"),true],SM:[new RegExp("(^(5[0678])[0-9]{11,18}$)|(^(6[^05])[0-9]{11,18}$)|(^(601)[^1][0-9]{9,16}$)|(^(6011)[0-9]{9,11}$)|(^(6011)[0-9]{13,16}$)|(^(65)[0-9]{11,13}$)|(^(65)[0-9]{15,18}$)|(^(49030)[2-9]([0-9]{10}$|[0-9]{12,13}$))|(^(49033)[5-9]([0-9]{10}$|[0-9]{12,13}$))|(^(49110)[1-2]([0-9]{10}$|[0-9]{12,13}$))|(^(49117)[4-9]([0-9]{10}$|[0-9]{12,13}$))|(^(49118)[0-2]([0-9]{10}$|[0-9]{12,13}$))|(^(4936)([0-9]{12}$|[0-9]{14,15}$))"),new RegExp("^([0-9]{3}|[0-9]{4})?$"),true],VI:[new RegExp("^4[0-9]{12}([0-9]{3})?$"),new RegExp("^[0-9]{3}$"),true],MC:[new RegExp("^5[1-5][0-9]{14}$"),new RegExp("^[0-9]{3}$"),true],AE:[new RegExp("^3[47][0-9]{13}$"),new RegExp("^[0-9]{4}$"),true],DI:[new RegExp("^6(011|4[4-9][0-9]|5[0-9]{2})[0-9]{12}$"),new RegExp("^[0-9]{3}$"),true],JCB:[new RegExp("^(3[0-9]{15}|(2131|1800)[0-9]{11})$"),new RegExp("^[0-9]{3,4}$"),true],OT:[false,new RegExp("^([0-9]{3}|[0-9]{4})?$"),false]});function popWin(url,win,para){var win=window.open(url,win,para);win.focus()}function setLocation(url){window.location.href=url}function setPLocation(url,setFocus){if(setFocus){window.opener.focus()}window.opener.location.href=url}function setLanguageCode(code,fromCode){var href=window.location.href;var after="",dash;if(dash=href.match(/\#(.*)$/)){href=href.replace(/\#(.*)$/,"");after=dash[0]}if(href.match(/[?]/)){var re=/([?&]store=)[a-z0-9_]*/;if(href.match(re)){href=href.replace(re,"$1"+code)}else{href+="&store="+code}var re=/([?&]from_store=)[a-z0-9_]*/;if(href.match(re)){href=href.replace(re,"")}}else{href+="?store="+code}if(typeof(fromCode)!="undefined"){href+="&from_store="+fromCode}href+=after;setLocation(href)}function decorateGeneric(elements,decorateParams){var allSupportedParams=["odd","even","first","last"];var _decorateParams={};var total=elements.length;if(total){if(typeof(decorateParams)=="undefined"){decorateParams=allSupportedParams}if(!decorateParams.length){return}for(var k in allSupportedParams){_decorateParams[allSupportedParams[k]]=false}for(var k in decorateParams){_decorateParams[decorateParams[k]]=true}if(_decorateParams.first){Element.addClassName(elements[0],"first")}if(_decorateParams.last){Element.addClassName(elements[total-1],"last")}for(var i=0;i<total;i++){if((i+1)%2==0){if(_decorateParams.even){Element.addClassName(elements[i],"even")}}else{if(_decorateParams.odd){Element.addClassName(elements[i],"odd")}}}}}function decorateTable(table,options){var table=$(table);if(table){var _options={tbody:false,"tbody tr":["odd","even","first","last"],"thead tr":["first","last"],"tfoot tr":["first","last"],"tr td":["last"]};if(typeof(options)!="undefined"){for(var k in options){_options[k]=options[k]}}if(_options.tbody){decorateGeneric(table.select("tbody"),_options.tbody)}if(_options["tbody tr"]){decorateGeneric(table.select("tbody tr"),_options["tbody tr"])}if(_options["thead tr"]){decorateGeneric(table.select("thead tr"),_options["thead tr"])}if(_options["tfoot tr"]){decorateGeneric(table.select("tfoot tr"),_options["tfoot tr"])}if(_options["tr td"]){var allRows=table.select("tr");if(allRows.length){for(var i=0;i<allRows.length;i++){decorateGeneric(allRows[i].getElementsByTagName("TD"),_options["tr td"])}}}}}function decorateList(list,nonRecursive){if($(list)){if(typeof(nonRecursive)=="undefined"){var items=$(list).select("li")}else{var items=$(list).childElements()}decorateGeneric(items,["odd","even","last"])}}function decorateDataList(list){list=$(list);if(list){decorateGeneric(list.select("dt"),["odd","even","last"]);decorateGeneric(list.select("dd"),["odd","even","last"])}}function parseSidUrl(baseUrl,urlExt){var sidPos=baseUrl.indexOf("/?SID=");var sid="";urlExt=(urlExt!=undefined)?urlExt:"";if(sidPos>-1){sid="?"+baseUrl.substring(sidPos+2);baseUrl=baseUrl.substring(0,sidPos+1)}return baseUrl+urlExt+sid}function formatCurrency(price,format,showPlus){var precision=isNaN(format.precision=Math.abs(format.precision))?2:format.precision;var requiredPrecision=isNaN(format.requiredPrecision=Math.abs(format.requiredPrecision))?2:format.requiredPrecision;precision=requiredPrecision;var integerRequired=isNaN(format.integerRequired=Math.abs(format.integerRequired))?1:format.integerRequired;var decimalSymbol=format.decimalSymbol==undefined?",":format.decimalSymbol;var groupSymbol=format.groupSymbol==undefined?".":format.groupSymbol;var groupLength=format.groupLength==undefined?3:format.groupLength;var s="";if(showPlus==undefined||showPlus==true){s=price<0?"-":(showPlus?"+":"")}else{if(showPlus==false){s=""}}var i=parseInt(price=Math.abs(+price||0).toFixed(precision))+"";var pad=(i.length<integerRequired)?(integerRequired-i.length):0;while(pad){i="0"+i;pad--}j=(j=i.length)>groupLength?j%groupLength:0;re=new RegExp("(\\d{"+groupLength+"})(?=\\d)","g");var r=(j?i.substr(0,j)+groupSymbol:"")+i.substr(j).replace(re,"$1"+groupSymbol)+(precision?decimalSymbol+Math.abs(price-i).toFixed(precision).replace(/-/,0).slice(2):"");var pattern="";if(format.pattern.indexOf("{sign}")==-1){pattern=s+format.pattern}else{pattern=format.pattern.replace("{sign}",s)}return pattern.replace("%s",r).replace(/^\s\s*/,"").replace(/\s\s*$/,"")}function expandDetails(el,childClass){if(Element.hasClassName(el,"show-details")){$$(childClass).each(function(item){item.hide()});Element.removeClassName(el,"show-details")}else{$$(childClass).each(function(item){item.show()});Element.addClassName(el,"show-details")}}var isIE=navigator.appVersion.match(/MSIE/)=="MSIE";if(!window.Varien){var Varien=new Object()}Varien.showLoading=function(){var loader=$("loading-process");loader&&loader.show()};Varien.hideLoading=function(){var loader=$("loading-process");loader&&loader.hide()};Varien.GlobalHandlers={onCreate:function(){Varien.showLoading()},onComplete:function(){if(Ajax.activeRequestCount==0){Varien.hideLoading()}}};Ajax.Responders.register(Varien.GlobalHandlers);Varien.searchForm=Class.create();Varien.searchForm.prototype={initialize:function(form,field,emptyText){this.form=$(form);this.field=$(field);this.emptyText=emptyText;Event.observe(this.form,"submit",this.submit.bind(this));Event.observe(this.field,"focus",this.focus.bind(this));Event.observe(this.field,"blur",this.blur.bind(this));this.blur()},submit:function(event){if(this.field.value==this.emptyText||this.field.value==""){Event.stop(event);return false}return true},focus:function(event){if(this.field.value==this.emptyText){this.field.value=""}},blur:function(event){if(this.field.value==""){this.field.value=this.emptyText}}};Varien.DateElement=Class.create();Varien.DateElement.prototype={initialize:function(type,content,required,format){if(type=="id"){this.day=$(content+"day");this.month=$(content+"month");this.year=$(content+"year");this.full=$(content+"full");this.advice=$(content+"date-advice")}else{if(type=="container"){this.day=content.day;this.month=content.month;this.year=content.year;this.full=content.full;this.advice=content.advice}else{return}}this.required=required;this.format=format;this.day.addClassName("validate-custom");this.day.validate=this.validate.bind(this);this.month.addClassName("validate-custom");this.month.validate=this.validate.bind(this);this.year.addClassName("validate-custom");this.year.validate=this.validate.bind(this);this.setDateRange(false,false);this.year.setAttribute("autocomplete","off");this.advice.hide()},validate:function(){var error=false,day=parseInt(this.day.value,10)||0,month=parseInt(this.month.value,10)||0,year=parseInt(this.year.value,10)||0;if(this.day.value.strip().empty()&&this.month.value.strip().empty()&&this.year.value.strip().empty()){if(this.required){error="This date is a required value."}else{this.full.value=""}}else{if(!day||!month||!year){error="Please enter a valid full date."}else{var date=new Date,countDaysInMonth=0,errorType=null;date.setYear(year);date.setMonth(month-1);date.setDate(32);countDaysInMonth=32-date.getDate();if(!countDaysInMonth||countDaysInMonth>31){countDaysInMonth=31}if(day<1||day>countDaysInMonth){errorType="day";error="Please enter a valid day (1-%1)."}else{if(month<1||month>12){errorType="month";error="Please enter a valid month (1-12)."}else{if(day%10==day){this.day.value="0"+day}if(month%10==month){this.month.value="0"+month}this.full.value=this.format.replace(/%[mb]/i,this.month.value).replace(/%[de]/i,this.day.value).replace(/%y/i,this.year.value);var testFull=this.month.value+"/"+this.day.value+"/"+this.year.value;var test=new Date(testFull);if(isNaN(test)){error="Please enter a valid date."}else{this.setFullDate(test)}}}var valueError=false;if(!error&&!this.validateData()){errorType=this.validateDataErrorType;valueError=this.validateDataErrorText;error=valueError}}}if(error!==false){if(jQuery.mage.__){error=jQuery.mage.__(error)}if(!valueError){this.advice.innerHTML=error.replace("%1",countDaysInMonth)}else{this.advice.innerHTML=this.errorTextModifier(error)}this.advice.show();return false}this.day.removeClassName("validation-failed");this.month.removeClassName("validation-failed");this.year.removeClassName("validation-failed");this.advice.hide();return true},validateData:function(){var year=this.fullDate.getFullYear();var date=new Date;this.curyear=date.getFullYear();return(year>=1900&&year<=this.curyear)},validateDataErrorType:"year",validateDataErrorText:"Please enter a valid year (1900-%1).",errorTextModifier:function(text){return text.replace("%1",this.curyear)},setDateRange:function(minDate,maxDate){this.minDate=minDate;this.maxDate=maxDate},setFullDate:function(date){this.fullDate=date}};Varien.DOB=Class.create();Varien.DOB.prototype={initialize:function(selector,required,format){var el=$$(selector)[0];var container={};container.day=Element.select(el,".dob-day input")[0];container.month=Element.select(el,".dob-month input")[0];container.year=Element.select(el,".dob-year input")[0];container.full=Element.select(el,".dob-full input")[0];container.advice=Element.select(el,".validation-advice")[0];new Varien.DateElement("container",container,required,format)}};Varien.dateRangeDate=Class.create();Varien.dateRangeDate.prototype=Object.extend(new Varien.DateElement(),{validateData:function(){var validate=true;if(this.minDate||this.maxValue){if(this.minDate){this.minDate=new Date(this.minDate);this.minDate.setHours(0);if(isNaN(this.minDate)){this.minDate=new Date("1/1/1900")}validate=validate&&(this.fullDate>=this.minDate)}if(this.maxDate){this.maxDate=new Date(this.maxDate);this.minDate.setHours(0);if(isNaN(this.maxDate)){this.maxDate=new Date()}validate=validate&&(this.fullDate<=this.maxDate)}if(this.maxDate&&this.minDate){this.validateDataErrorText="Please enter a valid date between %s and %s"}else{if(this.maxDate){this.validateDataErrorText="Please enter a valid date less than or equal to %s"}else{if(this.minDate){this.validateDataErrorText="Please enter a valid date equal to or greater than %s"}else{this.validateDataErrorText=""}}}}return validate},validateDataErrorText:"Date should be between %s and %s",errorTextModifier:function(text){if(this.minDate){text=text.sub("%s",this.dateFormat(this.minDate))}if(this.maxDate){text=text.sub("%s",this.dateFormat(this.maxDate))}return text},dateFormat:function(date){return(date.getMonth()+1)+"/"+date.getDate()+"/"+date.getFullYear()}});Varien.FileElement=Class.create();Varien.FileElement.prototype={initialize:function(id){this.fileElement=$(id);this.hiddenElement=$(id+"_value");this.fileElement.observe("change",this.selectFile.bind(this))},selectFile:function(event){this.hiddenElement.value=this.fileElement.getValue()}};Validation.addAllThese([["validate-custom"," ",function(v,elm){return elm.validate()}]]);Element.addMethods({getInnerText:function(element){element=$(element);if(element.innerText&&!Prototype.Browser.Opera){return element.innerText}return element.innerHTML.stripScripts().unescapeHTML().replace(/[\n\r\s]+/g," ").strip()}});function fireEvent(element,event){if(document.createEvent){var evt=document.createEvent("HTMLEvents");evt.initEvent(event,true,true);return element.dispatchEvent(evt)}else{var evt=document.createEventObject();return element.fireEvent("on"+event,evt)}}function modulo(dividend,divisor){var epsilon=divisor/10000;var remainder=dividend%divisor;if(Math.abs(remainder-divisor)<epsilon||Math.abs(remainder)<epsilon){remainder=0}return remainder}if((typeof Range!="undefined")&&!Range.prototype.createContextualFragment){Range.prototype.createContextualFragment=function(html){var frag=document.createDocumentFragment(),div=document.createElement("div");frag.appendChild(div);div.outerHTML=html;return frag}}var byteConvert=function(bytes){if(isNaN(bytes)){return""}var symbols=["bytes","KB","MB","GB","TB","PB","EB","ZB","YB"];var exp=Math.floor(Math.log(bytes)/Math.log(2));if(exp<1){exp=0}var i=Math.floor(exp/10);bytes=bytes/Math.pow(2,10*i);if(bytes.toString().length>bytes.toFixed(2).toString().length){bytes=bytes.toFixed(2)}return bytes+" "+symbols[i]};var SessionError=Class.create();SessionError.prototype={initialize:function(errorText){this.errorText=errorText},toString:function(){return"Session Error:"+this.errorText}};Ajax.Request.addMethods({initialize:function($super,url,options){$super(options);this.transport=Ajax.getTransport();if(!url.match(new RegExp("[?&]isAjax=true",""))){url=url.match(new RegExp("\\?","g"))?url+"&isAjax=true":url+"?isAjax=true"}if(Object.isString(this.options.parameters)&&this.options.parameters.indexOf("form_key=")==-1){this.options.parameters+="&"+Object.toQueryString({form_key:FORM_KEY})}else{if(!this.options.parameters){this.options.parameters={form_key:FORM_KEY}}if(!this.options.parameters.form_key){this.options.parameters.form_key=FORM_KEY}}this.request(url)},respondToReadyState:function(readyState){var state=Ajax.Request.Events[readyState],response=new Ajax.Response(this);if(state=="Complete"){try{this._complete=true;if(response.responseText.isJSON()){var jsonObject=response.responseText.evalJSON();if(jsonObject.ajaxExpired&&jsonObject.ajaxRedirect){window.location.replace(jsonObject.ajaxRedirect);throw new SessionError("session expired")}}(this.options["on"+response.status]||this.options["on"+(this.success()?"Success":"Failure")]||Prototype.emptyFunction)(response,response.headerJSON)}catch(e){this.dispatchException(e);if(e instanceof SessionError){return}}var contentType=response.getHeader("Content-type");if(this.options.evalJS=="force"||(this.options.evalJS&&this.isSameOrigin()&&contentType&&contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))){this.evalResponse()}}try{(this.options["on"+state]||Prototype.emptyFunction)(response,response.headerJSON);Ajax.Responders.dispatch("on"+state,this,response,response.headerJSON)}catch(e){this.dispatchException(e)}if(state=="Complete"){this.transport.onreadystatechange=Prototype.emptyFunction}}});Ajax.Updater.respondToReadyState=Ajax.Request.respondToReadyState;var varienLoader=new Class.create();varienLoader.prototype={initialize:function(caching){this.callback=false;this.cache=$H();this.caching=caching||false;this.url=false},getCache:function(url){if(this.cache.get(url)){return this.cache.get(url)}return false},load:function(url,params,callback){this.url=url;this.callback=callback;if(this.caching){var transport=this.getCache(url);if(transport){this.processResult(transport);return}}if(typeof(params.updaterId)!="undefined"){new varienUpdater(params.updaterId,url,{evalScripts:true,onComplete:this.processResult.bind(this),onFailure:this._processFailure.bind(this)})}else{new Ajax.Request(url,{method:"post",parameters:params||{},onComplete:this.processResult.bind(this),onFailure:this._processFailure.bind(this)})}},_processFailure:function(transport){location.href=BASE_URL},processResult:function(transport){if(this.caching){this.cache.set(this.url,transport)}if(this.callback){this.callback(transport.responseText)}}};if(!window.varienLoaderHandler){var varienLoaderHandler=new Object()}varienLoaderHandler.handler={onCreate:function(request){if(request.options.loaderArea===false){return}jQuery("body").trigger("processStart")},onException:function(transport){jQuery("body").trigger("processStop")},onComplete:function(transport){jQuery("body").trigger("processStop")}};function setLoaderPosition(){var elem=$("loading_mask_loader");if(elem&&Prototype.Browser.IE){var elementDims=elem.getDimensions();var viewPort=document.viewport.getDimensions();var offsets=document.viewport.getScrollOffsets();elem.style.left=Math.floor(viewPort.width/2+offsets.left-elementDims.width/2)+"px";elem.style.top=Math.floor(viewPort.height/2+offsets.top-elementDims.height/2)+"px";elem.style.position="absolute"}}function toggleSelectsUnderBlock(block,flag){if(Prototype.Browser.IE){var selects=document.getElementsByTagName("select");for(var i=0;i<selects.length;i++){if(flag){if(selects[i].needShowOnSuccess){selects[i].needShowOnSuccess=false;selects[i].style.visibility=""}}else{if(Element.visible(selects[i])){selects[i].style.visibility="hidden";selects[i].needShowOnSuccess=true}}}}}Ajax.Responders.register(varienLoaderHandler.handler);var varienUpdater=Class.create(Ajax.Updater,{updateContent:function($super,responseText){if(responseText.isJSON()){var responseJSON=responseText.evalJSON();if(responseJSON.ajaxExpired&&responseJSON.ajaxRedirect){window.location.replace(responseJSON.ajaxRedirect)}}else{$super(responseText)}}});function setLocation(url){window.location.href=url}function confirmSetLocation(message,url){if(confirm(message)){setLocation(url)}return false}function deleteConfirm(message,url){confirmSetLocation(message,url)}function setElementDisable(element,disable){if($(element)){$(element).disabled=disable}}function toggleParentVis(obj){obj=$(obj).parentNode;if(obj.style.display=="none"){obj.style.display=""}else{obj.style.display="none"}}function toggleFieldsetVis(obj){id=obj;obj=$(obj);if(obj.style.display=="none"){obj.style.display=""}else{obj.style.display="none"}obj=obj.parentNode.childElements();for(var i=0;i<obj.length;i++){if(obj[i].id!=undefined&&obj[i].id==id&&obj[(i-1)].classNames()=="entry-edit-head"){if(obj[i-1].style.display=="none"){obj[i-1].style.display=""}else{obj[i-1].style.display="none"}}}}function toggleVis(obj){obj=$(obj);if(obj.style.display=="none"){obj.style.display=""}else{obj.style.display="none"}}function imagePreview(element){if($(element)){var win=window.open("","preview","width=400,height=400,resizable=1,scrollbars=1");win.document.open();win.document.write('<body style="padding:0;margin:0"><img src="'+$(element).src+'" id="image_preview"/></body>');win.document.close();Event.observe(win,"load",function(){var img=win.document.getElementById("image_preview");win.resizeTo(img.width+40,img.height+80)})}}function checkByProductPriceType(elem){if(elem.id=="price_type"){this.productPriceType=elem.value;return false}else{if(elem.id=="price"&&this.productPriceType==0){return false}return true}}Event.observe(window,"load",function(){if($("price_default")&&$("price_default").checked){$("price").disabled="disabled"}});function toggleSeveralValueElements(checkbox,containers,excludedElements,checked){if(containers&&checkbox){if(Object.prototype.toString.call(containers)!="[object Array]"){containers=[containers]}containers.each(function(container){toggleValueElements(checkbox,container,excludedElements,checked)})}}function toggleValueElements(checkbox,container,excludedElements,checked){if(container&&checkbox){var ignoredElements=[checkbox];if(typeof excludedElements!="undefined"){if(Object.prototype.toString.call(excludedElements)!="[object Array]"){excludedElements=[excludedElements]}for(var i=0;i<excludedElements.length;i++){ignoredElements.push(excludedElements[i])}}var elems=Element.select(container,["select","input","textarea","button","img"]).filter(function(el){return(el.readAttribute("type")!="hidden")});var isDisabled=(checked!=undefined?checked:checkbox.checked);elems.each(function(elem){if(checkByProductPriceType(elem)){var i=ignoredElements.length;while(i--&&elem!=ignoredElements[i]){}if(i!=-1){return}elem.disabled=isDisabled;if(isDisabled){elem.addClassName("disabled")}else{elem.removeClassName("disabled")}if(elem.nodeName.toLowerCase()=="img"){isDisabled?elem.hide():elem.show()}}})}}function submitAndReloadArea(area,url){if($(area)){var fields=$(area).select("input","select","textarea");var data=Form.serializeElements(fields,true);url=url+(url.match(new RegExp("\\?"))?"&isAjax=true":"?isAjax=true");new Ajax.Request(url,{parameters:$H(data),loaderArea:area,onSuccess:function(transport){try{if(transport.responseText.isJSON()){var response=transport.responseText.evalJSON();if(response.error){alert(response.message)}if(response.ajaxExpired&&response.ajaxRedirect){setLocation(response.ajaxRedirect)}}else{$(area).update(transport.responseText)}}catch(e){$(area).update(transport.responseText)}}})}}function syncOnchangeValue(baseElem,distElem){var compare={baseElem:baseElem,distElem:distElem};Event.observe(baseElem,"change",function(){if($(this.baseElem)&&$(this.distElem)){$(this.distElem).value=$(this.baseElem).value}}.bind(compare))}function updateElementAtCursor(el,value,win){if(win==undefined){win=window.self}if(document.selection){el.focus();sel=win.document.selection.createRange();sel.text=value}else{if(el.selectionStart||el.selectionStart=="0"){var startPos=el.selectionStart;var endPos=el.selectionEnd;el.value=el.value.substring(0,startPos)+value+el.value.substring(endPos,el.value.length)}else{el.value+=value}}}function firebugEnabled(){if(window.console&&window.console.firebug){return true}return false}function disableElement(elem){elem.disabled=true;elem.addClassName("disabled")}function enableElement(elem){elem.disabled=false;elem.removeClassName("disabled")}function disableElements(search){$$("."+search).each(disableElement)}function enableElements(search){$$("."+search).each(enableElement)}var Cookie={all:function(){var pairs=document.cookie.split(";");var cookies={};pairs.each(function(item,index){var pair=item.strip().split("=");cookies[unescape(pair[0])]=unescape(pair[1])});return cookies},read:function(cookieName){var cookies=this.all();if(cookies[cookieName]){return cookies[cookieName]}return null},write:function(cookieName,cookieValue,cookieLifeTime){var expires="";if(cookieLifeTime){var date=new Date();date.setTime(date.getTime()+(cookieLifeTime*1000));expires="; expires="+date.toGMTString()}var urlPath="/"+BASE_URL.split("/").slice(3).join("/");document.cookie=escape(cookieName)+"="+escape(cookieValue)+expires+"; path="+urlPath},clear:function(cookieName){this.write(cookieName,"",-1)}};var Fieldset={cookiePrefix:"fh-",applyCollapse:function(containerId){if($(containerId+"-state")){collapsed=$(containerId+"-state").value==1?0:1}else{collapsed=$(containerId+"-head").collapsed}if(collapsed==1||collapsed===undefined){$(containerId+"-head").removeClassName("open");if($(containerId+"-head").up(".section-config")){$(containerId+"-head").up(".section-config").removeClassName("active")}$(containerId).hide()}else{$(containerId+"-head").addClassName("open");if($(containerId+"-head").up(".section-config")){$(containerId+"-head").up(".section-config").addClassName("active")}$(containerId).show()}},toggleCollapse:function(containerId,saveThroughAjax){if($(containerId+"-state")){collapsed=$(containerId+"-state").value==1?0:1}else{collapsed=$(containerId+"-head").collapsed}if(collapsed==1||collapsed===undefined){if($(containerId+"-state")){$(containerId+"-state").value=1}$(containerId+"-head").collapsed=0}else{if($(containerId+"-state")){$(containerId+"-state").value=0}$(containerId+"-head").collapsed=1}this.applyCollapse(containerId);if(typeof saveThroughAjax!="undefined"){this.saveState(saveThroughAjax,{container:containerId,value:$(containerId+"-state").value})}},addToPrefix:function(value){this.cookiePrefix+=value+"-"},saveState:function(url,parameters){new Ajax.Request(url,{method:"get",parameters:Object.toQueryString(parameters),loaderArea:false})}};var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(input){var output="";var chr1,chr2,chr3,enc1,enc2,enc3,enc4;var i=0;if(typeof window.btoa==="function"){return window.btoa(input)}input=Base64._utf8_encode(input);while(i<input.length){chr1=input.charCodeAt(i++);chr2=input.charCodeAt(i++);chr3=input.charCodeAt(i++);enc1=chr1>>2;enc2=((chr1&3)<<4)|(chr2>>4);enc3=((chr2&15)<<2)|(chr3>>6);enc4=chr3&63;if(isNaN(chr2)){enc3=enc4=64}else{if(isNaN(chr3)){enc4=64}}output=output+this._keyStr.charAt(enc1)+this._keyStr.charAt(enc2)+this._keyStr.charAt(enc3)+this._keyStr.charAt(enc4)}return output},decode:function(input){var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;if(typeof window.atob==="function"){return window.atob(input)}input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(i<input.length){enc1=this._keyStr.indexOf(input.charAt(i++));enc2=this._keyStr.indexOf(input.charAt(i++));enc3=this._keyStr.indexOf(input.charAt(i++));enc4=this._keyStr.indexOf(input.charAt(i++));chr1=(enc1<<2)|(enc2>>4);chr2=((enc2&15)<<4)|(enc3>>2);chr3=((enc3&3)<<6)|enc4;output=output+String.fromCharCode(chr1);if(enc3!=64){output=output+String.fromCharCode(chr2)}if(enc4!=64){output=output+String.fromCharCode(chr3)}}output=Base64._utf8_decode(output);return output},mageEncode:function(input){return this.encode(input).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,",")},mageDecode:function(output){output=output.replace(/\-/g,"+").replace(/_/g,"/").replace(/,/g,"=");return this.decode(output)},idEncode:function(input){return this.encode(input).replace(/\+/g,":").replace(/\//g,"_").replace(/=/g,"-")},idDecode:function(output){output=output.replace(/\-/g,"=").replace(/_/g,"/").replace(/\:/g,"+");return this.decode(output)},_utf8_encode:function(string){string=string.replace(/\r\n/g,"\n");var utftext="";for(var n=0;n<string.length;n++){var c=string.charCodeAt(n);if(c<128){utftext+=String.fromCharCode(c)}else{if((c>127)&&(c<2048)){utftext+=String.fromCharCode((c>>6)|192);utftext+=String.fromCharCode((c&63)|128)}else{utftext+=String.fromCharCode((c>>12)|224);utftext+=String.fromCharCode(((c>>6)&63)|128);utftext+=String.fromCharCode((c&63)|128)}}}return utftext},_utf8_decode:function(utftext){var string="";var i=0;var c=c1=c2=0;while(i<utftext.length){c=utftext.charCodeAt(i);if(c<128){string+=String.fromCharCode(c);i++}else{if((c>191)&&(c<224)){c2=utftext.charCodeAt(i+1);string+=String.fromCharCode(((c&31)<<6)|(c2&63));i+=2}else{c2=utftext.charCodeAt(i+1);c3=utftext.charCodeAt(i+2);string+=String.fromCharCode(((c&15)<<12)|((c2&63)<<6)|(c3&63));i+=3}}}return string}};function sortNumeric(val1,val2){return val1-val2}; \ No newline at end of file diff --git a/lib/web/lib/boxover.js b/lib/web/lib/boxover.js deleted file mode 100644 index b9cb869a95f7dbfc844ddb4519802c22f0a270ba..0000000000000000000000000000000000000000 --- a/lib/web/lib/boxover.js +++ /dev/null @@ -1,372 +0,0 @@ -/* --- BoxOver --- -/* --- v 2.1 17th June 2006 -By Oliver Bryant with help of Matthew Tagg -http://boxover.swazz.org */ - -if (typeof document.attachEvent!='undefined') { - window.attachEvent('onload',init); - document.attachEvent('onmousemove',moveMouse); - document.attachEvent('onclick',checkMove); } -else { - window.addEventListener('load',init,false); - document.addEventListener('mousemove',moveMouse,false); - document.addEventListener('click',checkMove,false); -} - -var oDv=document.createElement("div"); -var dvHdr=document.createElement("div"); -var dvBdy=document.createElement("div"); -var windowlock,boxMove,fixposx,fixposy,lockX,lockY,fixx,fixy,ox,oy,boxLeft,boxRight,boxTop,boxBottom,evt,mouseX,mouseY,boxOpen,totalScrollTop,totalScrollLeft; -boxOpen=false; -ox=10; -oy=10; -lockX=0; -lockY=0; - -function init() { - oDv.appendChild(dvHdr); - oDv.appendChild(dvBdy); - oDv.style.position="absolute"; - oDv.style.visibility='hidden'; - document.body.appendChild(oDv); -} - -function defHdrStyle() { - dvHdr.innerHTML='<img style="vertical-align:middle" src="info.gif"> '+dvHdr.innerHTML; - dvHdr.style.fontWeight='bold'; - dvHdr.style.width='150px'; - dvHdr.style.fontFamily='arial'; - dvHdr.style.border='1px solid #A5CFE9'; - dvHdr.style.padding='3'; - dvHdr.style.fontSize='11'; - dvHdr.style.color='#4B7A98'; - dvHdr.style.background='#D5EBF9'; - dvHdr.style.filter='alpha(opacity=85)'; // IE - dvHdr.style.opacity='0.85'; // FF -} - -function defBdyStyle() { - dvBdy.style.borderBottom='1px solid #A5CFE9'; - dvBdy.style.borderLeft='1px solid #A5CFE9'; - dvBdy.style.borderRight='1px solid #A5CFE9'; - dvBdy.style.width='150px'; - dvBdy.style.fontFamily='arial'; - dvBdy.style.fontSize='11'; - dvBdy.style.padding='3'; - dvBdy.style.color='#1B4966'; - dvBdy.style.background='#FFFFFF'; - dvBdy.style.filter='alpha(opacity=85)'; // IE - dvBdy.style.opacity='0.85'; // FF -} - -function checkElemBO(txt) { -if (!txt || typeof(txt) != 'string') return false; -if ((txt.indexOf('header')>-1)&&(txt.indexOf('body')>-1)&&(txt.indexOf('[')>-1)&&(txt.indexOf('[')>-1)) - return true; -else - return false; -} - -function scanBO(curNode) { - if (checkElemBO(curNode.title)) { - curNode.boHDR=getParam('header',curNode.title); - curNode.boBDY=getParam('body',curNode.title); - curNode.boCSSBDY=getParam('cssbody',curNode.title); - curNode.boCSSHDR=getParam('cssheader',curNode.title); - curNode.IEbugfix=(getParam('hideselects',curNode.title)=='on')?true:false; - curNode.fixX=parseInt(getParam('fixedrelx',curNode.title)); - curNode.fixY=parseInt(getParam('fixedrely',curNode.title)); - curNode.absX=parseInt(getParam('fixedabsx',curNode.title)); - curNode.absY=parseInt(getParam('fixedabsy',curNode.title)); - curNode.offY=(getParam('offsety',curNode.title)!='')?parseInt(getParam('offsety',curNode.title)):10; - curNode.offX=(getParam('offsetx',curNode.title)!='')?parseInt(getParam('offsetx',curNode.title)):10; - curNode.fade=(getParam('fade',curNode.title)=='on')?true:false; - curNode.fadespeed=(getParam('fadespeed',curNode.title)!='')?getParam('fadespeed',curNode.title):0.04; - curNode.delay=(getParam('delay',curNode.title)!='')?parseInt(getParam('delay',curNode.title)):0; - if (getParam('requireclick',curNode.title)=='on') { - curNode.requireclick=true; - document.all?curNode.attachEvent('onclick',showHideBox):curNode.addEventListener('click',showHideBox,false); - document.all?curNode.attachEvent('onmouseover',hideBox):curNode.addEventListener('mouseover',hideBox,false); - } - else {// Note : if requireclick is on the stop clicks are ignored - if (getParam('doubleclickstop',curNode.title)!='off') { - document.all?curNode.attachEvent('ondblclick',pauseBox):curNode.addEventListener('dblclick',pauseBox,false); - } - if (getParam('singleclickstop',curNode.title)=='on') { - document.all?curNode.attachEvent('onclick',pauseBox):curNode.addEventListener('click',pauseBox,false); - } - } - curNode.windowLock=getParam('windowlock',curNode.title).toLowerCase()=='off'?false:true; - curNode.title=''; - curNode.hasbox=1; - } - else - curNode.hasbox=2; -} - - -function getParam(param,list) { - var reg = new RegExp('([^a-zA-Z]' + param + '|^' + param + ')\\s*=\\s*\\[\\s*(((\\[\\[)|(\\]\\])|([^\\]\\[]))*)\\s*\\]'); - var res = reg.exec(list); - var returnvar; - if(res) - return res[2].replace('[[','[').replace(']]',']'); - else - return ''; -} - -function Left(elem){ - var x=0; - if (elem.calcLeft) - return elem.calcLeft; - var oElem=elem; - while(elem){ - if ((elem.currentStyle)&& (!isNaN(parseInt(elem.currentStyle.borderLeftWidth)))&&(x!=0)) - x+=parseInt(elem.currentStyle.borderLeftWidth); - x+=elem.offsetLeft; - elem=elem.offsetParent; - } - oElem.calcLeft=x; - return x; - } - -function Top(elem){ - var x=0; - if (elem.calcTop) - return elem.calcTop; - var oElem=elem; - while(elem){ - if ((elem.currentStyle)&& (!isNaN(parseInt(elem.currentStyle.borderTopWidth)))&&(x!=0)) - x+=parseInt(elem.currentStyle.borderTopWidth); - x+=elem.offsetTop; - elem=elem.offsetParent; - } - oElem.calcTop=x; - return x; - -} - -var ah,ab; -function applyStyles() { - if(ab) - oDv.removeChild(dvBdy); - if (ah) - oDv.removeChild(dvHdr); - dvHdr=document.createElement("div"); - dvBdy=document.createElement("div"); - CBE.boCSSBDY?dvBdy.className=CBE.boCSSBDY:defBdyStyle(); - CBE.boCSSHDR?dvHdr.className=CBE.boCSSHDR:defHdrStyle(); - dvHdr.innerHTML=CBE.boHDR; - dvBdy.innerHTML=CBE.boBDY; - ah=false; - ab=false; - if (CBE.boHDR!='') { - oDv.appendChild(dvHdr); - ah=true; - } - if (CBE.boBDY!=''){ - oDv.appendChild(dvBdy); - ab=true; - } -} - -var CSE,iterElem,LSE,CBE,LBE, totalScrollLeft, totalScrollTop, width, height ; -var ini=false; - -// Customised function for inner window dimension -function SHW() { - if (document.body && (document.body.clientWidth !=0)) { - width=document.body.clientWidth; - height=document.body.clientHeight; - } - if (document.documentElement && (document.documentElement.clientWidth!=0) && (document.body.clientWidth + 20 >= document.documentElement.clientWidth)) { - width=document.documentElement.clientWidth; - height=document.documentElement.clientHeight; - } - return [width,height]; -} - - -var ID=null; -function moveMouse(e) { - //boxMove=true; - e?evt=e:evt=event; - - CSE=evt.target?evt.target:evt.srcElement; - - if (!CSE.hasbox) { - // Note we need to scan up DOM here, some elements like TR don't get triggered as srcElement - iElem=CSE; - while ((iElem.parentNode) && (!iElem.hasbox)) { - scanBO(iElem); - iElem=iElem.parentNode; - } - } - - if ((CSE!=LSE)&&(!isChild(CSE,dvHdr))&&(!isChild(CSE,dvBdy))){ - if (!CSE.boxItem) { - iterElem=CSE; - while ((iterElem.hasbox==2)&&(iterElem.parentNode)) - iterElem=iterElem.parentNode; - CSE.boxItem=iterElem; - } - iterElem=CSE.boxItem; - if (CSE.boxItem&&(CSE.boxItem.hasbox==1)) { - LBE=CBE; - CBE=iterElem; - if (CBE!=LBE) { - applyStyles(); - if (!CBE.requireclick) - if (CBE.fade) { - if (ID!=null) - clearTimeout(ID); - ID=setTimeout("fadeIn("+CBE.fadespeed+")",CBE.delay); - } - else { - if (ID!=null) - clearTimeout(ID); - COL=1; - ID=setTimeout("oDv.style.visibility='visible';ID=null;",CBE.delay); - } - if (CBE.IEbugfix) {hideSelects();} - fixposx=!isNaN(CBE.fixX)?Left(CBE)+CBE.fixX:CBE.absX; - fixposy=!isNaN(CBE.fixY)?Top(CBE)+CBE.fixY:CBE.absY; - lockX=0; - lockY=0; - boxMove=true; - ox=CBE.offX?CBE.offX:10; - oy=CBE.offY?CBE.offY:10; - } - } - else if (!isChild(CSE,dvHdr) && !isChild(CSE,dvBdy) && (boxMove)) { - // The conditional here fixes flickering between tables cells. - if ((!isChild(CBE,CSE)) || (CSE.tagName!='TABLE')) { - CBE=null; - if (ID!=null) - clearTimeout(ID); - fadeOut(); - showSelects(); - } - } - LSE=CSE; - } - else if (((isChild(CSE,dvHdr) || isChild(CSE,dvBdy))&&(boxMove))) { - totalScrollLeft=0; - totalScrollTop=0; - - iterElem=CSE; - while(iterElem) { - if(!isNaN(parseInt(iterElem.scrollTop))) - totalScrollTop+=parseInt(iterElem.scrollTop); - if(!isNaN(parseInt(iterElem.scrollLeft))) - totalScrollLeft+=parseInt(iterElem.scrollLeft); - iterElem=iterElem.parentNode; - } - if (CBE!=null) { - boxLeft=Left(CBE)-totalScrollLeft; - boxRight=parseInt(Left(CBE)+CBE.offsetWidth)-totalScrollLeft; - boxTop=Top(CBE)-totalScrollTop; - boxBottom=parseInt(Top(CBE)+CBE.offsetHeight)-totalScrollTop; - doCheck(); - } - } - - if (boxMove&&CBE) { - // This added to alleviate bug in IE6 w.r.t DOCTYPE - bodyScrollTop=document.documentElement&&document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop; - bodyScrollLet=document.documentElement&&document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft; - mouseX=evt.pageX?evt.pageX-bodyScrollLet:evt.clientX-document.body.clientLeft; - mouseY=evt.pageY?evt.pageY-bodyScrollTop:evt.clientY-document.body.clientTop; - if ((CBE)&&(CBE.windowLock)) { - mouseY < -oy?lockY=-mouseY-oy:lockY=0; - mouseX < -ox?lockX=-mouseX-ox:lockX=0; - mouseY > (SHW()[1]-oDv.offsetHeight-oy)?lockY=-mouseY+SHW()[1]-oDv.offsetHeight-oy:lockY=lockY; - mouseX > (SHW()[0]-dvBdy.offsetWidth-ox)?lockX=-mouseX-ox+SHW()[0]-dvBdy.offsetWidth:lockX=lockX; - } - oDv.style.left=((fixposx)||(fixposx==0))?fixposx:bodyScrollLet+mouseX+ox+lockX+"px"; - oDv.style.top=((fixposy)||(fixposy==0))?fixposy:bodyScrollTop+mouseY+oy+lockY+"px"; - - } -} - -function doCheck() { - if ( (mouseX < boxLeft) || (mouseX >boxRight) || (mouseY < boxTop) || (mouseY > boxBottom)) { - if (!CBE.requireclick) - fadeOut(); - if (CBE.IEbugfix) {showSelects();} - CBE=null; - } -} - -function pauseBox(e) { - e?evt=e:evt=event; - boxMove=false; - evt.cancelBubble=true; -} - -function showHideBox(e) { - oDv.style.visibility=(oDv.style.visibility!='visible')?'visible':'hidden'; -} - -function hideBox(e) { - oDv.style.visibility='hidden'; -} - -var COL=0; -var stopfade=false; -function fadeIn(fs) { - ID=null; - COL=0; - oDv.style.visibility='visible'; - fadeIn2(fs); -} - -function fadeIn2(fs) { - COL=COL+fs; - COL=(COL>1)?1:COL; - oDv.style.filter='alpha(opacity='+parseInt(100*COL)+')'; - oDv.style.opacity=COL; - if (COL<1) - setTimeout("fadeIn2("+fs+")",20); -} - - -function fadeOut() { - oDv.style.visibility='hidden'; - -} - -function isChild(s,d) { - while(s) { - if (s==d) - return true; - s=s.parentNode; - } - return false; -} - -var cSrc; -function checkMove(e) { - e?evt=e:evt=event; - cSrc=evt.target?evt.target:evt.srcElement; - if ((!boxMove)&&(!isChild(cSrc,oDv))) { - fadeOut(); - if (CBE&&CBE.IEbugfix) {showSelects();} - boxMove=true; - CBE=null; - } -} - -function showSelects(){ - var elements = document.getElementsByTagName("select"); - for (i=0;i< elements.length;i++){ - elements[i].style.visibility='visible'; - } -} - -function hideSelects(){ - var elements = document.getElementsByTagName("select"); - for (i=0;i< elements.length;i++){ - elements[i].style.visibility='hidden'; - } -} \ No newline at end of file diff --git a/lib/web/lib/ds-sleight.js b/lib/web/lib/ds-sleight.js deleted file mode 100644 index b43be15eddca2917ba7be92e0ed763af9e041819..0000000000000000000000000000000000000000 --- a/lib/web/lib/ds-sleight.js +++ /dev/null @@ -1,38 +0,0 @@ -// Universal transparent-PNG enabler for MSIE/Win 5.5+ -// http://dsandler.org -// From original code: http://www.youngpup.net/?request=/snippets/sleight.xml -// and background-image code: http://www.allinthehead.com/retro/69 -// also: -// * use sizingMethod=crop to avoid scaling PNGs (who would do such a thing?) -// * only do this once, to make it compatible with CSS rollovers - -if (navigator.platform == "Win32" && navigator.appName == "Microsoft Internet Explorer" && window.attachEvent) { - window.attachEvent("onload", enableAlphaImages); -} - -function enableAlphaImages(){ - var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, ''); - var itsAllGood = (rslt != null && Number(rslt[1]) >= 5.5); - if (itsAllGood) { - for (var i=0; i<document.all.length; i++){ - var obj = document.all[i]; - var bg = obj.currentStyle.backgroundImage; - var img = document.images[i]; - if (bg && bg.match(/\.png/i) != null) { - var img = bg.substring(5,bg.length-2); - var offset = obj.style["background-position"]; - obj.style.filter = - "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+img+"', sizingMethod='crop')"; - obj.style.backgroundImage = "url('"+BLANK_IMG+"')"; - obj.style["background-position"] = offset; // reapply - } else if (img && img.src.match(/\.png$/i) != null) { - var src = img.src; - img.style.width = img.width + "px"; - img.style.height = img.height + "px"; - img.style.filter = - "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+src+"', sizingMethod='crop')" - img.src = BLANK_IMG; - } - } - } -} \ No newline at end of file diff --git a/lib/web/mage/adminhtml/browser.js b/lib/web/mage/adminhtml/browser.js index b4fc65566ca3050b1c0d0ac434a7fc34710cfe2e..3e9a022c5f33b42cbf8a19c9a361f93062412cc1 100644 --- a/lib/web/mage/adminhtml/browser.js +++ b/lib/web/mage/adminhtml/browser.js @@ -5,10 +5,11 @@ /*jshint browser:true jquery:true*/ define([ "jquery", + "tinymce", "jquery/ui", "jquery/jstree/jquery.jstree", "mage/mage" -], function($){ +], function($, tinyMCE){ MediabrowserUtility = { windowId: 'modal_dialog_message', diff --git a/lib/web/mage/adminhtml/form.js b/lib/web/mage/adminhtml/form.js index e266ece372ac4c8abda7a7b74b2b582eeffe1ed8..104125ffa48ce4a0d1ba2e2e91612dc3225be12a 100644 --- a/lib/web/mage/adminhtml/form.js +++ b/lib/web/mage/adminhtml/form.js @@ -309,62 +309,6 @@ Event.pointerY = function(event){ } } -SelectUpdater = Class.create(); -SelectUpdater.prototype = { - initialize: function (firstSelect, secondSelect, selectFirstMessage, noValuesMessage, values, selected) - { - this.first = $(firstSelect); - this.second = $(secondSelect); - this.message = selectFirstMessage; - this.values = values; - this.noMessage = noValuesMessage; - this.selected = selected; - - this.update(); - - Event.observe(this.first, 'change', this.update.bind(this)); - }, - - update: function() - { - this.second.length = 0; - this.second.value = ''; - - if (this.first.value && this.values[this.first.value]) { - for (optionValue in this.values[this.first.value]) { - optionTitle = this.values[this.first.value][optionValue]; - - this.addOption(this.second, optionValue, optionTitle); - } - this.second.disabled = false; - } else if (this.first.value && !this.values[this.first.value]) { - this.addOption(this.second, '', this.noMessage); - } else { - this.addOption(this.second, '', this.message); - this.second.disabled = true; - } - }, - - addOption: function(select, value, text) - { - option = document.createElement('OPTION'); - option.value = value; - option.text = text; - - if (this.selected && option.value == this.selected) { - option.selected = true; - this.selected = false; - } - - if (select.options.add) { - select.options.add(option); - } else { - select.appendChild(option); - } - } -} - - /** * Observer that watches for dependent form elements * If an element depends on 1 or more of other elements, it should show up only when all of them gain specified values diff --git a/lib/web/mage/adminhtml/tabs.js b/lib/web/mage/adminhtml/tabs.js deleted file mode 100644 index 35bc76cd9fc4010921c08f9f0d6a0b4069e88ba2..0000000000000000000000000000000000000000 --- a/lib/web/mage/adminhtml/tabs.js +++ /dev/null @@ -1,271 +0,0 @@ -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ -define([ - 'jquery', - 'prototype', - 'mage/adminhtml/events' -], function(jQuery){ - - varienTabs = new Class.create(); - - varienTabs.prototype = { - initialize : function(containerId, destElementId, activeTabId, shadowTabs){ - this.containerId = containerId; - this.destElementId = destElementId; - this.activeTab = null; - - this.tabOnClick = this.tabMouseClick.bindAsEventListener(this); - - this.tabs = $$('#'+this.containerId+' li a.tab-item-link'); - - this.hideAllTabsContent(); - for (var tab=0; tab<this.tabs.length; tab++) { - Event.observe(this.tabs[tab],'click',this.tabOnClick); - // move tab contents to destination element - if($(this.destElementId)){ - var tabContentElement = $(this.getTabContentElementId(this.tabs[tab])); - if(tabContentElement && tabContentElement.parentNode.id != this.destElementId){ - $(this.destElementId).appendChild(tabContentElement); - tabContentElement.container = this; - tabContentElement.statusBar = this.tabs[tab]; - tabContentElement.tabObject = this.tabs[tab]; - this.tabs[tab].contentMoved = true; - this.tabs[tab].container = this; - this.tabs[tab].show = function(){ - this.container.showTabContent(this); - } - if(varienGlobalEvents){ - varienGlobalEvents.fireEvent('moveTab', {tab:this.tabs[tab]}); - } - } - } - /* - // this code is pretty slow in IE, so lets do it in tabs*.phtml - // mark ajax tabs as not loaded - if (Element.hasClassName($(this.tabs[tab].id), 'ajax')) { - Element.addClassName($(this.tabs[tab].id), 'notloaded'); - } - */ - // bind shadow tabs - if (this.tabs[tab].id && shadowTabs && shadowTabs[this.tabs[tab].id]) { - this.tabs[tab].shadowTabs = shadowTabs[this.tabs[tab].id]; - } - } - - this.displayFirst = activeTabId; - Event.observe(window,'load',this.moveTabContentInDest.bind(this)); - Event.observe(window,'load',this.bindOnbeforeSubmit.bind(this)); - Event.observe(window,'load',this.bindOnInvalid.bind(this)); - }, - - bindOnInvalid: function() { - jQuery.each(this.tabs, jQuery.proxy(function(i, tab) { - jQuery('#' + this.getTabContentElementId(tab)) - .on('highlight.validate', function() { - jQuery(tab).addClass('error').find('.error').show(); - }) - .on('focusin', jQuery.proxy(function() { - this.showTabContentImmediately(tab); - }, this)); - }, this)); - }, - - bindOnbeforeSubmit: function() { - jQuery('#' + this.destElementId).on('beforeSubmit', jQuery.proxy(function(e, data) { - var tabsIdValue = this.activeTab.id; - if (this.tabsBlockPrefix) { - if (this.activeTab.id.startsWith(this.tabsBlockPrefix)) { - tabsIdValue = tabsIdValue.substr(this.tabsBlockPrefix.length); - } - } - jQuery(this.tabs).removeClass('error'); - var options = {action: {args: {}}}; - options.action.args[this.tabIdArgument || 'tab'] = tabsIdValue; - data = data ? jQuery.extend(data, options) : options; - }, this)); - }, - - setSkipDisplayFirstTab : function(){ - this.displayFirst = null; - }, - - moveTabContentInDest : function(){ - for(var tab=0; tab<this.tabs.length; tab++){ - if($(this.destElementId) && !this.tabs[tab].contentMoved){ - var tabContentElement = $(this.getTabContentElementId(this.tabs[tab])); - if(tabContentElement && tabContentElement.parentNode.id != this.destElementId){ - $(this.destElementId).appendChild(tabContentElement); - tabContentElement.container = this; - tabContentElement.statusBar = this.tabs[tab]; - tabContentElement.tabObject = this.tabs[tab]; - this.tabs[tab].container = this; - this.tabs[tab].show = function(){ - this.container.showTabContent(this); - } - if(varienGlobalEvents){ - varienGlobalEvents.fireEvent('moveTab', {tab:this.tabs[tab]}); - } - } - } - } - if (this.displayFirst) { - this.showTabContent($(this.displayFirst)); - this.displayFirst = null; - } - }, - - getTabContentElementId : function(tab){ - if(tab){ - return tab.id+'_content'; - } - return false; - }, - - tabMouseClick : function(event) { - var tab = Event.findElement(event, 'a'); - - // go directly to specified url or switch tab - if ((tab.href.indexOf('#') != tab.href.length-1) - && !(Element.hasClassName(tab, 'ajax')) - ) { - location.href = tab.href; - } - else { - this.showTabContent(tab); - } - Event.stop(event); - }, - - hideAllTabsContent : function(){ - for(var tab in this.tabs){ - this.hideTabContent(this.tabs[tab]); - } - }, - - // show tab, ready or not - showTabContentImmediately : function(tab) { - this.hideAllTabsContent(); - var tabContentElement = $(this.getTabContentElementId(tab)); - if (tabContentElement) { - Element.show(tabContentElement); - Element.addClassName(tab, 'active'); - // load shadow tabs, if any - if (tab.shadowTabs && tab.shadowTabs.length) { - for (var k in tab.shadowTabs) { - this.loadShadowTab($(tab.shadowTabs[k])); - } - } - if (!Element.hasClassName(tab, 'ajax only')) { - Element.removeClassName(tab, 'notloaded'); - } - this.activeTab = tab; - } - if (varienGlobalEvents) { - varienGlobalEvents.fireEvent('showTab', {tab:tab}); - } - }, - - // the lazy show tab method - showTabContent : function(tab) { - var tabContentElement = $(this.getTabContentElementId(tab)); - if (tabContentElement) { - if (this.activeTab != tab) { - if (varienGlobalEvents) { - var defaultTab = this.tabs[0]; - var eventData = { - from: this.activeTab ? this.activeTab.getAttribute('id') : null, - to: tab ? tab.getAttribute('id') : null, - first: defaultTab && tab && tab.getAttribute('id') == defaultTab.getAttribute('id') - }; - if (varienGlobalEvents.fireEvent('tabChangeBefore', eventData) === false) { - return; - }; - } - } - // wait for ajax request, if defined - var isAjax = Element.hasClassName(tab, 'ajax'); - var isEmpty = tabContentElement.innerHTML=='' && tab.href.indexOf('#')!=tab.href.length-1; - var isNotLoaded = Element.hasClassName(tab, 'notloaded'); - - if ( isAjax && (isEmpty || isNotLoaded) ) - { - new Ajax.Request(tab.href, { - parameters: {form_key: FORM_KEY}, - evalScripts: true, - onSuccess: function(transport) { - try { - if (transport.responseText.isJSON()) { - var response = transport.responseText.evalJSON() - if (response.error) { - alert(response.message); - } - if(response.ajaxExpired && response.ajaxRedirect) { - setLocation(response.ajaxRedirect); - } - } else { - $(tabContentElement.id).update(transport.responseText); - this.showTabContentImmediately(tab) - } - } - catch (e) { - $(tabContentElement.id).update(transport.responseText); - this.showTabContentImmediately(tab) - } - }.bind(this) - }); - } - else { - this.showTabContentImmediately(tab); - } - } - }, - - loadShadowTab : function(tab) { - var tabContentElement = $(this.getTabContentElementId(tab)); - if (tabContentElement && Element.hasClassName(tab, 'ajax') && Element.hasClassName(tab, 'notloaded')) { - new Ajax.Request(tab.href, { - parameters: {form_key: FORM_KEY}, - evalScripts: true, - onSuccess: function(transport) { - try { - if (transport.responseText.isJSON()) { - var response = transport.responseText.evalJSON() - if (response.error) { - alert(response.message); - } - if(response.ajaxExpired && response.ajaxRedirect) { - setLocation(response.ajaxRedirect); - } - } else { - $(tabContentElement.id).update(transport.responseText); - if (!Element.hasClassName(tab, 'ajax only')) { - Element.removeClassName(tab, 'notloaded'); - } - } - } - catch (e) { - $(tabContentElement.id).update(transport.responseText); - if (!Element.hasClassName(tab, 'ajax only')) { - Element.removeClassName(tab, 'notloaded'); - } - } - }.bind(this) - }); - } - }, - - hideTabContent : function(tab){ - var tabContentElement = $(this.getTabContentElementId(tab)); - if($(this.destElementId) && tabContentElement){ - Element.hide(tabContentElement); - Element.removeClassName(tab, 'active'); - } - if(varienGlobalEvents){ - varienGlobalEvents.fireEvent('hideTab', {tab:tab}); - } - } - }; - -}); \ No newline at end of file diff --git a/lib/web/mage/adminhtml/wysiwyg/tiny_mce/setup.js b/lib/web/mage/adminhtml/wysiwyg/tiny_mce/setup.js index 4923b76d81d19e0f47e8aa7c00c7161f5fdeb8af..03b3b5b33ca05aacb9b55c07da3a31b0087246c6 100644 --- a/lib/web/mage/adminhtml/wysiwyg/tiny_mce/setup.js +++ b/lib/web/mage/adminhtml/wysiwyg/tiny_mce/setup.js @@ -5,11 +5,12 @@ define([ 'jquery', 'underscore', + 'tinymce', 'mage/translate', 'prototype', 'mage/adminhtml/events', 'mage/adminhtml/browser' -], function(jQuery, _) { +], function(jQuery, _, tinyMCE) { tinyMceWysiwygSetup = Class.create(); @@ -36,12 +37,12 @@ define([ setup: function(mode) { if (this.config.widget_plugin_src) { - tinymce.PluginManager.load('magentowidget', this.config.widget_plugin_src); + tinyMCE.PluginManager.load('magentowidget', this.config.widget_plugin_src); } if (this.config.plugins) { this.config.plugins.each(function(plugin) { - tinymce.PluginManager.load(plugin.name, plugin.src); + tinyMCE.PluginManager.load(plugin.name, plugin.src); }); } diff --git a/lib/web/mage/adminhtml/wysiwyg/widget.js b/lib/web/mage/adminhtml/wysiwyg/widget.js index fd643d4674429687040ab27b8114c580d1171764..b963ead4648fda6996bdfc1158fc804a253e571c 100644 --- a/lib/web/mage/adminhtml/wysiwyg/widget.js +++ b/lib/web/mage/adminhtml/wysiwyg/widget.js @@ -5,13 +5,14 @@ define([ "jquery", + "tinymce", "jquery/ui", "mage/translate", "mage/mage", "mage/validation", "mage/adminhtml/events", "prototype" -], function(jQuery){ +], function(jQuery, tinyMCE){ var widgetTools = { getDivHtml: function(id, html) { diff --git a/lib/web/mage/apply/main.js b/lib/web/mage/apply/main.js index 3c42cc06c0ea5fac0242448705e5c7f07b2ddd75..d76848c0eaca3b349c2b4e9ddcf3551d9079fd38 100644 --- a/lib/web/mage/apply/main.js +++ b/lib/web/mage/apply/main.js @@ -7,7 +7,7 @@ define([ 'underscore', './registry', 'require' -], function($, _, registry, require) { +], function ($, _, registry, require) { 'use strict'; var dataAttr = 'data-mage-init', @@ -20,14 +20,13 @@ define([ * @param {String} component - Components' path. */ function init(el, config, component) { - if (registry.has(el, component)) { return; } registry.add(el, component); - require([component], function(callback) { + require([component], function (callback) { config = getConfig(el, config); if (typeof callback === 'object') { @@ -42,13 +41,12 @@ define([ }); } - /** * Searches for elements which has 'data-mage-init' attribute. * @param {HTMLElement} [parent=document.body] - Optional node inside of which to perform search. * @returns {Array} An array of elements with 'data-mage-init' attribute. */ - function getElements(parent){ + function getElements(parent) { var elems; parent = parent || document.body; @@ -56,48 +54,45 @@ define([ elems = parent.querySelectorAll('[' + dataAttr + ']'); elems = Array.prototype.slice.call(elems); - if(parent.hasAttribute(dataAttr)){ + if (parent.hasAttribute(dataAttr)) { elems.push(parent); } return elems; } - /** * Parses elements 'data-mage-init' attribute as a valid JSON data. * @param {HTMLElement} el - Element whose attribute should be parsed. * @returns {Object} */ - function getData(el){ + function getData(el) { var data = el.getAttribute(dataAttr); return JSON.parse(data); } - /** * Searches for a components' configurational node. * @param {HTMLElement} el - Will be used as a parentNode for configurational element. * @param {Object|String} [config] - Initial config. * @returns {Object} Components' config. */ - function getConfig(el, config){ + function getConfig(el, config) { var node, content; - if(el.tagName === 'SCRIPT'){ + if (el.tagName === 'SCRIPT') { node = el; - } - else{ + } else { node = el.querySelector(nodeSelector); - if( node && node.parentNode !== el ){ + if (node && node.parentNode !== el) { node = false; } } - config = config || {}; + config = config || {}; content = node ? JSON.parse(node.textContent) : {}; return _.extend(config, content); @@ -108,11 +103,11 @@ define([ * Initializes components assigned to HTML elements via [data-mage-init]. * @param {HTMLElement} [ctx=document.body] - Optional node to search inside. */ - apply: function(ctx){ + apply: function (ctx) { var elems = getElements(ctx), data; - elems.forEach(function(el){ + elems.forEach(function (el) { data = getData(el); _.each(data, init.bind(this, el)); @@ -121,10 +116,10 @@ define([ /** * Intializes single element with a specified component and config. - * @param {HTMLElement} el - Element to initialize component on. + * @param {HTMLElement} el - Element to initialize component on. * @param {Object} config - Components' configuration. - * @param {String} component - Components' path. + * @param {String} component - Components' path. */ applyFor: init }; -}); \ No newline at end of file +}); diff --git a/lib/web/mage/backend/ajax-setup.js b/lib/web/mage/backend/ajax-setup.js deleted file mode 100644 index 79035c3be44b81bd52e24391955df09523d26c95..0000000000000000000000000000000000000000 --- a/lib/web/mage/backend/ajax-setup.js +++ /dev/null @@ -1,65 +0,0 @@ -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ -/*jshint browser:true jquery:true */ -/*global window:true FORM_KEY:true SessionError:true*/ -define([ - "jquery", - "jquery/ui" -], function($){ - - $.ajaxSetup({ - /* - * @type {string} - */ - type: 'POST', - /* - * Ajax before send callback - * @param {Object} The jQuery XMLHttpRequest object returned by $.ajax() - * @param {Object} - */ - beforeSend: function(jqXHR, settings){ - if (!settings.url.match(new RegExp('[?&]isAjax=true',''))) { - settings.url = settings.url.match( - new RegExp('\\?',"g")) ? - settings.url + '&isAjax=true' : - settings.url + '?isAjax=true'; - } - if ($.type(settings.data) === "string" && settings.data.indexOf('form_key=') === -1 - ) { - settings.data += '&' + $.param({ - form_key: FORM_KEY - }); - } else { - if (!settings.data) { - settings.data = { - form_key: FORM_KEY - }; - } - if (!settings.data.form_key) { - settings.data.form_key = FORM_KEY; - } - } - }, - /* - * Ajax complete callback - * @param {Object} The jQuery XMLHttpRequest object returned by $.ajax() - */ - complete: function(jqXHR){ - if (jqXHR.readyState === 4) { - try { - var jsonObject = $.parseJSON(jqXHR.responseText); - if (jsonObject.ajaxExpired && jsonObject.ajaxRedirect) { - window.location.replace(jsonObject.ajaxRedirect); - throw new SessionError('session expired'); - } - } catch (e) { - if (e instanceof SessionError) { - return; - } - } - } - } - }); -}); diff --git a/lib/web/mage/backend/bootstrap.js b/lib/web/mage/backend/bootstrap.js index 2130aa28324a292a6de2b9702f139ccd3b4c8258..5e18cd229d6644d8ef36a9362cc1d02acb4c2c24 100644 --- a/lib/web/mage/backend/bootstrap.js +++ b/lib/web/mage/backend/bootstrap.js @@ -72,8 +72,6 @@ define([ * Initialization of notification widget */ $('body').mage('notification'); - - $('.content-header:not(.skip-header)').mage('floatingHeader'); }; $(bootstrap); diff --git a/lib/web/mage/backend/button.js b/lib/web/mage/backend/button.js index 6f67f16c38ced429024781219f59d6e5951a4aed..63e23ee02ee077977d5f6c11136c98cc9dd44e46 100644 --- a/lib/web/mage/backend/button.js +++ b/lib/web/mage/backend/button.js @@ -4,17 +4,20 @@ */ /*global require:true*/ (function (factory) { + 'use strict'; + if (typeof define === 'function' && define.amd) { define([ - "jquery", - "jquery/ui" + 'jquery', + 'jquery/ui', + 'mage/requirejs/resolver' ], factory); } else { factory(jQuery); } }(function ($) { 'use strict'; - + var resolver = require && require.resolver; $.widget('ui.button', $.ui.button, { @@ -27,7 +30,7 @@ * Button creation. * @protected */ - _create: function() { + _create: function () { if (this.options.event) { this.options.target = this.options.target || this.element; this._bind(); @@ -39,20 +42,20 @@ * Bind handler on button click. * @protected */ - _bind: function() { + _bind: function () { var waitTillResolved = this.options.waitTillResolved, handler = !waitTillResolved || !resolver ? this._click : this._proxyClick; this.element - .off( 'click.button' ) - .on( 'click.button', $.proxy(handler, this) ); + .off('click.button') + .on('click.button', $.proxy(handler, this)); }, /** * Button click handler. * @protected */ - _click: function(){ + _click: function () { var options = this.options; $(options.target).trigger(options.event, [options.eventData]); @@ -60,19 +63,16 @@ /** * Proxy button click handler that might postpone the event - * untill all of the rjs dependencies will be resolved. + * untill all of the rjs dependencies will be resolved. * @protected */ - _proxyClick: function(){ - var options = this.options; - - if( resolver.resolved ){ + _proxyClick: function () { + if (resolver.resolved) { this._click(); - } - else if( !resolver.hasListeners('spinnerCover') ){ + } else if (!resolver.hasListeners('spinnerCover')) { $('body').trigger('processStart'); - resolver.on('spinnerCover', $.proxy(this._onResolve, this) ); + resolver.on('spinnerCover', $.proxy(this._onResolve, this)); } }, @@ -80,12 +80,12 @@ * Callback of the rjs resolver 'onAllResolved' event. * @protected */ - _onResolve: function(){ + _onResolve: function () { $('body').trigger('processStop'); this._click(); } }); - + return $.ui.button; })); diff --git a/lib/web/mage/backend/validation.js b/lib/web/mage/backend/validation.js index 8c50338e4a10cbac38588b20b55d7016520e6266..ac7dc1dc1715958f4d7ea303b67170aed5bc6a28 100644 --- a/lib/web/mage/backend/validation.js +++ b/lib/web/mage/backend/validation.js @@ -201,6 +201,68 @@ } } }); - + + _.each({ + 'validate-greater-zero-based-on-option': [ + function (v, el) { + var optionType = $(el) + .closest('.form-list') + .prev('.fieldset-alt') + .find('select.select-product-option-type'), + optionTypeVal = optionType.val(); + v = Number(v) || 0; + if (optionType && (optionTypeVal == 'checkbox' || optionTypeVal == 'multi') && v <= 0) { + return false; + } + return true; + }, + 'Please enter a number greater 0 in this field.' + ], + 'validate-rating': [ + function () { + var ratings = $('#detailed_rating').find('.field-rating'), + noError = true; + + ratings.each(function (index, rating) { + noError = noError && $(rating).find('input:checked').length > 0; + }); + return noError; + }, + 'Please select one of each ratings above.' + ], + 'validate-downloadable-file': [ + function (v, element) { + var elmParent = $(element).parent(), + linkType = elmParent.find('input[value="file"]'), + newFileContainer; + + if (linkType.is(':checked') && (v === '' || v === '[]')) { + newFileContainer = elmParent.find('.new-file'); + if (!alertAlreadyDisplayed && (newFileContainer.empty() || newFileContainer.is(':visible'))) { + alertAlreadyDisplayed = true; + alert($.mage.__('There are files that were selected but not uploaded yet. ' + + 'Please upload or remove them first')); + } + return false; + } + return true; + }, + 'Please upload a file.' + ], + 'validate-downloadable-url': [ + function (v, element) { + var linkType = $(element).parent().find('input[value="url"]'); + if (linkType.is(':checked') && v === '') { + return false; + } + return true; + }, + 'Please specify Url.' + ] + }, function (rule, i) { + rule.unshift(i); + $.validator.addMethod.apply($.validator, rule); + }); + return $.mage.validation; })); diff --git a/lib/web/mage/common.js b/lib/web/mage/common.js index 13f8a35be5fe54a7b10ea3782d7f5f3470026c46..470fd17f35be1421417c9ae274428b7a934d3fa7 100644 --- a/lib/web/mage/common.js +++ b/lib/web/mage/common.js @@ -3,9 +3,12 @@ * See COPYING.txt for license details. */ /*jshint browser:true jquery:true*/ -jQuery(function ($) { - $(document).ready(function(){ - /* Form with auto submit feature */ - $('form[data-auto-submit="true"]').submit(); - }); -}); \ No newline at end of file +define([ + 'jquery', + 'domReady!' +], function ($) { + 'use strict'; + + /* Form with auto submit feature */ + $('form[data-auto-submit="true"]').submit(); +}); diff --git a/lib/web/mage/dropdown_old.js b/lib/web/mage/dropdown_old.js index 2d13b604865d4897ef28f549667388b37116f5d4..c81616b309e59227a537609c1cdd8ac775db578c 100644 --- a/lib/web/mage/dropdown_old.js +++ b/lib/web/mage/dropdown_old.js @@ -64,11 +64,7 @@ define([ }); }; - $(document).ready(function() { - $('[data-toggle=dropdown]').dropdown(); - }); - - return function(data, el){ + return function (data, el) { $(el).dropdown(data); }; }); diff --git a/lib/web/mage/jquery-no-conflict.js b/lib/web/mage/jquery-no-conflict.js deleted file mode 100644 index 6350b1e8593b2ae8b79ce5b680c5d3a940eb1a2c..0000000000000000000000000000000000000000 --- a/lib/web/mage/jquery-no-conflict.js +++ /dev/null @@ -1,6 +0,0 @@ -/** - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ - -jQuery.noConflict(); diff --git a/lib/web/mage/mage.js b/lib/web/mage/mage.js index 725e4b1082e841eeb36619c1c647f117253db85c..81db2ce2e50ec1c7cf17f082dc161ea893ea75f3 100644 --- a/lib/web/mage/mage.js +++ b/lib/web/mage/mage.js @@ -5,17 +5,16 @@ /*jshint eqnull:true browser:true jquery:true expr:true */ /*global require:true console:true*/ (function (factory) { - if (typeof define === "function" && define.amd) { + if (typeof define === 'function' && define.amd) { define([ - "jquery", - "mage/apply/main" + 'jquery', + 'mage/apply/main' ], factory); } else { factory(jQuery); } }(function ($, mage) { - "use strict"; - + 'use strict'; /** * Main namespace for Magento extensions @@ -29,22 +28,22 @@ * @param {Object} config - Components' config. * @returns {JQuery} Chainable. */ - $.fn.mage = function(name, config) { + $.fn.mage = function (name, config) { config = config || {}; - this.each(function(index, el){ + this.each(function (index, el) { mage.applyFor(el, config, name); }); return this; }; - + $.extend($.mage, { /** * Handle all components declared via data attribute * @return {Object} $.mage */ - init: function() { + init: function () { mage.apply(); return this; @@ -57,33 +56,31 @@ * @param {(undefined|Number)} timeout - timeout in milliseconds before processing the redirect or reload * @param {(undefined|Boolean)} forced - true|false used for 'reload' only */ - redirect: function(url, type, timeout, forced) { + redirect: function (url, type, timeout, forced) { var _redirect; forced = !!forced; timeout = timeout || 0; type = type || "assign"; - - _redirect = function() { + + _redirect = function () { window.location[type](type === 'reload' ? forced : url); }; - + timeout ? setTimeout(_redirect, timeout) : _redirect(); }, - /** * Checks if provided string is a valid selector. * @param {String} selector - Selector to check. * @returns {Boolean} */ - isValidSelector: function(selector){ + isValidSelector: function (selector) { try { document.querySelector(selector); return true; - } - catch(e){ + } catch (e) { return false; } } @@ -92,8 +89,8 @@ /** * Init components inside of dynamically updated elements */ - $('body').on('contentUpdated', function(e) { - if(mage) { + $('body').on('contentUpdated', function (e) { + if (mage) { mage.apply(e.target); } }); diff --git a/lib/web/mage/menu.js b/lib/web/mage/menu.js index 6453bede58a78ede645956e1dbc3d27e94688d43..01b4d116ebf4a8d192512003a6cb9e51752092eb 100644 --- a/lib/web/mage/menu.js +++ b/lib/web/mage/menu.js @@ -2,13 +2,12 @@ * Copyright © 2015 Magento. All rights reserved. * See COPYING.txt for license details. */ - /*global mediaCheck*/ define([ "jquery", + "matchMedia", "jquery/ui", - "jquery/jquery.mobile.custom", - "matchMedia" -], function($){ + "jquery/jquery.mobile.custom" +], function($, mediaCheck){ 'use strict'; /** diff --git a/lib/web/mage/requirejs/resolver.js b/lib/web/mage/requirejs/resolver.js index d50049b7e752b0929c8efcd46c1be9e8833050b6..4e9fce726655852362e1c7caa11fb7f87c23c2b2 100644 --- a/lib/web/mage/requirejs/resolver.js +++ b/lib/web/mage/requirejs/resolver.js @@ -3,11 +3,14 @@ * See COPYING.txt for license details. */ /*global require:true*/ -(function(factory) { +(function (factory) { + 'use strict'; + if (require && define && define.amd) { factory(require); } -}(function(require) { +}(function (require) { + 'use strict'; var context = require.s.contexts._, completeLoad = context.completeLoad, @@ -45,17 +48,20 @@ * Checks wethre all of the current dependencies are resolved. * returns {Boolean} */ - isResolved: function() { - return !Object.keys(registry).length; - }, + isResolved: function () { + var keys = Object.keys(registry); + return !keys.length || keys.every(function (key) { + return !registry[key].depCount; + }); + }, /** * Attaches event handler for the 'onAllResolved' event. * @param {String} [namespace = _default] - Namespace of the handler. * @param {Function} callback - Events' callback function. */ - on: function(namespace, callback) { + on: function (namespace, callback) { var handlers; if (arguments.length === 1 && typeof namespace === 'function') { @@ -76,10 +82,10 @@ /** * Checks for the attached listeners. - * @praram {String} [namespace = _default] - Namespace of the handler. + * @param {String} [namespace = _default] - Namespace of the handler. * @return {Boolean} */ - hasListeners: function(namespace) { + hasListeners: function (namespace) { var handlers; if (typeof namespace === 'undefined') { @@ -92,11 +98,10 @@ } }; - /** * Inner requirejs's context method that fires whenever script has been loaded. */ - context.completeLoad = function() { + context.completeLoad = function () { completeLoad.apply(context, arguments); if (resolver.isResolved()) { @@ -105,4 +110,4 @@ }; require.resolver = resolver; -})); \ No newline at end of file +})); diff --git a/lib/web/mage/terms.js b/lib/web/mage/terms.js index 5373952dd28186063bd007585c45d0ca67d352e2..a82cecb1c60f4c9b22aea70860561b00849581a1 100644 --- a/lib/web/mage/terms.js +++ b/lib/web/mage/terms.js @@ -140,9 +140,6 @@ define([ init(); }); }; - $(document).ready(function() { - $('[data-sections]').terms(); - }); return function(data, el){ $(el).terms(data); diff --git a/lib/web/mage/validation.js b/lib/web/mage/validation.js index e987e147ea414f6914f9935fe3aba000f48adaec..8a9dfc4ca603f94ea38c4dffc9fff4b9fc4e7f20 100644 --- a/lib/web/mage/validation.js +++ b/lib/web/mage/validation.js @@ -1346,4 +1346,6 @@ }); } }); + + return $.mage.validation; })); diff --git a/lib/web/mage/validation/dob-rule.js b/lib/web/mage/validation/dob-rule.js deleted file mode 100644 index c1a82e3ab522a447c9f23e571d0b0288ffb364a1..0000000000000000000000000000000000000000 --- a/lib/web/mage/validation/dob-rule.js +++ /dev/null @@ -1,71 +0,0 @@ -/** - * @category validation - dob rule - * Copyright © 2015 Magento. All rights reserved. - * See COPYING.txt for license details. - */ -/*jshint jquery:true*/ -define([ - "jquery", - "jquery/validate", - "mage/translate" -], function($){ - "use strict"; - - $.validator.addMethod( - 'validate-dob', - function (val, element, params) { - var dob = $(element).parents('.customer-dob'); - $(dob).find('.' + this.settings.errorClass).removeClass(this.settings.errorClass); - var dayVal = $(dob).find(params[0]).find('input:text').val(), - monthVal = $(dob).find(params[1]).find('input:text').val(), - yearVal = $(dob).find(params[2]).find('input:text').val(), - dobLength = dayVal.length + monthVal.length + yearVal.length; - if (params[3] && dobLength === 0) { - this.dobErrorMessage = 'This is a required field.'; - return false; - } - if (!params[3] && dobLength === 0) { - return true; - } - var day = parseInt(dayVal, 10) || 0, - month = parseInt(monthVal, 10) || 0, - year = parseInt(yearVal, 10) || 0, - curYear = (new Date()).getFullYear(); - if (!day || !month || !year) { - this.dobErrorMessage = 'Please enter a valid full date.'; - return false; - } - if (month < 1 || month > 12) { - this.dobErrorMessage = 'Please enter a valid month (1-12).'; - return false; - } - if (year < 1900 || year > curYear) { - this.dobErrorMessage = - $.mage.__('Please enter a valid year (1900-%1).').replace('%1', curYear.toString()); - return false; - } - var validateDayInMonth = new Date(year, month, 0).getDate(); - if (day < 1 || day > validateDayInMonth) { - this.dobErrorMessage = - $.mage.__('Please enter a valid day (1-%1).').replace('%1', validateDayInMonth.toString()); - return false; - } - var today = new Date(), - dateEntered = new Date(); - dateEntered.setFullYear(year, month - 1, day); - if (dateEntered > today) { - this.dobErrorMessage = $.mage.__('Please enter a date in the past.'); - return false; - } - - day = day % 10 === day ? '0' + day : day; - month = month % 10 === month ? '0' + month : month; - $(element).val(month + '/' + day + '/' + year); - return true; - }, - function(){ - return this.dobErrorMessage; - } - ); - -}); diff --git a/lib/web/mage/validation/validation.js b/lib/web/mage/validation/validation.js index f5f18aaee3301be8519d31017752af71ffc3b25a..42013cf2ca1b41c1e6a1eb40b22cb9417f8b9d0a 100644 --- a/lib/web/mage/validation/validation.js +++ b/lib/web/mage/validation/validation.js @@ -15,76 +15,127 @@ } }(function ($) { "use strict"; - - /** - * Validation rule for grouped product, with multiple qty fields, - * only one qty needs to have a positive integer - */ - $.validator.addMethod( - "validate-grouped-qty", - function(value, element, params) { - var result = false; - var total = 0; - $(params).find('input[data-validate*="validate-grouped-qty"]').each(function(i, e) { - var val = $(e).val(); - if (val && val.length > 0) { - result = true; - var valInt = parseInt(val, 10) || 0; - if (valInt >= 0) { - total += valInt; - } else { - result = false; - return result; - } - } - }); - return result && total > 0; - }, - 'Please specify the quantity of product(s).' - ); - $.validator.addMethod( - "validate-one-checkbox-required-by-name", - function(value, element, params) { - var checkedCount = 0; - if (element.type === 'checkbox') { - $('[name="' + element.name + '"]').each(function() { - if ($(this).is(':checked')) { - checkedCount += 1; - return false; + $.each({ + 'validate-grouped-qty': [ + function (value, element, params) { + var result = false; + var total = 0; + $(params).find('input[data-validate*="validate-grouped-qty"]').each(function (i, e) { + var val = $(e).val(); + if (val && val.length > 0) { + result = true; + var valInt = parseInt(val, 10) || 0; + if (valInt >= 0) { + total += valInt; + } else { + result = false; + return result; + } } }); - } - var container = '#' + params; - if (checkedCount > 0) { - $(container).removeClass('validation-failed'); - $(container).addClass('validation-passed'); - return true; - } else { - $(container).addClass('validation-failed'); - $(container).removeClass('validation-passed'); + return result && total > 0; + }, + 'Please specify the quantity of product(s).' + ], + 'validate-one-checkbox-required-by-name': [ + function (value, element, params) { + var checkedCount = 0; + if (element.type === 'checkbox') { + $('[name="' + element.name + '"]').each(function () { + if ($(this).is(':checked')) { + checkedCount += 1; + return false; + } + }); + } + var container = '#' + params; + if (checkedCount > 0) { + $(container).removeClass('validation-failed'); + $(container).addClass('validation-passed'); + return true; + } else { + $(container).addClass('validation-failed'); + $(container).removeClass('validation-passed'); + return false; + } + }, + 'Please select one of the options.' + ], + 'validate-date-between': [ + function (value, element, params) { + var minDate = new Date(params[0]), + maxDate = new Date(params[1]), + inputDate = new Date(element.value); + minDate.setHours(0); + maxDate.setHours(0); + if (inputDate >= minDate && inputDate <= maxDate) { + return true; + } + this.dateBetweenErrorMessage = $.mage.__('Please enter a date between %min and %max.').replace('%min', minDate).replace('%max', maxDate); return false; + }, + function () { + return this.dateBetweenErrorMessage; } - }, - 'Please select one of the options.' - ); + ], + 'validate-dob': [ + function (val, element, params) { + var dob = $(element).parents('.customer-dob'); + $(dob).find('.' + this.settings.errorClass).removeClass(this.settings.errorClass); + var dayVal = $(dob).find(params[0]).find('input:text').val(), + monthVal = $(dob).find(params[1]).find('input:text').val(), + yearVal = $(dob).find(params[2]).find('input:text').val(), + dobLength = dayVal.length + monthVal.length + yearVal.length; + if (params[3] && dobLength === 0) { + this.dobErrorMessage = 'This is a required field.'; + return false; + } + if (!params[3] && dobLength === 0) { + return true; + } + var day = parseInt(dayVal, 10) || 0, + month = parseInt(monthVal, 10) || 0, + year = parseInt(yearVal, 10) || 0, + curYear = (new Date()).getFullYear(); + if (!day || !month || !year) { + this.dobErrorMessage = 'Please enter a valid full date.'; + return false; + } + if (month < 1 || month > 12) { + this.dobErrorMessage = 'Please enter a valid month (1-12).'; + return false; + } + if (year < 1900 || year > curYear) { + this.dobErrorMessage = + $.mage.__('Please enter a valid year (1900-%1).').replace('%1', curYear.toString()); + return false; + } + var validateDayInMonth = new Date(year, month, 0).getDate(); + if (day < 1 || day > validateDayInMonth) { + this.dobErrorMessage = + $.mage.__('Please enter a valid day (1-%1).').replace('%1', validateDayInMonth.toString()); + return false; + } + var today = new Date(), + dateEntered = new Date(); + dateEntered.setFullYear(year, month - 1, day); + if (dateEntered > today) { + this.dobErrorMessage = $.mage.__('Please enter a date in the past.'); + return false; + } - $.validator.addMethod( - "validate-date-between", - function(value, element, params) { - var minDate = new Date(params[0]), - maxDate = new Date(params[1]), - inputDate = new Date(element.value); - minDate.setHours(0); - maxDate.setHours(0); - if (inputDate >= minDate && inputDate <= maxDate) { + day = day % 10 === day ? '0' + day : day; + month = month % 10 === month ? '0' + month : month; + $(element).val(month + '/' + day + '/' + year); return true; + }, + function () { + return this.dobErrorMessage; } - this.dateBetweenErrorMessage = $.mage.__('Please enter a date between %min and %max.').replace('%min', minDate).replace('%max', maxDate); - return false; - }, - function(){ - return this.dateBetweenErrorMessage; - } - ); -})); + ] + }, function (i, rule) { + rule.unshift(i); + $.validator.addMethod.apply($.validator, rule); + }); +})); \ No newline at end of file diff --git a/lib/web/prototype/debug.js b/lib/web/prototype/debug.js deleted file mode 100644 index 3d8f338836ec6730ff75f25ce4ae86954f22ed46..0000000000000000000000000000000000000000 --- a/lib/web/prototype/debug.js +++ /dev/null @@ -1,137 +0,0 @@ -var debugWindow = null; -function debug(text, reverse) { - if (debugWindow == null) - return; - - time = "-"; //new Date(); - if (reverse) { - $('debug').innerHTML = time + " " + text + "<br>"+ $('debug').innerHTML; - debugWindow.getContent().scrollTop=0; - } - else { - $('debug').innerHTML += time + " " + text + "<br>"; - debugWindow.getContent().scrollTop=10000; // Far away - } -} - -function hideDebug() { - if (debugWindow) { - debugWindow.destroy(); - debugWindow = null; - } -} - -function showDebug(bShow) { - if (debugWindow == null) { - debugWindow = new Window('debug_window', {className: 'dialog',width:250, height:100, right:4, bottom:42, zIndex:1000, opacity:1, showEffect: Element.show, resizable: true, title: "Debug"}) - debugWindow.getContent().innerHTML = "<style>#debug_window .dialog_content {background:#000;}</style> <div id='debug'></div>"; - date=new Date; - date.setMonth(date.getMonth()+3); - - //debugWindow.setCookie(null, date); - } - if( typeof bShow == 'undefined' || bShow)debugWindow.show() -} - - -function clearDebug() { - if (debugWindow == null) - return; - $('debug').innerHTML = ""; -} - -/** - * document.createElement convenience wrapper - * - * The data parameter is an object that must have the "tag" key, containing - * a string with the tagname of the element to create. It can optionally have - * a "children" key which can be: a string, "data" object, or an array of "data" - * objects to append to this element as children. Any other key is taken as an - * attribute to be applied to this tag. - * - * Available under an MIT license: - * http://www.opensource.org/licenses/mit-license.php - * - * @param {Object} data The data representing the element to create - * @return {Element} The element created. - */ -function $E(data) { - var el; - if ('string'==typeof data) { - el=document.createTextNode(data); - } else { - //create the element - el=document.createElement(data.tag); - delete(data.tag); - - //append the children - if ('undefined'!=typeof data.children) { - if ('string'==typeof data.children ||'undefined'==typeof data.children.length) { - //strings and single elements - el.appendChild($E(data.children)); - } else { - //arrays of elements - for (var i=0, child=null; 'undefined'!=typeof (child=data.children[i]); i++) { - el.appendChild($E(child)); - } - } - delete(data.children); - } - - //any other data is attributes - for (attr in data) { - el[attr]=data[attr]; - } - } - - return el; -} - -// FROM Nick Hemsley -var Debug = { - inspectOutput: function (container, within) { - within = within || debugWindow.getContent() - - if (debugWindow == null) - return; - - within.appendChild(container) - }, - - inspect: function(object) { - var cont = $E({tag: "div", className: "inspector"}) - Debug.inspectObj(object, cont) - debugWindow.getContent().appendChild(cont) - }, - - inspectObj: function (object, container) { - for (prop in object) { - Debug.inspectOutput(Debug.inspectable(object, prop), container) - } - }, - - inspectable: function(object, prop) { - cont = $E({tag: 'div', className: 'inspectable', children: [prop + " value: " + object[prop] ]}) - cont.toInspect = object[prop] - Event.observe(cont, 'click', Debug.inspectClicked, false) - return cont - }, - - inspectClicked: function(e) { - Debug.inspectContained(Event.element(e)) - Event.stop(e) - }, - - inspectContained: function(container) { - if (container.opened) { - container.parentNode.removeChild(container.opened) - delete(container.opened) - } else { - sibling = container.parentNode.insertBefore($E({tag: "div", className: "child"}), container.nextSibling) - if (container.toInspect) - Debug.inspectObj(container.toInspect, sibling) - container.opened = sibling - } - } -} -var inspect = Debug.inspect; diff --git a/lib/web/prototype/effects.js b/lib/web/prototype/effects.js deleted file mode 100644 index 8a4a4f9f67ecdc0047af5e7f4f4acad3ec49c856..0000000000000000000000000000000000000000 --- a/lib/web/prototype/effects.js +++ /dev/null @@ -1,1094 +0,0 @@ -// script.aculo.us effects.js v1.7.1_beta1, Mon Mar 12 14:40:50 +0100 2007 - -// Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) -// Contributors: -// Justin Palmer (http://encytemedia.com/) -// Mark Pilgrim (http://diveintomark.org/) -// Martin Bialasinki -// -// script.aculo.us is freely distributable under the terms of an MIT-style license. -// For details, see the script.aculo.us web site: http://script.aculo.us/ - -// converts rgb() and #xxx to #xxxxxx format, -// returns self (or first argument) if not convertable -String.prototype.parseColor = function() { - var color = '#'; - if(this.slice(0,4) == 'rgb(') { - var cols = this.slice(4,this.length-1).split(','); - var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3); - } else { - if(this.slice(0,1) == '#') { - if(this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase(); - if(this.length==7) color = this.toLowerCase(); - } - } - return(color.length==7 ? color : (arguments[0] || this)); -} - -/*--------------------------------------------------------------------------*/ - -Element.collectTextNodes = function(element) { - return $A($(element).childNodes).collect( function(node) { - return (node.nodeType==3 ? node.nodeValue : - (node.hasChildNodes() ? Element.collectTextNodes(node) : '')); - }).flatten().join(''); -} - -Element.collectTextNodesIgnoreClass = function(element, className) { - return $A($(element).childNodes).collect( function(node) { - return (node.nodeType==3 ? node.nodeValue : - ((node.hasChildNodes() && !Element.hasClassName(node,className)) ? - Element.collectTextNodesIgnoreClass(node, className) : '')); - }).flatten().join(''); -} - -Element.setContentZoom = function(element, percent) { - element = $(element); - element.setStyle({fontSize: (percent/100) + 'em'}); - if(Prototype.Browser.WebKit) window.scrollBy(0,0); - return element; -} - -Element.getInlineOpacity = function(element){ - return $(element).style.opacity || ''; -} - -Element.forceRerendering = function(element) { - try { - element = $(element); - var n = document.createTextNode(' '); - element.appendChild(n); - element.removeChild(n); - } catch(e) { } -}; - -/*--------------------------------------------------------------------------*/ - -Array.prototype.call = function() { - var args = arguments; - this.each(function(f){ f.apply(this, args) }); -} - -/*--------------------------------------------------------------------------*/ - -var Effect = { - _elementDoesNotExistError: { - name: 'ElementDoesNotExistError', - message: 'The specified DOM element does not exist, but is required for this effect to operate' - }, - tagifyText: function(element) { - if(typeof Builder == 'undefined') - throw("Effect.tagifyText requires including script.aculo.us' builder.js library"); - - var tagifyStyle = 'position:relative'; - if(Prototype.Browser.IE) tagifyStyle += ';zoom:1'; - - element = $(element); - $A(element.childNodes).each( function(child) { - if(child.nodeType==3) { - child.nodeValue.toArray().each( function(character) { - element.insertBefore( - Builder.node('span',{style: tagifyStyle}, - character == ' ' ? String.fromCharCode(160) : character), - child); - }); - Element.remove(child); - } - }); - }, - multiple: function(element, effect) { - var elements; - if(((typeof element == 'object') || - (typeof element == 'function')) && - (element.length)) - elements = element; - else - elements = $(element).childNodes; - - var options = Object.extend({ - speed: 0.1, - delay: 0.0 - }, arguments[2] || {}); - var masterDelay = options.delay; - - $A(elements).each( function(element, index) { - new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay })); - }); - }, - PAIRS: { - 'slide': ['SlideDown','SlideUp'], - 'blind': ['BlindDown','BlindUp'], - 'appear': ['Appear','Fade'] - }, - toggle: function(element, effect) { - element = $(element); - effect = (effect || 'appear').toLowerCase(); - var options = Object.extend({ - queue: { position:'end', scope:(element.id || 'global'), limit: 1 } - }, arguments[2] || {}); - Effect[element.visible() ? - Effect.PAIRS[effect][1] : Effect.PAIRS[effect][0]](element, options); - } -}; - -var Effect2 = Effect; // deprecated - -/* ------------- transitions ------------- */ - -Effect.Transitions = { - linear: Prototype.K, - sinoidal: function(pos) { - return (-Math.cos(pos*Math.PI)/2) + 0.5; - }, - reverse: function(pos) { - return 1-pos; - }, - flicker: function(pos) { - var pos = ((-Math.cos(pos*Math.PI)/4) + 0.75) + Math.random()/4; - return (pos > 1 ? 1 : pos); - }, - wobble: function(pos) { - return (-Math.cos(pos*Math.PI*(9*pos))/2) + 0.5; - }, - pulse: function(pos, pulses) { - pulses = pulses || 5; - return ( - Math.round((pos % (1/pulses)) * pulses) == 0 ? - ((pos * pulses * 2) - Math.floor(pos * pulses * 2)) : - 1 - ((pos * pulses * 2) - Math.floor(pos * pulses * 2)) - ); - }, - none: function(pos) { - return 0; - }, - full: function(pos) { - return 1; - } -}; - -/* ------------- core effects ------------- */ - -Effect.ScopedQueue = Class.create(); -Object.extend(Object.extend(Effect.ScopedQueue.prototype, Enumerable), { - initialize: function() { - this.effects = []; - this.interval = null; - }, - _each: function(iterator) { - this.effects._each(iterator); - }, - add: function(effect) { - var timestamp = new Date().getTime(); - - var position = (typeof effect.options.queue == 'string') ? - effect.options.queue : effect.options.queue.position; - - switch(position) { - case 'front': - // move unstarted effects after this effect - this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) { - e.startOn += effect.finishOn; - e.finishOn += effect.finishOn; - }); - break; - case 'with-last': - timestamp = this.effects.pluck('startOn').max() || timestamp; - break; - case 'end': - // start effect after last queued effect has finished - timestamp = this.effects.pluck('finishOn').max() || timestamp; - break; - } - - effect.startOn += timestamp; - effect.finishOn += timestamp; - - if(!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit)) - this.effects.push(effect); - - if(!this.interval) - this.interval = setInterval(this.loop.bind(this), 15); - }, - remove: function(effect) { - this.effects = this.effects.reject(function(e) { return e==effect }); - if(this.effects.length == 0) { - clearInterval(this.interval); - this.interval = null; - } - }, - loop: function() { - var timePos = new Date().getTime(); - for(var i=0, len=this.effects.length;i<len;i++) - this.effects[i] && this.effects[i].loop(timePos); - } -}); - -Effect.Queues = { - instances: $H(), - get: function(queueName) { - if(typeof queueName != 'string') return queueName; - - if(!this.instances[queueName]) - this.instances[queueName] = new Effect.ScopedQueue(); - - return this.instances[queueName]; - } -} -Effect.Queue = Effect.Queues.get('global'); - -Effect.DefaultOptions = { - transition: Effect.Transitions.sinoidal, - duration: 1.0, // seconds - fps: 100, // 100= assume 66fps max. - sync: false, // true for combining - from: 0.0, - to: 1.0, - delay: 0.0, - queue: 'parallel' -} - -Effect.Base = function() {}; -Effect.Base.prototype = { - position: null, - start: function(options) { - function codeForEvent(options,eventName){ - return ( - (options[eventName+'Internal'] ? 'this.options.'+eventName+'Internal(this);' : '') + - (options[eventName] ? 'this.options.'+eventName+'(this);' : '') - ); - } - if(options.transition === false) options.transition = Effect.Transitions.linear; - this.options = Object.extend(Object.extend({},Effect.DefaultOptions), options || {}); - this.currentFrame = 0; - this.state = 'idle'; - this.startOn = this.options.delay*1000; - this.finishOn = this.startOn+(this.options.duration*1000); - this.fromToDelta = this.options.to-this.options.from; - this.totalTime = this.finishOn-this.startOn; - this.totalFrames = this.options.fps*this.options.duration; - - eval('this.render = function(pos){ '+ - 'if(this.state=="idle"){this.state="running";'+ - codeForEvent(options,'beforeSetup')+ - (this.setup ? 'this.setup();':'')+ - codeForEvent(options,'afterSetup')+ - '};if(this.state=="running"){'+ - 'pos=this.options.transition(pos)*'+this.fromToDelta+'+'+this.options.from+';'+ - 'this.position=pos;'+ - codeForEvent(options,'beforeUpdate')+ - (this.update ? 'this.update(pos);':'')+ - codeForEvent(options,'afterUpdate')+ - '}}'); - - this.event('beforeStart'); - if(!this.options.sync) - Effect.Queues.get(typeof this.options.queue == 'string' ? - 'global' : this.options.queue.scope).add(this); - }, - loop: function(timePos) { - if(timePos >= this.startOn) { - if(timePos >= this.finishOn) { - this.render(1.0); - this.cancel(); - this.event('beforeFinish'); - if(this.finish) this.finish(); - this.event('afterFinish'); - return; - } - var pos = (timePos - this.startOn) / this.totalTime, - frame = Math.round(pos * this.totalFrames); - if(frame > this.currentFrame) { - this.render(pos); - this.currentFrame = frame; - } - } - }, - cancel: function() { - if(!this.options.sync) - Effect.Queues.get(typeof this.options.queue == 'string' ? - 'global' : this.options.queue.scope).remove(this); - this.state = 'finished'; - }, - event: function(eventName) { - if(this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this); - if(this.options[eventName]) this.options[eventName](this); - }, - inspect: function() { - var data = $H(); - for(property in this) - if(typeof this[property] != 'function') data[property] = this[property]; - return '#<Effect:' + data.inspect() + ',options:' + $H(this.options).inspect() + '>'; - } -} - -Effect.Parallel = Class.create(); -Object.extend(Object.extend(Effect.Parallel.prototype, Effect.Base.prototype), { - initialize: function(effects) { - this.effects = effects || []; - this.start(arguments[1]); - }, - update: function(position) { - this.effects.invoke('render', position); - }, - finish: function(position) { - this.effects.each( function(effect) { - effect.render(1.0); - effect.cancel(); - effect.event('beforeFinish'); - if(effect.finish) effect.finish(position); - effect.event('afterFinish'); - }); - } -}); - -Effect.Event = Class.create(); -Object.extend(Object.extend(Effect.Event.prototype, Effect.Base.prototype), { - initialize: function() { - var options = Object.extend({ - duration: 0 - }, arguments[0] || {}); - this.start(options); - }, - update: Prototype.emptyFunction -}); - -Effect.Opacity = Class.create(); -Object.extend(Object.extend(Effect.Opacity.prototype, Effect.Base.prototype), { - initialize: function(element) { - this.element = $(element); - if(!this.element) throw(Effect._elementDoesNotExistError); - // make this work on IE on elements without 'layout' - if(Prototype.Browser.IE && (!this.element.currentStyle.hasLayout)) - this.element.setStyle({zoom: 1}); - var options = Object.extend({ - from: this.element.getOpacity() || 0.0, - to: 1.0 - }, arguments[1] || {}); - this.start(options); - }, - update: function(position) { - this.element.setOpacity(position); - } -}); - -Effect.Move = Class.create(); -Object.extend(Object.extend(Effect.Move.prototype, Effect.Base.prototype), { - initialize: function(element) { - this.element = $(element); - if(!this.element) throw(Effect._elementDoesNotExistError); - var options = Object.extend({ - x: 0, - y: 0, - mode: 'relative' - }, arguments[1] || {}); - this.start(options); - }, - setup: function() { - // Bug in Opera: Opera returns the "real" position of a static element or - // relative element that does not have top/left explicitly set. - // ==> Always set top and left for position relative elements in your stylesheets - // (to 0 if you do not need them) - this.element.makePositioned(); - this.originalLeft = parseFloat(this.element.getStyle('left') || '0'); - this.originalTop = parseFloat(this.element.getStyle('top') || '0'); - if(this.options.mode == 'absolute') { - // absolute movement, so we need to calc deltaX and deltaY - this.options.x = this.options.x - this.originalLeft; - this.options.y = this.options.y - this.originalTop; - } - }, - update: function(position) { - this.element.setStyle({ - left: Math.round(this.options.x * position + this.originalLeft) + 'px', - top: Math.round(this.options.y * position + this.originalTop) + 'px' - }); - } -}); - -// for backwards compatibility -Effect.MoveBy = function(element, toTop, toLeft) { - return new Effect.Move(element, - Object.extend({ x: toLeft, y: toTop }, arguments[3] || {})); -}; - -Effect.Scale = Class.create(); -Object.extend(Object.extend(Effect.Scale.prototype, Effect.Base.prototype), { - initialize: function(element, percent) { - this.element = $(element); - if(!this.element) throw(Effect._elementDoesNotExistError); - var options = Object.extend({ - scaleX: true, - scaleY: true, - scaleContent: true, - scaleFromCenter: false, - scaleMode: 'box', // 'box' or 'contents' or {} with provided values - scaleFrom: 100.0, - scaleTo: percent - }, arguments[2] || {}); - this.start(options); - }, - setup: function() { - this.restoreAfterFinish = this.options.restoreAfterFinish || false; - this.elementPositioning = this.element.getStyle('position'); - - this.originalStyle = {}; - ['top','left','width','height','fontSize'].each( function(k) { - this.originalStyle[k] = this.element.style[k]; - }.bind(this)); - - this.originalTop = this.element.offsetTop; - this.originalLeft = this.element.offsetLeft; - - var fontSize = this.element.getStyle('font-size') || '100%'; - ['em','px','%','pt'].each( function(fontSizeType) { - if(fontSize.indexOf(fontSizeType)>0) { - this.fontSize = parseFloat(fontSize); - this.fontSizeType = fontSizeType; - } - }.bind(this)); - - this.factor = (this.options.scaleTo - this.options.scaleFrom)/100; - - this.dims = null; - if(this.options.scaleMode=='box') - this.dims = [this.element.offsetHeight, this.element.offsetWidth]; - if(/^content/.test(this.options.scaleMode)) - this.dims = [this.element.scrollHeight, this.element.scrollWidth]; - if(!this.dims) - this.dims = [this.options.scaleMode.originalHeight, - this.options.scaleMode.originalWidth]; - }, - update: function(position) { - var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position); - if(this.options.scaleContent && this.fontSize) - this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType }); - this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale); - }, - finish: function(position) { - if(this.restoreAfterFinish) this.element.setStyle(this.originalStyle); - }, - setDimensions: function(height, width) { - var d = {}; - if(this.options.scaleX) d.width = Math.round(width) + 'px'; - if(this.options.scaleY) d.height = Math.round(height) + 'px'; - if(this.options.scaleFromCenter) { - var topd = (height - this.dims[0])/2; - var leftd = (width - this.dims[1])/2; - if(this.elementPositioning == 'absolute') { - if(this.options.scaleY) d.top = this.originalTop-topd + 'px'; - if(this.options.scaleX) d.left = this.originalLeft-leftd + 'px'; - } else { - if(this.options.scaleY) d.top = -topd + 'px'; - if(this.options.scaleX) d.left = -leftd + 'px'; - } - } - this.element.setStyle(d); - } -}); - -Effect.Highlight = Class.create(); -Object.extend(Object.extend(Effect.Highlight.prototype, Effect.Base.prototype), { - initialize: function(element) { - this.element = $(element); - if(!this.element) throw(Effect._elementDoesNotExistError); - var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || {}); - this.start(options); - }, - setup: function() { - // Prevent executing on elements not in the layout flow - if(this.element.getStyle('display')=='none') { this.cancel(); return; } - // Disable background image during the effect - this.oldStyle = {}; - if (!this.options.keepBackgroundImage) { - this.oldStyle.backgroundImage = this.element.getStyle('background-image'); - this.element.setStyle({backgroundImage: 'none'}); - } - if(!this.options.endcolor) - this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff'); - if(!this.options.restorecolor) - this.options.restorecolor = this.element.getStyle('background-color'); - // init color calculations - this._base = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this)); - this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this)); - }, - update: function(position) { - this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){ - return m+(Math.round(this._base[i]+(this._delta[i]*position)).toColorPart()); }.bind(this)) }); - }, - finish: function() { - this.element.setStyle(Object.extend(this.oldStyle, { - backgroundColor: this.options.restorecolor - })); - } -}); - -Effect.ScrollTo = Class.create(); -Object.extend(Object.extend(Effect.ScrollTo.prototype, Effect.Base.prototype), { - initialize: function(element) { - this.element = $(element); - this.start(arguments[1] || {}); - }, - setup: function() { - Position.prepare(); - var offsets = Position.cumulativeOffset(this.element); - if(this.options.offset) offsets[1] += this.options.offset; - var max = window.innerHeight ? - window.height - window.innerHeight : - document.body.scrollHeight - - (document.documentElement.clientHeight ? - document.documentElement.clientHeight : document.body.clientHeight); - this.scrollStart = Position.deltaY; - this.delta = (offsets[1] > max ? max : offsets[1]) - this.scrollStart; - }, - update: function(position) { - Position.prepare(); - window.scrollTo(Position.deltaX, - this.scrollStart + (position*this.delta)); - } -}); - -/* ------------- combination effects ------------- */ - -Effect.Fade = function(element) { - element = $(element); - var oldOpacity = element.getInlineOpacity(); - var options = Object.extend({ - from: element.getOpacity() || 1.0, - to: 0.0, - afterFinishInternal: function(effect) { - if(effect.options.to!=0) return; - effect.element.hide().setStyle({opacity: oldOpacity}); - }}, arguments[1] || {}); - return new Effect.Opacity(element,options); -} - -Effect.Appear = function(element) { - element = $(element); - var options = Object.extend({ - from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0), - to: 1.0, - // force Safari to render floated elements properly - afterFinishInternal: function(effect) { - effect.element.forceRerendering(); - }, - beforeSetup: function(effect) { - effect.element.setOpacity(effect.options.from).show(); - }}, arguments[1] || {}); - return new Effect.Opacity(element,options); -} - -Effect.Puff = function(element) { - element = $(element); - var oldStyle = { - opacity: element.getInlineOpacity(), - position: element.getStyle('position'), - top: element.style.top, - left: element.style.left, - width: element.style.width, - height: element.style.height - }; - return new Effect.Parallel( - [ new Effect.Scale(element, 200, - { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }), - new Effect.Opacity(element, { sync: true, to: 0.0 } ) ], - Object.extend({ duration: 1.0, - beforeSetupInternal: function(effect) { - Position.absolutize(effect.effects[0].element) - }, - afterFinishInternal: function(effect) { - effect.effects[0].element.hide().setStyle(oldStyle); } - }, arguments[1] || {}) - ); -} - -Effect.BlindUp = function(element) { - element = $(element); - element.makeClipping(); - return new Effect.Scale(element, 0, - Object.extend({ scaleContent: false, - scaleX: false, - restoreAfterFinish: true, - afterFinishInternal: function(effect) { - effect.element.hide().undoClipping(); - } - }, arguments[1] || {}) - ); -} - -Effect.BlindDown = function(element) { - element = $(element); - var elementDimensions = element.getDimensions(); - return new Effect.Scale(element, 100, Object.extend({ - scaleContent: false, - scaleX: false, - scaleFrom: 0, - scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, - restoreAfterFinish: true, - afterSetup: function(effect) { - effect.element.makeClipping().setStyle({height: '0px'}).show(); - }, - afterFinishInternal: function(effect) { - effect.element.undoClipping(); - } - }, arguments[1] || {})); -} - -Effect.SwitchOff = function(element) { - element = $(element); - var oldOpacity = element.getInlineOpacity(); - return new Effect.Appear(element, Object.extend({ - duration: 0.4, - from: 0, - transition: Effect.Transitions.flicker, - afterFinishInternal: function(effect) { - new Effect.Scale(effect.element, 1, { - duration: 0.3, scaleFromCenter: true, - scaleX: false, scaleContent: false, restoreAfterFinish: true, - beforeSetup: function(effect) { - effect.element.makePositioned().makeClipping(); - }, - afterFinishInternal: function(effect) { - effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity}); - } - }) - } - }, arguments[1] || {})); -} - -Effect.DropOut = function(element) { - element = $(element); - var oldStyle = { - top: element.getStyle('top'), - left: element.getStyle('left'), - opacity: element.getInlineOpacity() }; - return new Effect.Parallel( - [ new Effect.Move(element, {x: 0, y: 100, sync: true }), - new Effect.Opacity(element, { sync: true, to: 0.0 }) ], - Object.extend( - { duration: 0.5, - beforeSetup: function(effect) { - effect.effects[0].element.makePositioned(); - }, - afterFinishInternal: function(effect) { - effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle); - } - }, arguments[1] || {})); -} - -Effect.Shake = function(element) { - element = $(element); - var oldStyle = { - top: element.getStyle('top'), - left: element.getStyle('left') }; - return new Effect.Move(element, - { x: 20, y: 0, duration: 0.05, afterFinishInternal: function(effect) { - new Effect.Move(effect.element, - { x: -40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { - new Effect.Move(effect.element, - { x: 40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { - new Effect.Move(effect.element, - { x: -40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { - new Effect.Move(effect.element, - { x: 40, y: 0, duration: 0.1, afterFinishInternal: function(effect) { - new Effect.Move(effect.element, - { x: -20, y: 0, duration: 0.05, afterFinishInternal: function(effect) { - effect.element.undoPositioned().setStyle(oldStyle); - }}) }}) }}) }}) }}) }}); -} - -Effect.SlideDown = function(element) { - element = $(element).cleanWhitespace(); - // SlideDown need to have the content of the element wrapped in a container element with fixed height! - var oldInnerBottom = element.down().getStyle('bottom'); - var elementDimensions = element.getDimensions(); - return new Effect.Scale(element, 100, Object.extend({ - scaleContent: false, - scaleX: false, - scaleFrom: window.opera ? 0 : 1, - scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width}, - restoreAfterFinish: true, - afterSetup: function(effect) { - effect.element.makePositioned(); - effect.element.down().makePositioned(); - if(window.opera) effect.element.setStyle({top: ''}); - effect.element.makeClipping().setStyle({height: '0px'}).show(); - }, - afterUpdateInternal: function(effect) { - effect.element.down().setStyle({bottom: - (effect.dims[0] - effect.element.clientHeight) + 'px' }); - }, - afterFinishInternal: function(effect) { - effect.element.undoClipping().undoPositioned(); - effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); } - }, arguments[1] || {}) - ); -} - -Effect.SlideUp = function(element) { - element = $(element).cleanWhitespace(); - var oldInnerBottom = element.down().getStyle('bottom'); - return new Effect.Scale(element, window.opera ? 0 : 1, - Object.extend({ scaleContent: false, - scaleX: false, - scaleMode: 'box', - scaleFrom: 100, - restoreAfterFinish: true, - beforeStartInternal: function(effect) { - effect.element.makePositioned(); - effect.element.down().makePositioned(); - if(window.opera) effect.element.setStyle({top: ''}); - effect.element.makeClipping().show(); - }, - afterUpdateInternal: function(effect) { - effect.element.down().setStyle({bottom: - (effect.dims[0] - effect.element.clientHeight) + 'px' }); - }, - afterFinishInternal: function(effect) { - effect.element.hide().undoClipping().undoPositioned().setStyle({bottom: oldInnerBottom}); - effect.element.down().undoPositioned(); - } - }, arguments[1] || {}) - ); -} - -// Bug in opera makes the TD containing this element expand for a instance after finish -Effect.Squish = function(element) { - return new Effect.Scale(element, window.opera ? 1 : 0, { - restoreAfterFinish: true, - beforeSetup: function(effect) { - effect.element.makeClipping(); - }, - afterFinishInternal: function(effect) { - effect.element.hide().undoClipping(); - } - }); -} - -Effect.Grow = function(element) { - element = $(element); - var options = Object.extend({ - direction: 'center', - moveTransition: Effect.Transitions.sinoidal, - scaleTransition: Effect.Transitions.sinoidal, - opacityTransition: Effect.Transitions.full - }, arguments[1] || {}); - var oldStyle = { - top: element.style.top, - left: element.style.left, - height: element.style.height, - width: element.style.width, - opacity: element.getInlineOpacity() }; - - var dims = element.getDimensions(); - var initialMoveX, initialMoveY; - var moveX, moveY; - - switch (options.direction) { - case 'top-left': - initialMoveX = initialMoveY = moveX = moveY = 0; - break; - case 'top-right': - initialMoveX = dims.width; - initialMoveY = moveY = 0; - moveX = -dims.width; - break; - case 'bottom-left': - initialMoveX = moveX = 0; - initialMoveY = dims.height; - moveY = -dims.height; - break; - case 'bottom-right': - initialMoveX = dims.width; - initialMoveY = dims.height; - moveX = -dims.width; - moveY = -dims.height; - break; - case 'center': - initialMoveX = dims.width / 2; - initialMoveY = dims.height / 2; - moveX = -dims.width / 2; - moveY = -dims.height / 2; - break; - } - - return new Effect.Move(element, { - x: initialMoveX, - y: initialMoveY, - duration: 0.01, - beforeSetup: function(effect) { - effect.element.hide().makeClipping().makePositioned(); - }, - afterFinishInternal: function(effect) { - new Effect.Parallel( - [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }), - new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }), - new Effect.Scale(effect.element, 100, { - scaleMode: { originalHeight: dims.height, originalWidth: dims.width }, - sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true}) - ], Object.extend({ - beforeSetup: function(effect) { - effect.effects[0].element.setStyle({height: '0px'}).show(); - }, - afterFinishInternal: function(effect) { - effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle); - } - }, options) - ) - } - }); -} - -Effect.Shrink = function(element) { - element = $(element); - var options = Object.extend({ - direction: 'center', - moveTransition: Effect.Transitions.sinoidal, - scaleTransition: Effect.Transitions.sinoidal, - opacityTransition: Effect.Transitions.none - }, arguments[1] || {}); - var oldStyle = { - top: element.style.top, - left: element.style.left, - height: element.style.height, - width: element.style.width, - opacity: element.getInlineOpacity() }; - - var dims = element.getDimensions(); - var moveX, moveY; - - switch (options.direction) { - case 'top-left': - moveX = moveY = 0; - break; - case 'top-right': - moveX = dims.width; - moveY = 0; - break; - case 'bottom-left': - moveX = 0; - moveY = dims.height; - break; - case 'bottom-right': - moveX = dims.width; - moveY = dims.height; - break; - case 'center': - moveX = dims.width / 2; - moveY = dims.height / 2; - break; - } - - return new Effect.Parallel( - [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }), - new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}), - new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }) - ], Object.extend({ - beforeStartInternal: function(effect) { - effect.effects[0].element.makePositioned().makeClipping(); - }, - afterFinishInternal: function(effect) { - effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); } - }, options) - ); -} - -Effect.Pulsate = function(element) { - element = $(element); - var options = arguments[1] || {}; - var oldOpacity = element.getInlineOpacity(); - var transition = options.transition || Effect.Transitions.sinoidal; - var reverser = function(pos){ return transition(1-Effect.Transitions.pulse(pos, options.pulses)) }; - reverser.bind(transition); - return new Effect.Opacity(element, - Object.extend(Object.extend({ duration: 2.0, from: 0, - afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); } - }, options), {transition: reverser})); -} - -Effect.Fold = function(element) { - element = $(element); - var oldStyle = { - top: element.style.top, - left: element.style.left, - width: element.style.width, - height: element.style.height }; - element.makeClipping(); - return new Effect.Scale(element, 5, Object.extend({ - scaleContent: false, - scaleX: false, - afterFinishInternal: function(effect) { - new Effect.Scale(element, 1, { - scaleContent: false, - scaleY: false, - afterFinishInternal: function(effect) { - effect.element.hide().undoClipping().setStyle(oldStyle); - } }); - }}, arguments[1] || {})); -}; - -Effect.Morph = Class.create(); -Object.extend(Object.extend(Effect.Morph.prototype, Effect.Base.prototype), { - initialize: function(element) { - this.element = $(element); - if(!this.element) throw(Effect._elementDoesNotExistError); - var options = Object.extend({ - style: {} - }, arguments[1] || {}); - if (typeof options.style == 'string') { - if(options.style.indexOf(':') == -1) { - var cssText = '', selector = '.' + options.style; - $A(document.styleSheets).reverse().each(function(styleSheet) { - if (styleSheet.cssRules) cssRules = styleSheet.cssRules; - else if (styleSheet.rules) cssRules = styleSheet.rules; - $A(cssRules).reverse().each(function(rule) { - if (selector == rule.selectorText) { - cssText = rule.style.cssText; - throw $break; - } - }); - if (cssText) throw $break; - }); - this.style = cssText.parseStyle(); - options.afterFinishInternal = function(effect){ - effect.element.addClassName(effect.options.style); - effect.transforms.each(function(transform) { - if(transform.style != 'opacity') - effect.element.style[transform.style] = ''; - }); - } - } else this.style = options.style.parseStyle(); - } else this.style = $H(options.style) - this.start(options); - }, - setup: function(){ - function parseColor(color){ - if(!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) color = '#ffffff'; - color = color.parseColor(); - return $R(0,2).map(function(i){ - return parseInt( color.slice(i*2+1,i*2+3), 16 ) - }); - } - this.transforms = this.style.map(function(pair){ - var property = pair[0], value = pair[1], unit = null; - - if(value.parseColor('#zzzzzz') != '#zzzzzz') { - value = value.parseColor(); - unit = 'color'; - } else if(property == 'opacity') { - value = parseFloat(value); - if(Prototype.Browser.IE && (!this.element.currentStyle.hasLayout)) - this.element.setStyle({zoom: 1}); - } else if(Element.CSS_LENGTH.test(value)) { - var components = value.match(/^([\+\-]?[0-9\.]+)(.*)$/); - value = parseFloat(components[1]); - unit = (components.length == 3) ? components[2] : null; - } - - var originalValue = this.element.getStyle(property); - return { - style: property.camelize(), - originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0), - targetValue: unit=='color' ? parseColor(value) : value, - unit: unit - }; - }.bind(this)).reject(function(transform){ - return ( - (transform.originalValue == transform.targetValue) || - ( - transform.unit != 'color' && - (isNaN(transform.originalValue) || isNaN(transform.targetValue)) - ) - ) - }); - }, - update: function(position) { - var style = {}, transform, i = this.transforms.length; - while(i--) - style[(transform = this.transforms[i]).style] = - transform.unit=='color' ? '#'+ - (Math.round(transform.originalValue[0]+ - (transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart() + - (Math.round(transform.originalValue[1]+ - (transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart() + - (Math.round(transform.originalValue[2]+ - (transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart() : - transform.originalValue + Math.round( - ((transform.targetValue - transform.originalValue) * position) * 1000)/1000 + transform.unit; - this.element.setStyle(style, true); - } -}); - -Effect.Transform = Class.create(); -Object.extend(Effect.Transform.prototype, { - initialize: function(tracks){ - this.tracks = []; - this.options = arguments[1] || {}; - this.addTracks(tracks); - }, - addTracks: function(tracks){ - tracks.each(function(track){ - var data = $H(track).values().first(); - this.tracks.push($H({ - ids: $H(track).keys().first(), - effect: Effect.Morph, - options: { style: data } - })); - }.bind(this)); - return this; - }, - play: function(){ - return new Effect.Parallel( - this.tracks.map(function(track){ - var elements = [$(track.ids) || $$(track.ids)].flatten(); - return elements.map(function(e){ return new track.effect(e, Object.extend({ sync:true }, track.options)) }); - }).flatten(), - this.options - ); - } -}); - -Element.CSS_PROPERTIES = $w( - 'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' + - 'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' + - 'borderRightColor borderRightStyle borderRightWidth borderSpacing ' + - 'borderTopColor borderTopStyle borderTopWidth bottom clip color ' + - 'fontSize fontWeight height left letterSpacing lineHeight ' + - 'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+ - 'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' + - 'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' + - 'right textIndent top width wordSpacing zIndex'); - -Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/; - -String.prototype.parseStyle = function(){ - var element = document.createElement('div'); - element.innerHTML = '<div style="' + this + '"></div>'; - var style = element.childNodes[0].style, styleRules = $H(); - - Element.CSS_PROPERTIES.each(function(property){ - if(style[property]) styleRules[property] = style[property]; - }); - if(Prototype.Browser.IE && this.indexOf('opacity') > -1) { - styleRules.opacity = this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]; - } - return styleRules; -}; - -Element.morph = function(element, style) { - new Effect.Morph(element, Object.extend({ style: style }, arguments[2] || {})); - return element; -}; - -['getInlineOpacity','forceRerendering','setContentZoom', - 'collectTextNodes','collectTextNodesIgnoreClass','morph'].each( - function(f) { Element.Methods[f] = Element[f]; } -); - -Element.Methods.visualEffect = function(element, effect, options) { - s = effect.dasherize().camelize(); - effect_class = s.charAt(0).toUpperCase() + s.substring(1); - new Effect[effect_class](element, options); - return $(element); -}; - -Element.addMethods(); \ No newline at end of file diff --git a/lib/web/prototype/extended_debug.js b/lib/web/prototype/extended_debug.js deleted file mode 100644 index 2b935b1b7dda57ff3203eb4673961fff1466304b..0000000000000000000000000000000000000000 --- a/lib/web/prototype/extended_debug.js +++ /dev/null @@ -1,113 +0,0 @@ -var commandHistory; -var historyIndex; - -function showExtendedDebug() { - if (debugWindow != null) { - hideDebug(); - } - - if (debugWindow == null) { - commandHistory = new Array(); - historyIndex = 0; - - debugWindow = new Window('debug_window', {className: 'dialog',width:250, height:100, right:4, minWidth:250, bottom:42, zIndex:1000, opacity:1, showEffect: Element.show, resizable: true, title: "Debug"}) - debugWindow.getContent().innerHTML = "<style>#debug_window .dialog_content {background:#000;}</style> <div font='monaco' id='debug' style='padding:3px;color:#0F0;font-family:monaco'></div>"; - - //create hourglass icon and attach events to it. - var cont = "<div id=\"debug_window_inspect\" style=\"width: 15px; height: 15px; background: transparent url(themes/default/inspect.gif) no-repeat 0 0; position:absolute; top:5px; left:70px; cursor:pointer; z-index:3000;\"></div>"; - - new Insertion.After('debug_window_maximize', cont); - Event.observe('debug_window_inspect', 'click', enterInspectionMode, false); - - //create command text box - cont = "Eval:<input id=\"debug_window_command\" type=\"textbox\" style=\"width:150px; height: 12px; color: black;\">" - debugWindow.setStatusBar(cont); - - Event.observe('debug_window_command', 'mousedown', donothing); - Event.observe('debug_window_command', 'keypress', evalJS, false); - } - debugWindow.show(); -} - -function donothing(evt){ - Field.activate('debug_window_command'); - return false; -} - -function evalJS(evt){ - if(evt.keyCode == Event.KEY_RETURN){ - var js = $F('debug_window_command'); - try{ - var ret = eval(js); - if(ret != null) - debug(ret); - }catch(e){ - debug(e); - } - $('debug_window_command').value = ''; - - Field.activate('debug_window_command'); - commandHistory.push(js); - historyIndex = 0; - } - - if(evt.keyCode == Event.KEY_UP){ - if(commandHistory.length > historyIndex){ - historyIndex++; - var js = commandHistory[commandHistory.length-historyIndex]; - $('debug_window_command').value = js; - Event.stop(evt); - Field.activate('debug_window_command'); - } - } - - if(evt.keyCode == Event.KEY_DOWN){ - if(commandHistory.length >= historyIndex && historyIndex > 1){ - historyIndex--; - var js = commandHistory[commandHistory.length-historyIndex]; - $('debug_window_command').value = js; - Event.stop(evt); - Field.activate('debug_window_command'); - } - } -} - -function enterInspectionMode(evt){ - //stop observing magnifying glass - Event.stopObserving('debug_window_inspect', 'click', enterInspectionMode, false); - //change pointer - document.body.style.cursor='help'; - //start observing mouse clicks - Event.observe(window, 'click', inspectItem, false); -} - -function inspectItem(evt){ - // the element that triggered the event - var element = Event.element(evt); - if(element.id!="debug_window_inspect"){ - clearDebug() - //change pointer - document.body.style.cursor='default'; - debug(element.id); - inspect(element); - //stop observing mouse clicks - Event.stopObserving(window, 'click', inspectItem, false); - //alert('doing something'); - //start observing mag - Event.observe('debug_window_inspect', 'click', enterInspectionMode, false); - } -} - -function clearDebug() { - var win = $('debug'); - if (win == null) - return; - - win.innerHTML=" "; - //clear inspections too - var divs = document.getElementsByClassName('inspector'); - divs.each(function(div){ - Element.remove(div); - }); -} - diff --git a/lib/web/prototype/window_effects.js b/lib/web/prototype/window_effects.js deleted file mode 100644 index 6ad73cc052e80ee383e45226f8135da959bc0a54..0000000000000000000000000000000000000000 --- a/lib/web/prototype/window_effects.js +++ /dev/null @@ -1,157 +0,0 @@ -Effect.ResizeWindow = Class.create(); -Object.extend(Object.extend(Effect.ResizeWindow.prototype, Effect.Base.prototype), { - initialize: function(win, top, left, width, height) { - this.window = win; - this.window.resizing = true; - - var size = win.getSize(); - this.initWidth = parseFloat(size.width); - this.initHeight = parseFloat(size.height); - - var location = win.getLocation(); - this.initTop = parseFloat(location.top); - this.initLeft = parseFloat(location.left); - - this.width = width != null ? parseFloat(width) : this.initWidth; - this.height = height != null ? parseFloat(height) : this.initHeight; - this.top = top != null ? parseFloat(top) : this.initTop; - this.left = left != null ? parseFloat(left) : this.initLeft; - - this.dx = this.left - this.initLeft; - this.dy = this.top - this.initTop; - this.dw = this.width - this.initWidth; - this.dh = this.height - this.initHeight; - - this.r2 = $(this.window.getId() + "_row2"); - this.content = $(this.window.getId() + "_content"); - - this.contentOverflow = this.content.getStyle("overflow") || "auto"; - this.content.setStyle({overflow: "hidden"}); - - // Wired mode - if (this.window.options.wiredDrag) { - this.window.currentDrag = win._createWiredElement(); - this.window.currentDrag.show(); - this.window.element.hide(); - } - - this.start(arguments[5]); - }, - - update: function(position) { - var width = Math.floor(this.initWidth + this.dw * position); - var height = Math.floor(this.initHeight + this.dh * position); - var top = Math.floor(this.initTop + this.dy * position); - var left = Math.floor(this.initLeft + this.dx * position); - - if (window.ie) { - if (Math.floor(height) == 0) - this.r2.hide(); - else if (Math.floor(height) >1) - this.r2.show(); - } - this.r2.setStyle({height: height}); - this.window.setSize(width, height); - this.window.setLocation(top, left); - }, - - finish: function(position) { - // Wired mode - if (this.window.options.wiredDrag) { - this.window._hideWiredElement(); - this.window.element.show(); - } - - this.window.setSize(this.width, this.height); - this.window.setLocation(this.top, this.left); - this.r2.setStyle({height: null}); - - this.content.setStyle({overflow: this.contentOverflow}); - - this.window.resizing = false; - } -}); - -Effect.ModalSlideDown = function(element) { - var windowScroll = WindowUtilities.getWindowScroll(); - var height = element.getStyle("height"); - element.setStyle({top: - (parseFloat(height) - windowScroll.top) + "px"}); - - element.show(); - return new Effect.Move(element, Object.extend({ x: 0, y: parseFloat(height) }, arguments[1] || {})); -}; - - -Effect.ModalSlideUp = function(element) { - var height = element.getStyle("height"); - return new Effect.Move(element, Object.extend({ x: 0, y: -parseFloat(height) }, arguments[1] || {})); -}; - -PopupEffect = Class.create(); -PopupEffect.prototype = { - initialize: function(htmlElement) { - this.html = $(htmlElement); - this.options = Object.extend({className: "popup_effect", duration: 0.4}, arguments[1] || {}); - - }, - show: function(element, options) { - var position = Position.cumulativeOffset(this.html); - var size = this.html.getDimensions(); - var bounds = element.win.getBounds(); - this.window = element.win; - // Create a div - if (!this.div) { - this.div = document.createElement("div"); - this.div.className = this.options.className; - this.div.style.height = size.height + "px"; - this.div.style.width = size.width + "px"; - this.div.style.top = position[1] + "px"; - this.div.style.left = position[0] + "px"; - this.div.style.position = "absolute" - document.body.appendChild(this.div); - } - if (this.options.fromOpacity) - this.div.setStyle({opacity: this.options.fromOpacity}) - this.div.show(); - var style = "top:" + bounds.top + ";left:" +bounds.left + ";width:" + bounds.width +";height:" + bounds.height; - if (this.options.toOpacity) - style += ";opacity:" + this.options.toOpacity; - - new Effect.Morph(this.div ,{style: style, duration: this.options.duration, afterFinish: this._showWindow.bind(this)}); - }, - - hide: function(element, options) { - var position = Position.cumulativeOffset(this.html); - var size = this.html.getDimensions(); - this.window.visible = true; - var bounds = this.window.getBounds(); - this.window.visible = false; - - this.window.element.hide(); - - this.div.style.height = bounds.height; - this.div.style.width = bounds.width; - this.div.style.top = bounds.top; - this.div.style.left = bounds.left; - - if (this.options.toOpacity) - this.div.setStyle({opacity: this.options.toOpacity}) - - this.div.show(); - var style = "top:" + position[1] + "px;left:" + position[0] + "px;width:" + size.width +"px;height:" + size.height + "px"; - - if (this.options.fromOpacity) - style += ";opacity:" + this.options.fromOpacity; - new Effect.Morph(this.div ,{style: style, duration: this.options.duration, afterFinish: this._hideDiv.bind(this)}); - }, - - _showWindow: function() { - this.div.hide(); - this.window.element.show(); - }, - - _hideDiv: function() { - this.div.hide(); - } -} - diff --git a/lib/web/prototype/window_ext.js b/lib/web/prototype/window_ext.js deleted file mode 100644 index 60efac61b4b733b04e090c5479c5d8e6e0692d77..0000000000000000000000000000000000000000 --- a/lib/web/prototype/window_ext.js +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright (c) 2006 Sébastien Gruhier (http://xilinus.com, http://itseb.com) -// YOU MUST INCLUDE window.js BEFORE -// -// Object to store hide/show windows status in a cookie -// Just add at the end of your HTML file this javascript line: WindowStore.init() -WindowStore = { - doSetCookie: false, - cookieName: "__window_store__", - expired: null, - - // Init function with two optional parameters - // - cookieName (default = __window_store__) - // - expiration date (default 3 years from now) - init: function(cookieName, expired) { - WindowStore.cookieName = cookieName || WindowStore.cookieName - - if (! expired) { - var today = new Date(); - today.setYear(today.getYear()+1903); - WindowStore.expired = today; - } - else - WindowStore.expired = expired; - - Windows.windows.each(function(win) { - win.setCookie(win.getId(), WindowStore.expired); - }); - - // Create observer on show/hide events - var myObserver = { - onShow: function(eventName, win) { - WindowStore._saveCookie(); - }, - - onClose: function(eventName, win) { - WindowStore._saveCookie(); - }, - - onHide: function(eventName, win) { - WindowStore._saveCookie(); - } - } - Windows.addObserver(myObserver); - - WindowStore._restoreWindows(); - WindowStore._saveCookie(); - }, - - show: function(win) { - eval("var cookie = " + WindowUtilities.getCookie(WindowStore.cookieName)); - if (cookie != null) { - if (cookie[win.getId()]) - win.show(); - } - else - win.show(); - }, - - // Function to store windows show/hide status in a cookie - _saveCookie: function() { - if (!doSetCookie) - return; - - var cookieValue = "{"; - Windows.windows.each(function(win) { - if (cookieValue != "{") - cookieValue += "," - cookieValue += win.getId() + ": " + win.isVisible(); - }); - cookieValue += "}" - - WindowUtilities.setCookie(cookieValue, [WindowStore.cookieName, WindowStore.expired]); - }, - - // Function to restore windows show/hide status from a cookie if exists - _restoreWindows: function() { - eval("var cookie = " + WindowUtilities.getCookie(WindowStore.cookieName)); - if (cookie != null) { - doSetCookie = false; - Windows.windows.each(function(win) { - if (cookie[win.getId()]) - win.show(); - }); - } - doSetCookie = true; - } -} - -// Object to set a close key an all windows -WindowCloseKey = { - keyCode: Event.KEY_ESC, - - init: function(keyCode) { - if (keyCode) - WindowCloseKey.keyCode = keyCode; - - Event.observe(document, 'keydown', this._closeCurrentWindow.bindAsEventListener(this)); - }, - - _closeCurrentWindow: function(event) { - var e = event || window.event - var characterCode = e.which || e.keyCode; - - // Check if there is a top window (it means it's an URL content) - var win = top.Windows.focusedWindow; - if (characterCode == WindowCloseKey.keyCode && win) { - if (win.cancelCallback) - top.Dialog.cancelCallback(); - else if (win.okCallback) - top.Dialog.okCallback(); - else - top.Windows.close(top.Windows.focusedWindow.getId()); - } - } -} \ No newline at end of file diff --git a/lib/web/scriptaculous/scriptaculous.js b/lib/web/scriptaculous/scriptaculous.js deleted file mode 100644 index 3e5543bd01f62c4c0f60d493f5ed869443567eb5..0000000000000000000000000000000000000000 --- a/lib/web/scriptaculous/scriptaculous.js +++ /dev/null @@ -1,60 +0,0 @@ -// script.aculo.us scriptaculous.js v1.8.2, Tue Nov 18 18:30:58 +0100 2008 - -// Copyright (c) 2005-2008 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) -// -// Permission is hereby granted, free of charge, to any person obtaining -// a copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to -// permit persons to whom the Software is furnished to do so, subject to -// the following conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// For details, see the script.aculo.us web site: http://script.aculo.us/ - -var Scriptaculous = { - Version: '1.8.2', - require: function(libraryName) { - // inserting via DOM fails in Safari 2.0, so brute force approach - document.write('<script type="text/javascript" src="'+libraryName+'"><\/script>'); - }, - REQUIRED_PROTOTYPE: '1.6.0.3', - load: function() { - function convertVersionString(versionString) { - var v = versionString.replace(/_.*|\./g, ''); - v = parseInt(v + '0'.times(4-v.length)); - return versionString.indexOf('_') > -1 ? v-1 : v; - } - - if((typeof Prototype=='undefined') || - (typeof Element == 'undefined') || - (typeof Element.Methods=='undefined') || - (convertVersionString(Prototype.Version) < - convertVersionString(Scriptaculous.REQUIRED_PROTOTYPE))) - throw("script.aculo.us requires the Prototype JavaScript framework >= " + - Scriptaculous.REQUIRED_PROTOTYPE); - - var js = /scriptaculous\.js(\?.*)?$/; - $$('head script[src]').findAll(function(s) { - return s.src.match(js); - }).each(function(s) { - var path = s.src.replace(js, ''), - includes = s.src.match(/\?.*load=([a-z,]*)/); - (includes ? includes[1] : 'builder,effects,dragdrop,controls,slider,sound').split(',').each( - function(include) { Scriptaculous.require(path+include+'.js') }); - }); - } -}; - -Scriptaculous.load(); \ No newline at end of file diff --git a/lib/web/scriptaculous/unittest.js b/lib/web/scriptaculous/unittest.js deleted file mode 100644 index 446097ec51696b715c0717022228f7c7ceb4ba7b..0000000000000000000000000000000000000000 --- a/lib/web/scriptaculous/unittest.js +++ /dev/null @@ -1,568 +0,0 @@ -// script.aculo.us unittest.js v1.8.2, Tue Nov 18 18:30:58 +0100 2008 - -// Copyright (c) 2005-2008 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us) -// (c) 2005-2008 Jon Tirsen (http://www.tirsen.com) -// (c) 2005-2008 Michael Schuerig (http://www.schuerig.de/michael/) -// -// script.aculo.us is freely distributable under the terms of an MIT-style license. -// For details, see the script.aculo.us web site: http://script.aculo.us/ - -// experimental, Firefox-only -Event.simulateMouse = function(element, eventName) { - var options = Object.extend({ - pointerX: 0, - pointerY: 0, - buttons: 0, - ctrlKey: false, - altKey: false, - shiftKey: false, - metaKey: false - }, arguments[2] || {}); - var oEvent = document.createEvent("MouseEvents"); - oEvent.initMouseEvent(eventName, true, true, document.defaultView, - options.buttons, options.pointerX, options.pointerY, options.pointerX, options.pointerY, - options.ctrlKey, options.altKey, options.shiftKey, options.metaKey, 0, $(element)); - - if(this.mark) Element.remove(this.mark); - this.mark = document.createElement('div'); - this.mark.appendChild(document.createTextNode(" ")); - document.body.appendChild(this.mark); - this.mark.style.position = 'absolute'; - this.mark.style.top = options.pointerY + "px"; - this.mark.style.left = options.pointerX + "px"; - this.mark.style.width = "5px"; - this.mark.style.height = "5px;"; - this.mark.style.borderTop = "1px solid red;"; - this.mark.style.borderLeft = "1px solid red;"; - - if(this.step) - alert('['+new Date().getTime().toString()+'] '+eventName+'/'+Test.Unit.inspect(options)); - - $(element).dispatchEvent(oEvent); -}; - -// Note: Due to a fix in Firefox 1.0.5/6 that probably fixed "too much", this doesn't work in 1.0.6 or DP2. -// You need to downgrade to 1.0.4 for now to get this working -// See https://bugzilla.mozilla.org/show_bug.cgi?id=289940 for the fix that fixed too much -Event.simulateKey = function(element, eventName) { - var options = Object.extend({ - ctrlKey: false, - altKey: false, - shiftKey: false, - metaKey: false, - keyCode: 0, - charCode: 0 - }, arguments[2] || {}); - - var oEvent = document.createEvent("KeyEvents"); - oEvent.initKeyEvent(eventName, true, true, window, - options.ctrlKey, options.altKey, options.shiftKey, options.metaKey, - options.keyCode, options.charCode ); - $(element).dispatchEvent(oEvent); -}; - -Event.simulateKeys = function(element, command) { - for(var i=0; i<command.length; i++) { - Event.simulateKey(element,'keypress',{charCode:command.charCodeAt(i)}); - } -}; - -var Test = {}; -Test.Unit = {}; - -// security exception workaround -Test.Unit.inspect = Object.inspect; - -Test.Unit.Logger = Class.create(); -Test.Unit.Logger.prototype = { - initialize: function(log) { - this.log = $(log); - if (this.log) { - this._createLogTable(); - } - }, - start: function(testName) { - if (!this.log) return; - this.testName = testName; - this.lastLogLine = document.createElement('tr'); - this.statusCell = document.createElement('td'); - this.nameCell = document.createElement('td'); - this.nameCell.className = "nameCell"; - this.nameCell.appendChild(document.createTextNode(testName)); - this.messageCell = document.createElement('td'); - this.lastLogLine.appendChild(this.statusCell); - this.lastLogLine.appendChild(this.nameCell); - this.lastLogLine.appendChild(this.messageCell); - this.loglines.appendChild(this.lastLogLine); - }, - finish: function(status, summary) { - if (!this.log) return; - this.lastLogLine.className = status; - this.statusCell.innerHTML = status; - this.messageCell.innerHTML = this._toHTML(summary); - this.addLinksToResults(); - }, - message: function(message) { - if (!this.log) return; - this.messageCell.innerHTML = this._toHTML(message); - }, - summary: function(summary) { - if (!this.log) return; - this.logsummary.innerHTML = this._toHTML(summary); - }, - _createLogTable: function() { - this.log.innerHTML = - '<div id="logsummary"></div>' + - '<table id="logtable">' + - '<thead><tr><th>Status</th><th>Test</th><th>Message</th></tr></thead>' + - '<tbody id="loglines"></tbody>' + - '</table>'; - this.logsummary = $('logsummary'); - this.loglines = $('loglines'); - }, - _toHTML: function(txt) { - return txt.escapeHTML().replace(/\n/g,"<br/>"); - }, - addLinksToResults: function(){ - $$("tr.failed .nameCell").each( function(td){ // todo: limit to children of this.log - td.title = "Run only this test"; - Event.observe(td, 'click', function(){ window.location.search = "?tests=" + td.innerHTML;}); - }); - $$("tr.passed .nameCell").each( function(td){ // todo: limit to children of this.log - td.title = "Run all tests"; - Event.observe(td, 'click', function(){ window.location.search = "";}); - }); - } -}; - -Test.Unit.Runner = Class.create(); -Test.Unit.Runner.prototype = { - initialize: function(testcases) { - this.options = Object.extend({ - testLog: 'testlog' - }, arguments[1] || {}); - this.options.resultsURL = this.parseResultsURLQueryParameter(); - this.options.tests = this.parseTestsQueryParameter(); - if (this.options.testLog) { - this.options.testLog = $(this.options.testLog) || null; - } - if(this.options.tests) { - this.tests = []; - for(var i = 0; i < this.options.tests.length; i++) { - if(/^test/.test(this.options.tests[i])) { - this.tests.push(new Test.Unit.Testcase(this.options.tests[i], testcases[this.options.tests[i]], testcases["setup"], testcases["teardown"])); - } - } - } else { - if (this.options.test) { - this.tests = [new Test.Unit.Testcase(this.options.test, testcases[this.options.test], testcases["setup"], testcases["teardown"])]; - } else { - this.tests = []; - for(var testcase in testcases) { - if(/^test/.test(testcase)) { - this.tests.push( - new Test.Unit.Testcase( - this.options.context ? ' -> ' + this.options.titles[testcase] : testcase, - testcases[testcase], testcases["setup"], testcases["teardown"] - )); - } - } - } - } - this.currentTest = 0; - this.logger = new Test.Unit.Logger(this.options.testLog); - setTimeout(this.runTests.bind(this), 1000); - }, - parseResultsURLQueryParameter: function() { - return window.location.search.parseQuery()["resultsURL"]; - }, - parseTestsQueryParameter: function(){ - if (window.location.search.parseQuery()["tests"]){ - return window.location.search.parseQuery()["tests"].split(','); - }; - }, - // Returns: - // "ERROR" if there was an error, - // "FAILURE" if there was a failure, or - // "SUCCESS" if there was neither - getResult: function() { - var hasFailure = false; - for(var i=0;i<this.tests.length;i++) { - if (this.tests[i].errors > 0) { - return "ERROR"; - } - if (this.tests[i].failures > 0) { - hasFailure = true; - } - } - if (hasFailure) { - return "FAILURE"; - } else { - return "SUCCESS"; - } - }, - postResults: function() { - if (this.options.resultsURL) { - new Ajax.Request(this.options.resultsURL, - { method: 'get', parameters: 'result=' + this.getResult(), asynchronous: false }); - } - }, - runTests: function() { - var test = this.tests[this.currentTest]; - if (!test) { - // finished! - this.postResults(); - this.logger.summary(this.summary()); - return; - } - if(!test.isWaiting) { - this.logger.start(test.name); - } - test.run(); - if(test.isWaiting) { - this.logger.message("Waiting for " + test.timeToWait + "ms"); - setTimeout(this.runTests.bind(this), test.timeToWait || 1000); - } else { - this.logger.finish(test.status(), test.summary()); - this.currentTest++; - // tail recursive, hopefully the browser will skip the stackframe - this.runTests(); - } - }, - summary: function() { - var assertions = 0; - var failures = 0; - var errors = 0; - var messages = []; - for(var i=0;i<this.tests.length;i++) { - assertions += this.tests[i].assertions; - failures += this.tests[i].failures; - errors += this.tests[i].errors; - } - return ( - (this.options.context ? this.options.context + ': ': '') + - this.tests.length + " tests, " + - assertions + " assertions, " + - failures + " failures, " + - errors + " errors"); - } -}; - -Test.Unit.Assertions = Class.create(); -Test.Unit.Assertions.prototype = { - initialize: function() { - this.assertions = 0; - this.failures = 0; - this.errors = 0; - this.messages = []; - }, - summary: function() { - return ( - this.assertions + " assertions, " + - this.failures + " failures, " + - this.errors + " errors" + "\n" + - this.messages.join("\n")); - }, - pass: function() { - this.assertions++; - }, - fail: function(message) { - this.failures++; - this.messages.push("Failure: " + message); - }, - info: function(message) { - this.messages.push("Info: " + message); - }, - error: function(error) { - this.errors++; - this.messages.push(error.name + ": "+ error.message + "(" + Test.Unit.inspect(error) +")"); - }, - status: function() { - if (this.failures > 0) return 'failed'; - if (this.errors > 0) return 'error'; - return 'passed'; - }, - assert: function(expression) { - var message = arguments[1] || 'assert: got "' + Test.Unit.inspect(expression) + '"'; - try { expression ? this.pass() : - this.fail(message); } - catch(e) { this.error(e); } - }, - assertEqual: function(expected, actual) { - var message = arguments[2] || "assertEqual"; - try { (expected == actual) ? this.pass() : - this.fail(message + ': expected "' + Test.Unit.inspect(expected) + - '", actual "' + Test.Unit.inspect(actual) + '"'); } - catch(e) { this.error(e); } - }, - assertInspect: function(expected, actual) { - var message = arguments[2] || "assertInspect"; - try { (expected == actual.inspect()) ? this.pass() : - this.fail(message + ': expected "' + Test.Unit.inspect(expected) + - '", actual "' + Test.Unit.inspect(actual) + '"'); } - catch(e) { this.error(e); } - }, - assertEnumEqual: function(expected, actual) { - var message = arguments[2] || "assertEnumEqual"; - try { $A(expected).length == $A(actual).length && - expected.zip(actual).all(function(pair) { return pair[0] == pair[1] }) ? - this.pass() : this.fail(message + ': expected ' + Test.Unit.inspect(expected) + - ', actual ' + Test.Unit.inspect(actual)); } - catch(e) { this.error(e); } - }, - assertNotEqual: function(expected, actual) { - var message = arguments[2] || "assertNotEqual"; - try { (expected != actual) ? this.pass() : - this.fail(message + ': got "' + Test.Unit.inspect(actual) + '"'); } - catch(e) { this.error(e); } - }, - assertIdentical: function(expected, actual) { - var message = arguments[2] || "assertIdentical"; - try { (expected === actual) ? this.pass() : - this.fail(message + ': expected "' + Test.Unit.inspect(expected) + - '", actual "' + Test.Unit.inspect(actual) + '"'); } - catch(e) { this.error(e); } - }, - assertNotIdentical: function(expected, actual) { - var message = arguments[2] || "assertNotIdentical"; - try { !(expected === actual) ? this.pass() : - this.fail(message + ': expected "' + Test.Unit.inspect(expected) + - '", actual "' + Test.Unit.inspect(actual) + '"'); } - catch(e) { this.error(e); } - }, - assertNull: function(obj) { - var message = arguments[1] || 'assertNull'; - try { (obj==null) ? this.pass() : - this.fail(message + ': got "' + Test.Unit.inspect(obj) + '"'); } - catch(e) { this.error(e); } - }, - assertMatch: function(expected, actual) { - var message = arguments[2] || 'assertMatch'; - var regex = new RegExp(expected); - try { (regex.exec(actual)) ? this.pass() : - this.fail(message + ' : regex: "' + Test.Unit.inspect(expected) + ' did not match: ' + Test.Unit.inspect(actual) + '"'); } - catch(e) { this.error(e); } - }, - assertHidden: function(element) { - var message = arguments[1] || 'assertHidden'; - this.assertEqual("none", element.style.display, message); - }, - assertNotNull: function(object) { - var message = arguments[1] || 'assertNotNull'; - this.assert(object != null, message); - }, - assertType: function(expected, actual) { - var message = arguments[2] || 'assertType'; - try { - (actual.constructor == expected) ? this.pass() : - this.fail(message + ': expected "' + Test.Unit.inspect(expected) + - '", actual "' + (actual.constructor) + '"'); } - catch(e) { this.error(e); } - }, - assertNotOfType: function(expected, actual) { - var message = arguments[2] || 'assertNotOfType'; - try { - (actual.constructor != expected) ? this.pass() : - this.fail(message + ': expected "' + Test.Unit.inspect(expected) + - '", actual "' + (actual.constructor) + '"'); } - catch(e) { this.error(e); } - }, - assertInstanceOf: function(expected, actual) { - var message = arguments[2] || 'assertInstanceOf'; - try { - (actual instanceof expected) ? this.pass() : - this.fail(message + ": object was not an instance of the expected type"); } - catch(e) { this.error(e); } - }, - assertNotInstanceOf: function(expected, actual) { - var message = arguments[2] || 'assertNotInstanceOf'; - try { - !(actual instanceof expected) ? this.pass() : - this.fail(message + ": object was an instance of the not expected type"); } - catch(e) { this.error(e); } - }, - assertRespondsTo: function(method, obj) { - var message = arguments[2] || 'assertRespondsTo'; - try { - (obj[method] && typeof obj[method] == 'function') ? this.pass() : - this.fail(message + ": object doesn't respond to [" + method + "]"); } - catch(e) { this.error(e); } - }, - assertReturnsTrue: function(method, obj) { - var message = arguments[2] || 'assertReturnsTrue'; - try { - var m = obj[method]; - if(!m) m = obj['is'+method.charAt(0).toUpperCase()+method.slice(1)]; - m() ? this.pass() : - this.fail(message + ": method returned false"); } - catch(e) { this.error(e); } - }, - assertReturnsFalse: function(method, obj) { - var message = arguments[2] || 'assertReturnsFalse'; - try { - var m = obj[method]; - if(!m) m = obj['is'+method.charAt(0).toUpperCase()+method.slice(1)]; - !m() ? this.pass() : - this.fail(message + ": method returned true"); } - catch(e) { this.error(e); } - }, - assertRaise: function(exceptionName, method) { - var message = arguments[2] || 'assertRaise'; - try { - method(); - this.fail(message + ": exception expected but none was raised"); } - catch(e) { - ((exceptionName == null) || (e.name==exceptionName)) ? this.pass() : this.error(e); - } - }, - assertElementsMatch: function() { - var expressions = $A(arguments), elements = $A(expressions.shift()); - if (elements.length != expressions.length) { - this.fail('assertElementsMatch: size mismatch: ' + elements.length + ' elements, ' + expressions.length + ' expressions'); - return false; - } - elements.zip(expressions).all(function(pair, index) { - var element = $(pair.first()), expression = pair.last(); - if (element.match(expression)) return true; - this.fail('assertElementsMatch: (in index ' + index + ') expected ' + expression.inspect() + ' but got ' + element.inspect()); - }.bind(this)) && this.pass(); - }, - assertElementMatches: function(element, expression) { - this.assertElementsMatch([element], expression); - }, - benchmark: function(operation, iterations) { - var startAt = new Date(); - (iterations || 1).times(operation); - var timeTaken = ((new Date())-startAt); - this.info((arguments[2] || 'Operation') + ' finished ' + - iterations + ' iterations in ' + (timeTaken/1000)+'s' ); - return timeTaken; - }, - _isVisible: function(element) { - element = $(element); - if(!element.parentNode) return true; - this.assertNotNull(element); - if(element.style && Element.getStyle(element, 'display') == 'none') - return false; - - return this._isVisible(element.parentNode); - }, - assertNotVisible: function(element) { - this.assert(!this._isVisible(element), Test.Unit.inspect(element) + " was not hidden and didn't have a hidden parent either. " + ("" || arguments[1])); - }, - assertVisible: function(element) { - this.assert(this._isVisible(element), Test.Unit.inspect(element) + " was not visible. " + ("" || arguments[1])); - }, - benchmark: function(operation, iterations) { - var startAt = new Date(); - (iterations || 1).times(operation); - var timeTaken = ((new Date())-startAt); - this.info((arguments[2] || 'Operation') + ' finished ' + - iterations + ' iterations in ' + (timeTaken/1000)+'s' ); - return timeTaken; - } -}; - -Test.Unit.Testcase = Class.create(); -Object.extend(Object.extend(Test.Unit.Testcase.prototype, Test.Unit.Assertions.prototype), { - initialize: function(name, test, setup, teardown) { - Test.Unit.Assertions.prototype.initialize.bind(this)(); - this.name = name; - - if(typeof test == 'string') { - test = test.gsub(/(\.should[^\(]+\()/,'#{0}this,'); - test = test.gsub(/(\.should[^\(]+)\(this,\)/,'#{1}(this)'); - this.test = function() { - eval('with(this){'+test+'}'); - } - } else { - this.test = test || function() {}; - } - - this.setup = setup || function() {}; - this.teardown = teardown || function() {}; - this.isWaiting = false; - this.timeToWait = 1000; - }, - wait: function(time, nextPart) { - this.isWaiting = true; - this.test = nextPart; - this.timeToWait = time; - }, - run: function() { - try { - try { - if (!this.isWaiting) this.setup.bind(this)(); - this.isWaiting = false; - this.test.bind(this)(); - } finally { - if(!this.isWaiting) { - this.teardown.bind(this)(); - } - } - } - catch(e) { this.error(e); } - } -}); - -// *EXPERIMENTAL* BDD-style testing to please non-technical folk -// This draws many ideas from RSpec http://rspec.rubyforge.org/ - -Test.setupBDDExtensionMethods = function(){ - var METHODMAP = { - shouldEqual: 'assertEqual', - shouldNotEqual: 'assertNotEqual', - shouldEqualEnum: 'assertEnumEqual', - shouldBeA: 'assertType', - shouldNotBeA: 'assertNotOfType', - shouldBeAn: 'assertType', - shouldNotBeAn: 'assertNotOfType', - shouldBeNull: 'assertNull', - shouldNotBeNull: 'assertNotNull', - - shouldBe: 'assertReturnsTrue', - shouldNotBe: 'assertReturnsFalse', - shouldRespondTo: 'assertRespondsTo' - }; - var makeAssertion = function(assertion, args, object) { - this[assertion].apply(this,(args || []).concat([object])); - }; - - Test.BDDMethods = {}; - $H(METHODMAP).each(function(pair) { - Test.BDDMethods[pair.key] = function() { - var args = $A(arguments); - var scope = args.shift(); - makeAssertion.apply(scope, [pair.value, args, this]); }; - }); - - [Array.prototype, String.prototype, Number.prototype, Boolean.prototype].each( - function(p){ Object.extend(p, Test.BDDMethods) } - ); -}; - -Test.context = function(name, spec, log){ - Test.setupBDDExtensionMethods(); - - var compiledSpec = {}; - var titles = {}; - for(specName in spec) { - switch(specName){ - case "setup": - case "teardown": - compiledSpec[specName] = spec[specName]; - break; - default: - var testName = 'test'+specName.gsub(/\s+/,'-').camelize(); - var body = spec[specName].toString().split('\n').slice(1); - if(/^\{/.test(body[0])) body = body.slice(1); - body.pop(); - body = body.map(function(statement){ - return statement.strip() - }); - compiledSpec[testName] = body.join('\n'); - titles[testName] = specName; - } - } - new Test.Unit.Runner(compiledSpec, { titles: titles, testLog: log || 'testlog', context: name }); -}; \ No newline at end of file diff --git a/lib/web/selectivizr.js b/lib/web/selectivizr.js deleted file mode 100644 index f7bd64295b5b82b889c3729adc3159437f46d19e..0000000000000000000000000000000000000000 --- a/lib/web/selectivizr.js +++ /dev/null @@ -1,545 +0,0 @@ -/* -selectivizr v1.0.2 - (c) Keith Clark, freely distributable under the terms -of the MIT license. - -selectivizr.com -*/ -/* - -Notes about this source ------------------------ - - * The #DEBUG_START and #DEBUG_END comments are used to mark blocks of code - that will be removed prior to building a final release version (using a - pre-compression script) - - -References: ------------ - - * CSS Syntax : http://www.w3.org/TR/2003/WD-css3-syntax-20030813/#style - * Selectors : http://www.w3.org/TR/css3-selectors/#selectors - * IE Compatability : http://msdn.microsoft.com/en-us/library/cc351024(VS.85).aspx - * W3C Selector Tests : http://www.w3.org/Style/CSS/Test/CSS3/Selectors/current/html/tests/ - -*/ - -(function(win) { - - // If browser isn't IE, then stop execution! This handles the script - // being loaded by non IE browsers because the developer didn't use - // conditional comments. - if (/*@cc_on!@*/true) return; - - // =========================== Init Objects ============================ - - var doc = document; - var root = doc.documentElement; - var xhr = getXHRObject(); - var ieVersion = /MSIE (\d+)/.exec(navigator.userAgent)[1]; - - // If were not in standards mode, IE is too old / new or we can't create - // an XMLHttpRequest object then we should get out now. - if (doc.compatMode != 'CSS1Compat' || ieVersion<6 || ieVersion>8 || !xhr) { - return; - } - - - // ========================= Common Objects ============================ - - // Compatiable selector engines in order of CSS3 support. Note: '*' is - // a placholder for the object key name. (basically, crude compression) - var selectorEngines = { - "NW" : "*.Dom.select", - "MooTools" : "$$", - "DOMAssistant" : "*.$", - "Prototype" : "$$", - "YAHOO" : "*.util.Selector.query", - "Sizzle" : "*", - "jQuery" : "*", - "dojo" : "*.query" - }; - - var selectorMethod; - var enabledWatchers = []; // array of :enabled/:disabled elements to poll - var ie6PatchID = 0; // used to solve ie6's multiple class bug - var patchIE6MultipleClasses = true; // if true adds class bloat to ie6 - var namespace = "slvzr"; - - // Stylesheet parsing regexp's - var RE_COMMENT = /(\/\*[^*]*\*+([^\/][^*]*\*+)*\/)\s*/g; - var RE_IMPORT = /@import\s*(?:(?:(?:url\(\s*(['"]?)(.*)\1)\s*\))|(?:(['"])(.*)\3))[^;]*;/g; - var RE_ASSET_URL = /\burl\(\s*(["']?)(?!data:)([^"')]+)\1\s*\)/g; - var RE_PSEUDO_STRUCTURAL = /^:(empty|(first|last|only|nth(-last)?)-(child|of-type))$/; - var RE_PSEUDO_ELEMENTS = /:(:first-(?:line|letter))/g; - var RE_SELECTOR_GROUP = /(^|})\s*([^\{]*?[\[:][^{]+)/g; - var RE_SELECTOR_PARSE = /([ +~>])|(:[a-z-]+(?:\(.*?\)+)?)|(\[.*?\])/g; - var RE_LIBRARY_INCOMPATIBLE_PSEUDOS = /(:not\()?:(enabled|disabled|focus|checked|target|active|visited|first-line|first-letter)\)?/g; - var RE_PATCH_CLASS_NAME_REPLACE = /[^\w-]/g; - - // HTML UI element regexp's - var RE_INPUT_ELEMENTS = /^(INPUT|SELECT|TEXTAREA|BUTTON)$/; - var RE_INPUT_CHECKABLE_TYPES = /^(checkbox|radio)$/; - - // Broken attribute selector implementations (IE7/8 native [^=""], [$=""] and [*=""]) - var BROKEN_ATTR_IMPLEMENTATIONS = ieVersion>6 ? /[\$\^*]=(['"])\1/ : null; - - // Whitespace normalization regexp's - var RE_TIDY_TRAILING_WHITESPACE = /([(\[+~])\s+/g; - var RE_TIDY_LEADING_WHITESPACE = /\s+([)\]+~])/g; - var RE_TIDY_CONSECUTIVE_WHITESPACE = /\s+/g; - var RE_TIDY_TRIM_WHITESPACE = /^\s*((?:[\S\s]*\S)?)\s*$/; - - // String constants - var EMPTY_STRING = ""; - var SPACE_STRING = " "; - var PLACEHOLDER_STRING = "$1"; - - // =========================== Patching ================================ - - // --[ patchStyleSheet() ]---------------------------------------------- - // Scans the passed cssText for selectors that require emulation and - // creates one or more patches for each matched selector. - function patchStyleSheet( cssText ) { - return cssText.replace(RE_PSEUDO_ELEMENTS, PLACEHOLDER_STRING). - replace(RE_SELECTOR_GROUP, function(m, prefix, selectorText) { - var selectorGroups = selectorText.split(","); - for (var c = 0, cs = selectorGroups.length; c < cs; c++) { - var selector = normalizeSelectorWhitespace(selectorGroups[c]) + SPACE_STRING; - var patches = []; - selectorGroups[c] = selector.replace(RE_SELECTOR_PARSE, - function(match, combinator, pseudo, attribute, index) { - if (combinator) { - if (patches.length>0) { - applyPatches( selector.substring(0, index), patches ); - patches = []; - } - return combinator; - } - else { - var patch = (pseudo) ? patchPseudoClass( pseudo ) : patchAttribute( attribute ); - if (patch) { - patches.push(patch); - return "." + patch.className; - } - return match; - } - } - ); - } - return prefix + selectorGroups.join(","); - }); - }; - - // --[ patchAttribute() ]----------------------------------------------- - // returns a patch for an attribute selector. - function patchAttribute( attr ) { - return (!BROKEN_ATTR_IMPLEMENTATIONS || BROKEN_ATTR_IMPLEMENTATIONS.test(attr)) ? - { className: createClassName(attr), applyClass: true } : null; - }; - - // --[ patchPseudoClass() ]--------------------------------------------- - // returns a patch for a pseudo-class - function patchPseudoClass( pseudo ) { - - var applyClass = true; - var className = createClassName(pseudo.slice(1)); - var isNegated = pseudo.substring(0, 5) == ":not("; - var activateEventName; - var deactivateEventName; - - // if negated, remove :not() - if (isNegated) { - pseudo = pseudo.slice(5, -1); - } - - // bracket contents are irrelevant - remove them - var bracketIndex = pseudo.indexOf("(") - if (bracketIndex > -1) { - pseudo = pseudo.substring(0, bracketIndex); - } - - // check we're still dealing with a pseudo-class - if (pseudo.charAt(0) == ":") { - switch (pseudo.slice(1)) { - - case "root": - applyClass = function(e) { - return isNegated ? e != root : e == root; - } - break; - - case "target": - // :target is only supported in IE8 - if (ieVersion == 8) { - applyClass = function(e) { - var handler = function() { - var hash = location.hash; - var hashID = hash.slice(1); - return isNegated ? (hash == EMPTY_STRING || e.id != hashID) : (hash != EMPTY_STRING && e.id == hashID); - }; - addEvent( win, "hashchange", function() { - toggleElementClass(e, className, handler()); - }) - return handler(); - } - break; - } - return false; - - case "checked": - applyClass = function(e) { - if (RE_INPUT_CHECKABLE_TYPES.test(e.type)) { - addEvent( e, "propertychange", function() { - if (event.propertyName == "checked") { - toggleElementClass( e, className, e.checked !== isNegated ); - } - }) - } - return e.checked !== isNegated; - } - break; - - case "disabled": - isNegated = !isNegated; - - case "enabled": - applyClass = function(e) { - if (RE_INPUT_ELEMENTS.test(e.tagName)) { - addEvent( e, "propertychange", function() { - if (event.propertyName == "$disabled") { - toggleElementClass( e, className, e.$disabled === isNegated ); - } - }); - enabledWatchers.push(e); - e.$disabled = e.disabled; - return e.disabled === isNegated; - } - return pseudo == ":enabled" ? isNegated : !isNegated; - } - break; - - case "focus": - activateEventName = "focus"; - deactivateEventName = "blur"; - - // everything else - default: - // If we don't support this pseudo-class don't create - // a patch for it - if (!RE_PSEUDO_STRUCTURAL.test(pseudo)) { - return false; - } - break; - } - } - return { className: className, applyClass: applyClass }; - }; - - // --[ applyPatches() ]------------------------------------------------- - // uses the passed selector text to find DOM nodes and patch them - function applyPatches(selectorText, patches) { - var elms; - - // Although some selector libraries can find :checked :enabled etc. - // we need to find all elements that could have that state because - // it can be changed by the user. - var domSelectorText = selectorText.replace(RE_LIBRARY_INCOMPATIBLE_PSEUDOS, EMPTY_STRING); - - // If the dom selector equates to an empty string or ends with - // whitespace then we need to append a universal selector (*) to it. - if (domSelectorText == EMPTY_STRING || domSelectorText.charAt(domSelectorText.length - 1) == SPACE_STRING) { - domSelectorText += "*"; - } - - // Ensure we catch errors from the selector library - try { - elms = selectorMethod( domSelectorText ); - } catch (ex) { - // #DEBUG_START - log( "Selector '" + selectorText + "' threw exception '" + ex + "'" ); - // #DEBUG_END - } - - - if (elms) { - for (var d = 0, dl = elms.length; d < dl; d++) { - var elm = elms[d]; - var cssClasses = elm.className; - for (var f = 0, fl = patches.length; f < fl; f++) { - var patch = patches[f]; - - if (!hasPatch(elm, patch)) { - if (patch.applyClass && (patch.applyClass === true || patch.applyClass(elm) === true)) { - cssClasses = toggleClass(cssClasses, patch.className, true ); - } - } - } - elm.className = cssClasses; - } - } - }; - - // --[ hasPatch() ]----------------------------------------------------- - // checks for the exsistence of a patch on an element - function hasPatch( elm, patch ) { - return new RegExp("(^|\\s)" + patch.className + "(\\s|$)").test(elm.className); - }; - - - // =========================== Utility ================================= - - function createClassName( className ) { - return namespace + "-" + ((ieVersion == 6 && patchIE6MultipleClasses) ? - ie6PatchID++ - : - className.replace(RE_PATCH_CLASS_NAME_REPLACE, function(a) { return a.charCodeAt(0) })); - }; - - // --[ log() ]---------------------------------------------------------- - // #DEBUG_START - function log( message ) { - if (win.console) { - win.console.log(message); - } - }; - // #DEBUG_END - - // --[ trim() ]--------------------------------------------------------- - // removes leading, trailing whitespace from a string - function trim( text ) { - return text.replace(RE_TIDY_TRIM_WHITESPACE, PLACEHOLDER_STRING); - }; - - // --[ normalizeWhitespace() ]------------------------------------------ - // removes leading, trailing and consecutive whitespace from a string - function normalizeWhitespace( text ) { - return trim(text).replace(RE_TIDY_CONSECUTIVE_WHITESPACE, SPACE_STRING); - }; - - // --[ normalizeSelectorWhitespace() ]---------------------------------- - // tidies whitespace around selector brackets and combinators - function normalizeSelectorWhitespace( selectorText ) { - return normalizeWhitespace(selectorText. - replace(RE_TIDY_TRAILING_WHITESPACE, PLACEHOLDER_STRING). - replace(RE_TIDY_LEADING_WHITESPACE, PLACEHOLDER_STRING) - ); - }; - - // --[ toggleElementClass() ]------------------------------------------- - // toggles a single className on an element - function toggleElementClass( elm, className, on ) { - var oldClassName = elm.className; - var newClassName = toggleClass(oldClassName, className, on); - if (newClassName != oldClassName) { - elm.className = newClassName; - elm.parentNode.className += EMPTY_STRING; - } - }; - - // --[ toggleClass() ]-------------------------------------------------- - // adds / removes a className from a string of classNames. Used to - // manage multiple class changes without forcing a DOM redraw - function toggleClass( classList, className, on ) { - var re = RegExp("(^|\\s)" + className + "(\\s|$)"); - var classExists = re.test(classList); - if (on) { - return classExists ? classList : classList + SPACE_STRING + className; - } else { - return classExists ? trim(classList.replace(re, PLACEHOLDER_STRING)) : classList; - } - }; - - // --[ addEvent() ]----------------------------------------------------- - function addEvent(elm, eventName, eventHandler) { - elm.attachEvent("on" + eventName, eventHandler); - }; - - // --[ getXHRObject() ]------------------------------------------------- - function getXHRObject() - { - if (win.XMLHttpRequest) { - return new XMLHttpRequest; - } - try { - return new ActiveXObject('Microsoft.XMLHTTP'); - } catch(e) { - return null; - } - }; - - // --[ loadStyleSheet() ]----------------------------------------------- - function loadStyleSheet( url ) { - xhr.open("GET", url, false); - xhr.send(); - return (xhr.status==200) ? xhr.responseText : EMPTY_STRING; - }; - - // --[ resolveUrl() ]--------------------------------------------------- - // Converts a URL fragment to a fully qualified URL using the specified - // context URL. Returns null if same-origin policy is broken - function resolveUrl( url, contextUrl ) { - - function getProtocolAndHost( url ) { - return url.substring(0, url.indexOf("/", 8)); - }; - - // absolute path - if (/^https?:\/\//i.test(url)) { - return getProtocolAndHost(contextUrl) == getProtocolAndHost(url) ? url : null; - } - - // root-relative path - if (url.charAt(0)=="/") { - return getProtocolAndHost(contextUrl) + url; - } - - // relative path - var contextUrlPath = contextUrl.split(/[?#]/)[0]; // ignore query string in the contextUrl - if (url.charAt(0) != "?" && contextUrlPath.charAt(contextUrlPath.length - 1) != "/") { - contextUrlPath = contextUrlPath.substring(0, contextUrlPath.lastIndexOf("/") + 1); - } - - return contextUrlPath + url; - }; - - // --[ parseStyleSheet() ]---------------------------------------------- - // Downloads the stylesheet specified by the URL, removes it's comments - // and recursivly replaces @import rules with their contents, ultimately - // returning the full cssText. - function parseStyleSheet( url ) { - if (url) { - return loadStyleSheet(url).replace(RE_COMMENT, EMPTY_STRING). - replace(RE_IMPORT, function( match, quoteChar, importUrl, quoteChar2, importUrl2 ) { - return parseStyleSheet(resolveUrl(importUrl || importUrl2, url)); - }). - replace(RE_ASSET_URL, function( match, quoteChar, assetUrl ) { - quoteChar = quoteChar || EMPTY_STRING; - return " url(" + quoteChar + resolveUrl(assetUrl, url) + quoteChar + ") "; - }); - } - return EMPTY_STRING; - }; - - // --[ init() ]--------------------------------------------------------- - function init() { - // honour the <base> tag - var url, stylesheet; - var baseTags = doc.getElementsByTagName("BASE"); - var baseUrl = (baseTags.length > 0) ? baseTags[0].href : doc.location.href; - - /* Note: This code prevents IE from freezing / crashing when using - @font-face .eot files but it modifies the <head> tag and could - trigger the IE stylesheet limit. It will also cause FOUC issues. - If you choose to use it, make sure you comment out the for loop - directly below this comment. - - var head = doc.getElementsByTagName("head")[0]; - for (var c=doc.styleSheets.length-1; c>=0; c--) { - stylesheet = doc.styleSheets[c] - head.appendChild(doc.createElement("style")) - var patchedStylesheet = doc.styleSheets[doc.styleSheets.length-1]; - - if (stylesheet.href != EMPTY_STRING) { - url = resolveUrl(stylesheet.href, baseUrl) - if (url) { - patchedStylesheet.cssText = patchStyleSheet( parseStyleSheet( url ) ) - stylesheet.disabled = true - setTimeout( function () { - stylesheet.owningElement.parentNode.removeChild(stylesheet.owningElement) - }) - } - } - } - */ - - for (var c = 0; c < doc.styleSheets.length; c++) { - stylesheet = doc.styleSheets[c] - if (stylesheet.href != EMPTY_STRING) { - url = resolveUrl(stylesheet.href, baseUrl); - if (url) { - stylesheet.cssText = patchStyleSheet( parseStyleSheet( url ) ); - } - } - } - - // :enabled & :disabled polling script (since we can't hook - // onpropertychange event when an element is disabled) - if (enabledWatchers.length > 0) { - setInterval( function() { - for (var c = 0, cl = enabledWatchers.length; c < cl; c++) { - var e = enabledWatchers[c]; - if (e.disabled !== e.$disabled) { - if (e.disabled) { - e.disabled = false; - e.$disabled = true; - e.disabled = true; - } - else { - e.$disabled = e.disabled; - } - } - } - },250) - } - }; - - // Bind selectivizr to the ContentLoaded event. - ContentLoaded(win, function() { - // Determine the "best fit" selector engine - for (var engine in selectorEngines) { - var members, member, context = win; - if (win[engine]) { - members = selectorEngines[engine].replace("*", engine).split("."); - while ((member = members.shift()) && (context = context[member])) {} - if (typeof context == "function") { - selectorMethod = context; - init(); - return; - } - } - } - }); - - - /*! - * ContentLoaded.js by Diego Perini, modified for IE<9 only (to save space) - * - * Author: Diego Perini (diego.perini at gmail.com) - * Summary: cross-browser wrapper for DOMContentLoaded - * Updated: 20101020 - * License: MIT - * Version: 1.2 - * - * URL: - * http://javascript.nwbox.com/ContentLoaded/ - * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE - * - */ - - // @w window reference - // @f function reference - function ContentLoaded(win, fn) { - - var done = false, top = true, - init = function(e) { - if (e.type == "readystatechange" && doc.readyState != "complete") return; - (e.type == "load" ? win : doc).detachEvent("on" + e.type, init, false); - if (!done && (done = true)) fn.call(win, e.type || e); - }, - poll = function() { - try { root.doScroll("left"); } catch(e) { setTimeout(poll, 50); return; } - init('poll'); - }; - - if (doc.readyState == "complete") fn.call(win, EMPTY_STRING); - else { - if (doc.createEventObject && root.doScroll) { - try { top = !win.frameElement; } catch(e) { } - if (top) poll(); - } - addEvent(doc,"readystatechange", init); - addEvent(win,"load", init); - } - }; -})(this); diff --git a/package.json b/package.json index 5708ba3d703521f3e977769af40b039179ac10b1..0a1a1d74f341397db4fc8eeda1d3b5afb302e5f4 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,9 @@ "grunt-contrib-watch": "^0.6.1", "grunt-styledocco": "^0.1.4", "load-grunt-tasks": "^1.0.0", - "time-grunt": "^1.0.0" + "time-grunt": "^1.0.0", + "underscore": "^1.7.0", + "node-minify": "^1.0.1" }, "engines": { "node": ">=0.10.0"